created at 2023/04/16
大きく仕事と個人に分けています。
SecHack365に関しては2023/4/1に行われたオープンソースカンファレンスの展示までの出来事について振り返りを行いますが、それ以外は2022年までの出来事を振り返っています。
立ち回りは2021年と変わらず、見積作成、設計(DB設計、API設計、技術選定)、ベースコードの作成、会社単位で導入事例のない技術の検証と実装を行いつつ、他メンバーのサポートをするということを行っていました。
2021年は新規案件が多かったので見積作成、設計、ベースコードの作成に多くの時間を使っていましたが、2022年は新規案件が少なかったので検証、実装、サポートに多くの時間を使うことができました。
よって、サブスクリプション決済やGraphQL SubscriptionとRedis Pub/Subを使用したリアルタイムチャットなどの機能を検証から実装まで行うことができました。
このプロジェクトでは主にGoの全面的な導入、GraphQLによるスキーマ駆動開発の導入、Project-based monorepoの導入を行いました。ライブラリはgqlgenやentを使いました。
個人的に一番導入効果が大きいと感じたのはGraphQLによるスキーマ駆動開発の導入です。
この導入によって、工事現場での無傷事故報告アプリで発生した「レスポンスを過度に共通化したことによる無駄なプロパティの発生」という課題の解決を試みました。
上記課題を解決するためには、画面の表示要素を変えるたびにAPI側のコードを修正しなくても良いという部分は維持しつつ、特定のプロパティのみを返すようにする必要があると考えました。
そのためには、クライアント側でプロパティを指定できるようにすることが必要だと判断しました。
クライアント側でプロパティを指定できるようにする方法として、2つの方法が考えられました。
下記の理由からGraphQLを導入しました。
GraphQLの導入によって、クライアント側でプロパティを指定できるようになり、最初にあげた「レスポンスを過度に共通化したことによる無駄なプロパティの発生」の解決に成功しました。
他にもスキーマ駆動開発も合わせて導入することよって、各クライアントとの意思疎通が容易になりドキュメンテーションにかかる時間も削減できました。
実際にAndroidとWebはスキーマからレスポンスの型とクエリの型を自動生成することができました。WebについてはAPIコールのコードまで自動生成することができました。(iOSは諸事情がありできませんでした)
詳しくはこちらに書いています。
去年から大きく変わらず保守運用を行っていました。
特筆すべき事があまり見つからないのでやっていたことをざっくりまとめると、バグの修正、データの調査、Node.jsのバージョンアップです。
2022年は6月以降SecHack365に注力していたため、SecHack365以外の個人活動は少なめでした。
ブログを2記事書きました。
少なすぎるので、2023年はもう少し増やしたいです。。。
golangci-lint、go-gimeiにコントリビュートすることができました。
golangci-lintについては、コントリビュート後にGitHubのOrganizationに招待されメンバーとなることができました。
golangciのメンバーになった pic.twitter.com/glnKavCt0j
— yagipy(Hiroyuki Yagihashi) (@yagipy_) January 23, 2022
GitHub Starを12.3k以上獲得している(2023年4月時点)ような大規模OSSのメンテナになるのは初めてなので、嬉しかったです。
自作OSSとして、altheaというプログラミング言語を作成しました。
altheaの特徴は所有権付き参照カウントというメモリ管理手法を実装していることです。このメモリ管理手法によって既存言語の課題を解決しています。他には基本的な言語機能に加えてHTTPサーバーを簡単に起動できたりします。実装言語はRustで、LLVMをバックエンドにしています。
詳細については別で記事を書きましたのでそちらをご覧ください。
https://blog.yagipy.me/althea
altheaの他に2つの言語処理系を作成しました。OSSになっているのはkaleidoscopeのみです。もう1つは実装が中途半端なのでプライベートになってます。
2021年は大型OSSにコントリビュートすることができたのですが、その際に「大型OSSへのコントリビュートは一部分の実装には詳しくなれるが、全体像を把握することは難しい」ということに気付きました。
今後大型OSS開発をリードしたり影響力を持って開発を進めることを目指すのであれば全体像を把握できることは重要だと思ったので、どのように全体像を把握するかを考えました。その結果、現在ある大型OSSのコードをひたすら読むことと自作で似た分野のOSSを作成することの2つを考え、2022年は自作で似た分野のOSSを作成することに注力しました。
理由として、大型OSSのコードは膨大すぎるためひたすら読んで全体像を把握することは時間がかかりすぎると思ったのと、似た分野を自作することで最低限動作するミニマムな実装を手を動かしながら学ぶことができると考えたからです。最低限動作するミニマムな実装というものはその分野の基礎となる重要な部分が含まれていると考えています。(大型OSSのコードは高いレベルで様々な機能を備えていますが、基礎的な概念を学ぶには少し複雑すぎると思います)
他にも、自作することによって大型OSSのコードを読む際にも重要な部分をより意識して読むことができるようになると考えました。
その「自作で似た分野のOSSを作成する」という目標は、altheaを作成することによって達成できたので良かったです。
2023年は、重要だと感じた部分は自作しつつ興味のあるOSSにコントリビュートをしていきたいと思います。
主に4つの活動がありました。
Go 1.19 リリースパーティでは、Soft Memory Limitの導入背景や機能について発表しました。スライドはこちらです。
SecHack365 2022 成果発表会では、OSSの所で紹介したaltheaについて発表しました。ポスター&動画はこちらです。
SecHack365は1年間を通して行うハッカソンで、成果発表会だけではなく計6回行われたイベントデイでもスライドやポスターの発表を行いました。
詳細については別で記事を書きましたのでそちらをご覧ください。
https://blog.yagipy.me/sechack365-diary
オープンソースカンファレンスでは、SecHack365修了生同好会としてaltheaを展示しました。
自分が所属するSecHack365の開発駆動コース川合ゼミで雑談をしている時に川合トレーナーからオープンソースカンファレンスの紹介をしていただき、「なんか良さそうだし展示してみるか!」と思い展示を決めました。
個人で展示しても良かったのですが、1年間お世話になった恩返しとして少しでも良いので宣伝をしたいという気持ちとSecHack365のみんなで参加したいという気持ちがあったのでSecHack365名義で展示をしたいとお願いした所、快諾していただきSecHack365として計3ブースを持つことができました。
トレーニーは私を含め6人が集まり、引率として川合トレーナー、法人ブース担当として横山トレーナー、花田トレーナー、事務局の塩山さんに参加していただきました。多くの方の協力のおかげでなんとか展示まで行うことができました。本当にありがとうございました。
Go Conference 2022 Springでは、運営スタッフを務めました。
コンテンツを担当する班に所属し様々なコンテンツの企画、作成、実施を行いました。私は主にビンGoとハンズオンを担当しました。ハンズオンはWomen Who Go Tokyoさんの協力を得て行いました、ありがとうございました。
2023年も頑張るぞ!