今年の振り返りと来年の抱負

今年やったこと

プログラミング関連

  • Reactを触った
  • Node.jsを触った
  • Google Cloud Functionを触った
  • コーディングを支える技術を読んだ
  • ゼロからのOS自作入門をやってみた
  • Masterminds of Programmingを読んでみた
  • LTを開催してみた
  • FrontEnd Conference Okinawa2022に参加した
  • JSConf JPに参加した

その他

  • ジムに通い始めた
  • 宅建を受験してみた

今年の感想

仕事

今年はシステムの追加機能、保守やリプレイスで結構大変でしたが、新しい技術を覚えながらできたので凄く楽しくさせていただきました。

しかし、入社して2年目、まだまだできていないことが多いと感じることもありました。

特に改善が必要だなと思う箇所が2点あり

  1. 技術選定

  2. 報連相

1つ目は「なぜ、この技術を使うのか」という問いに納得できる答えを返すことの難しさを改めて知った、という経緯からできていないと感じています。

例えば、モノシリックからマイクロサービスのどちらを選定すべきかという問いの答えはプロダクトの成熟段階や人員、経営事情で変わることもあり、SPA、SSR、SSGやクラウド、テストツールetc...のどれが良いかというという問いもその「状況」を加味しないと答えられず、この「状況」を自分がいる環境に当てはめ、選択可能な手法ができた歴史的経緯を理解し、そこから意思決定をしなければならないと思っています。そうしないと納得のいく説明ができないですからね。

このように、技術選定って考えること多くて凄く大変だ。ということが分かったので、技術選定をしてるチームメンバーを尊敬しています(すげぇ)。と同時に、手法ができた歴史的経緯を理解し、多くの変数を扱う作業は楽しく、やりがいがあるなと思いました。

2つ目は報連相ですね。はい。そりゃ大事ですよね。自分は特に相談するのに時間がかかってしまうというか、色々準備してから相談してしまうので、時間のロスになっているなぁと思う点がいくつかあったので、15分考えて分からなかったらすぐに相談してみようと思います。(誰も分からなかったら、、、気合いで頑張ります)

プライベート

技術書を読んだり、気になるライブラリを使ってみたり、記事を読んでみたりしていました。

技術書ではコーディングを支える技術Masterminds of Programmingが面白かったです。言語の種類やなぜ作られたのか、どのような問題を解決するのか、また、言語の作者のインタビューがあって良かった。

カンファレンスに参加しました。人の発表を聞いたり実際に交流するのは楽しく、勉強になりました。今年は県内だけの参加だったので、来年は県外のカンファレンスにも参加したいなと思っています。

LTを開催しました。自分はイベントを開くこと自体が初めてで、右も左も分からない中イベントの開催をサポートしてくださった方々がいて本当に助かりました。ありがとうございます!また、イベントに参加するよりも開催する方が意外と学びがあるなぁと感じました。とにかく、やってよかったです。来年も開催します!

宅建を受験しました。色々あって受験することにしたのですが、2ヶ月少し勉強して30点ぐらいでした。38点ぐらいが合格ラインだったので、あと1ヶ月頑張ればいけるかなぁ、という感じでした。民法宅建業法は日常生活に直結する知識なので勉強してて楽しかったです。来年は受験するか悩み中です、、。

ジムに入会しました。職場の近くなので業務終了後に行ったりしています。去年は自宅で少しやってたのですが、やっぱりジムは器具が整っていて良いですね。ムキムキになりたい。

来年やってみたいこと

プログラミング関連

その他

  • TOIECを受験してみる(英語話せるようになりたいな)
  • 宅建再受験?
  • 県外のカンファレンスに参加する(RubyKaigi?)
  • ベンチプレス100kg上げたい

抱負

去年は目標を立てはような記憶があるのですが、記録が見当たらないので、今年はちゃんと記録して、1年後に「全部できたぜー!やったー!」と喜びたいので、コツコツと頑張っていきたいと思います。

タスク管理にはNotionを使います!Notion最強!ちょっとした記録にはObsidianを使います。

今年関わってくれた皆様、今年もお世話になりました。来年もよろしくお願いします!

The Super Tiny Compilerを写経してみた

はじめに

この記事はCODE BASE OKINAWA Advent Calendar 2022の21日目の記事になります。

1年ほど前に「言語処理系ってどうなっているんだろうな〜」と漠然と疑問に思っていて、Rubyで作る奇妙なプログラミング言語を一通りやったのですが、ほぼ内容を忘れていたので、今回たまたま見つけたThe Super Tiny Compilerをやってみることにしました。

The Super Tiny Compilerとは

Javascriptで書かれたコンパイラのこと。

github.com

Lispっぽい呼び出しをCっぽい呼び出しに変換します。

2 + (4 - 2) → (add 2 (subtract 4 2)) → add(2, subtract(4, 2))

全体の流れ

  1. Token生成(TOKENIZER)
  2. 構文解析(PARSER)
  3. AST変換(TRAVERSER)
  4. 新AST変換(TRANSFORMER)
  5. コード生成(CODE GENERATOR)

解説

解説を書こうと思ったのですが、凄く分かりやすくまとめている記事を発見したので、ぜひ読んでほしいです!めちゃ分かりやすい。

TypeScript with Denoで実装しているしリポジトリもあるから、後で写経してみよかな、、!

感想

ソースコードよりもコメントが多くてびっくり。その分丁寧に解説が書かれていたので一連の処理がイメージしやすかったのがとても良かったです。 また、Javascriptで書かれ、コード量も少ないのでそこまで時間がかからずにでき、とっかかりとして優れた教材だと思います。

個人的はAST→新ASTに変換(TRANSFORMER)の実装が難しかったです。parent._context_という意味が分からなかったり、parentってどういう意味だっけ?と何度も動かして確認していました。多分?理解できていると思います。

別の言語で実装してみるのもいいかもしれないです。ちなみにRubyはありました。

次はGoで作るインタプリタをやってみようかと思います。 Rubyで作るRubyも良さそう。

www.oreilly.co.jp

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門www.lambdanote.com

Web Speech APIを使ってみた

どうもノボです。プログラムを書いたりしてます。
最近Web Speech APIを触ってみる機会があったので、ちょっとしたメモアプリを作ってます。

 

このアプリを参考にしています。(こんなのができたらいいなぁ、、
https://efcl.info/2022/02/10/voicod/

 

作ったものはこちらになります。(デプロイはまだです、、
https://github.com/Hitoshi-Noborikawa/memo-app

 

Web Speech APIとは?

Web Speech API音声認識音声合成をブラウザ上で使用することができます。https://developer.mozilla.org/ja/docs/Web/API/Web_Speech_API
デモはこちらhttps://github.com/mdn/web-speech-api

 

使い方

ローカルで立ち上げてください。dockerを使っています。

Startボタンを押すと音声認識が始まります。何か話すと読み込まれます。

f:id:Nobox:20220221215710p:plain

話してみた

OKボタンを押すと、上のテキストエリアに表示されます。

f:id:Nobox:20220221215536p:plain

上に表示

,を入力すると、が文末に追加され、.を入力すると文末に。が追加され、改行されます。

f:id:Nobox:20220221215956p:plain

,と.を入力してみる

 OKを押すとこんな感じになります。

f:id:Nobox:20220221220224p:plain

改行されました

今は少しの機能しかありませんが、メモアプリとしてメモを保存できたりファイル分けしたりサードパーティーと連携したりできたらいいなと思ってます。(デザインも頑張ります、、!

 

今回はこれで。読んでくれてありがとうございます。