2023年2月の振り返り
第 2 領域:2 月は 72h(先月 105h)
2 月は日数が少ない分時間も減っています。 che-go 開発や Go 言語で対戦シューティングゲームを作る、初めての Go 言語に時間を使えました。
ラン:2 月のランは 12km(先月 12km)
だいぶ暖かい日も増えてきましたが、まだ寒い日が多いです。太陽が出ていると暑く感じたりで体温調整が難しいですが、3 月はもっと走りやすい日が多そうです。
2 月の週刊ニュース
[[週刊ニュース Lv11(2023年1月28日~2023年2月3日)]] [[週刊ニュース Lv12(2023年2月4日~2023年2月10日)]] [[週刊ニュース Lv13(2023年2月11日~2023年2月17日)]] [[週刊ニュース Lv14(2023年2月18日~2023年2月24日)]]
2 月のハイライト
Go 言語で対戦シューティングゲームを作る
オンラインで同期させる仕組みが気になったのと Go 言語の題材を探していて面白そうな題材を見つけました。
Go 言語(golang)で Websocket(melody)を使って対戦シューティングゲームを作ろう
約 20h ほど触っていましたが、途中で TypeScript や Go 言語の良い書き方のほうが気になり、元々の目的からずれた方に注力してしまっていました…
とはいえ、Go 言語でいえば Gin や Melody、json パッケージを触れたり、JavaScript ではモジュール分割や RequireJS や TypeScript を導入したりと色々思いついたことを試しながら進めることができて楽しかったです。
途中から、他の対応ややりたいことがでてきて参考コードを見ながら自分の読みやすい形でリプレイスするところまでいけませんでしたが、なんとなく WebSocket のサーバーとフロントの流れも分かったのは良かったです。
実際に WebSocket を使うタイミングはあまりないかもしれませんが、設計した上でコーディングしないとサーバーとフロントで処理がぶつ切りになるのでコードを追うのやデバッグが辛そうだなと思いました。大規模になればなるほど設計力が試されそうだなと思いました。
時間がかかりすぎているのもあり、モチベを維持するのも難しく一旦途中でしたが終わろうと思います。
che-go 開発
2 月は祝日があったので、途中に有給を取り、4 連休にしました。 4 連休で ChatGPT 先生と協力しながら、che-go という Go 製のコマンドラインツールを自作しました。
https://github.com/snyt45/che-go 最初はマークダウンのテキストファイルでチートシート(自分用のよく使うメモ)を管理できたら最高だなと思っていましたが、ChatGPT 先生が Yaml で管理する案をだしてくださり、Yaml のほうが簡易的なデータベース的に扱いやすく今回のチートシート管理にぴったりだったので Yaml を使う形で実装を行いました。
本来なら Go はコンポジション的な形に自分でゼロからライブラリなどを選定してモジュールや関数を組み合わせて作り上げることが求められます。
今回は、最初に ChatGPT 先生に実装例をいくつか出して頂きました。ChatGPT 先生のおかげでライブラリを探す手間や Go ではどういう風にコードを書けばいいのかという問題を短時間でクリアすることができました。
コードのディレクトリや main 関数と一つのコマンド、コマンドの中で使う Yaml を扱うための Util 関数を用意するところまでは大変でしたが、一個できた後は基本的には同じ手順でコードを書けました。もちろん、コマンド毎に微妙にロジックが変わる部分は大変でしたが。
私的には一気に何かを作り上げるのは正直苦手でしたが、4 連休の内に自作コマンドラインツールを作り上げるという本当にすごい体験できました。これも ChatGPT 先生の力を借りなかったらもっと時間がかかっていただろうなと思います。