michimani.net

2023 年を雑に振り返る

2023-12-31

毎年雑にでも振り返っているので 2023 年の振り返りも書いておきます。

去年の振り返りの最後に書いていたこと

雑に振り返り、と言いつつ GitHub のリポジトリをベースに振り返っただけになってしまいました。
去年よりは学びはあった気はしつつも、結果 (収入) には結びついていないので、 2023 年は結果 (収入) にも拘っていけたらいいなと思います。

具体的な目標も書いておかないと振り返るときに不便なのでいくつか。

2023 年もがんばりましょう 👋

結果、 AWS 認定の Specialty 系はひとつも受験できず、数検準一級も受けられませんでした。

ではこの一年なにをやっていたのか。仕事とプライベート両面で振り返っていきます。

仕事

2 月から社内で新しく新設された部署に異動になりました。異動により主な技術スタックも AWS/Go/Vue から AWS/Azure/Python/React に変更になり、加えてこれまで以上にインフラ/フロントエンド/バックエンドを包括して担当することになりました。

また、開発に関する技術領域としては生成 AI 、特に自然言語処理・LLM に関する領域にチャレンジすることになりました。 2023 年は各所で OpenAI や Azure OpenAI Service の Web API を利用したプロダクト開発が活発になり、自分の仕事としてもそのあたりをやることになったわけです。

Web API を利用したプロダクト開発という意味ではこれまでの開発と大きく変わりはないですが、ベクトル検索/検索精度の向上/生成 AI 利用における法的な課題など、新しい課題に直面することになりました。また、具体的な技術スタックとしても Azure は完全に未経験、 Lambda 関数の実装以外での Python のプロダクション利用、 React を使ったフロントエンドの開発など、これまでの開発とは違う技術領域にもチャレンジすることになりました。

そんな状態の中で自分に要求されていたのは 「生成 AI 、特に自然言語処理を用いたプロダクトを開発・リリースすること」 でシンプルでした。ただ、上述した通りそれを成し遂げるための構成要素についてなにもわからない状態で、正直一年間ずっとしんどかったです。

しんどいながらも悪戦苦闘しつつ大きめのインパクトがあるリリースをいくつか出すことができたので、各未経験領域へのアプローチについては下記に記しておきます。

自然言語処理・LLM

これまで機械学習に関しては、入門の入門程度の知識しかなかったので、自然言語処理に関する知識もほぼゼロに近かったです。

とりあえずは OpenAI の Completion, Chat Completion, Embedding あたりの Web API を使って、簡単な対話ができるようなプロダクトを作り、それをベースにして RAG を用いて特定のカテゴリに関する質問に対して回答を返すようなプロダクトを作りました。

最初に参考にした記事はこちらです。

GPT-3を使って根拠付きで正確に質問応答してくれるシステムを作ってみる - Taste of Tech Topics

自然言語処理を用いたプロダクト開発については、とにかく試行錯誤の連続でした。

そもそもの自然言語処理に関する知識については、主に下記の書籍を読みました。 (ぜんぶ読み終わったとは言っていない)

幸いにも数式にあまり抵抗がないので、特に「IT Text 自然言語処理の基礎」については内容は難しかったですが自然言語処理の基礎から昨今の LLM で利用されている Transformer の仕組みまでを 完全に理解 することができました。

Azure

Azure については完全に未経験でしたが、これまで AWS で Web アプリケーション開発をしてきたこともあり、なんとかなるだろうという気持ちで取り組みました。

結果、ロールやネットワーク、リージョンについては特に AWS と概念が違う印象を受けましたが、コンテナイメージで作成したアプリを動かす、といった大枠については AWS と大きな違いはないと感じました。また、異動前の部署では Terraform で AWS リソースを管理していたこともあり、 Azure のリソース管理にも Terraform の知識を流用できたのは大きかったです。 Terraform のメリットとして「マルチクラウド対応」が挙げれれることが多いですが、正直そのメリットを感じたことがありませんでした。それが、今回プロダクトは違うとはいえ別クラウドを利用することになった際に知識の流用ができたことで、そのメリットを初めて感じることができました。

Azure の各サービスに関する細かい不明点については、都度 Azure のサポートで質問することで解決しました。 AWS のサポートもそうですが、こちらから適切な情報を提供すること 1 で丁寧かつ迅速に対応いただける点は、本当に感謝しかありません。

Python

これまで Lambda 関数の実装以外で Python を利用することがほぼなく、実際の Web アプリケーションのバックエンドを Python で実装するのは初でした。

異動前は Go でバックエンドの実装をしていた自分としては、型がゆるふわで開発環境の整備(特に linter や formatter の設定)が煩雑な点が非常に辛かったです。

そのあたりの辛さの解消については「ロバスト Python」が大変参考になりました。

ロバストPython ―クリーンで保守しやすいコードを書く | Patrick Viafore, 鈴木 駿, 長尾 高弘 |本 | 通販 | Amazon

Python で型安全(安全とは言っていない)なコードを書くための tips や、テストコードの書き方、スケールしやすいコードの書き方など、とても参考になりました。

生成 AI と法律

生成 AI と法律について、ぱっと思い浮かぶのは著作権まわりだと思います。

生成 AI に関しては法的観点の課題が未知数で、実際に生成 AI を利用してプロダクト開発を行う上で注意すべき点を理解する必要がありました。 ただ、法律は白黒はっきりつけるものではなくグレーゾーンを含むものなので、明確な答えがあるわけではありません。そのうえで、生成 AI 利用における注意点については下記の書籍が大変参考になりました。

生成AIの法的リスクと対策 | 福岡 真之介, 松下 外 | 実践経営・リーダーシップ | Kindleストア | Amazon

生成 AI の作成段階(モデルの作成段階)から利用段階、また実際にプロダクトに組み込む段階における注意点について書かれています。

著作権関連以外だと、弁護士法に関わる部分についてです。これに関してはグレーな部分がだいぶ多かったのですが、 2023 年 8 月に法務省から「AI による法的サービスの提供に関するガイドライン」が公開されたことで、グレーゾーンの大部分が解消されたように感じます。

AI等を用いた契約書等関連業務支援サービスの提供と弁護士法第72条との関係について - 令和5年8月 法務省大臣官房司法法制部

法的な解釈は今後も変更や追加があると思うので、引き続きのキャッチアップが必要だと感じています。

プライベート

例年、プライベートでは仕事に関連する技術スタックを中心にキャッチアップの時間に充てていました。今年も例に漏れず、自然言語処理・LLM に関するキャッチアップを中心に行いました。

ただ、アウトプットについては全くと言っていいほどできず、このブログの記事数も去年の半分未満です。(後半は AtCoder の解法記事をいくつか書きましたが) その影響もあり、会社のアドベントカレンダーで記事を書くことになった際にはブログ筋が完全に衰えていて記事を書くのにかなり苦労しました。仕事でもドキュメントを書く機会が増えたので、文章を書くことについてはあらためて継続できるようにしていきたいです。

仕事関連のキャッチアップ以外だと、重い腰を上げて競技プログラミングを始めました。
仕事で Python を書くようになり、もうちょっと低レイヤの言語を書きたくなったので C++ でも始めるかーと思っていました。そんな矢先に会社の Slack で競プロチャンネルが誕生し、じゃあ C++ で AtCoder やってみようか となりました。 始めたのは 10 月で、年末までに開催された ABC/ARC のうち 13 回に Rated 参加しました。
その結果がこちら。

michimani - AtCoder

michimani - AtCoder

まだ 14 回に満たないので暫定の Rating ではありますが、灰色です。 来年はできるだけ早く茶色になって、年末までには緑色になれたらいいなと思っています。

ひとまずは過去問の A/B/C を解くことを目標にやってきているので、来年も引き続き過去問の数をこなして茶色を目指します。

まとめと来年の目標

2023 年はとにかく仕事がしんどかったです。
例えるなら、転職先で即市場にインパクトを与えるような結果を求められているようなストレスとプレッシャーをずっと感じていたような状態でした。まわりのサポートもあって結果的には求められているものを出すことはできましたが、その中でも葛藤は多々ありました。

去年の振り返りで

去年よりは学びはあった気はしつつも、結果 (収入) には結びついていないので、 2023 年は結果 (収入) にも拘っていけたらいいなと思います。

と書いていましたが、降ってきたチャンスに対して結果に拘って動けたのは良かったです。一方で、新しい技術領域に触れることになったものの全体の学びとしては去年より少なかった気がしています。

これに関しては、新しい部署での自分のもう一つの課題であるチームビルディングについても関係していると思います。
新しい部署ではプロダクト開発に加えて R&D 的な活動を行っているメンバーもいるので、自分を各メンバーのスキルアップのために知見をしっかり共有できるような組織にしていく必要があると感じています。

プライベートの技術以外の部分では、去年から続けているランニングと筋トレの継続が目標です。

あとは、心身ともに安定した状態をキープし続けることです。

書くのに疲れたのでこのへんでおしまいです。また来年 👋


  1. この記事は全人類が読むべきガイドラインだと思います 技術的なお問い合わせに関するガイドライン | AWS サポート  ↩︎


comments powered by Disqus