2024年の振り返り
昨年からのChatGPI祭りは落ち着いて生成AIで出来ることと出来ないことが見えはじめた。GitHub Copilotは、IDEによるコード補完を遥かに超えるサジェスチョンをしてきて、コードを書かずにコードレビューばかりしている気分にしてくれる。ある意味で、生成AIはプログラマの一番楽しい仕事を奪いつつあるのかもしれない。これからは、プログラマというかソフトウェアエンジニアの仕事は、自然言語でAIに指示を出して生成されたコード(テストコードも含む)をレビューするのが仕事になるのかもしれない。これは、高級言語が開発されて、アセンブリ言語が一部の人がたまに書くものに変わった時以来の変化になる。
知識やスキルに対する考え方も大きく変わる事になる。Google以前は、どれだけの知識を持っているか、どの専門書や学術論文に知りたい事が書いてある事があって、すばやくアクセスできるかが重要だった。Google以後や、どのキーワードで検索すればよいかという、起点になる用語を多く知っていて、Web上の情報を理解するための基礎知識が重要になった。これからは、キーワードでなく、自分や所属会社にとって何が重要なのかの概念を思いついて言語化して、AIに「問いかける」られるか、問いかけた答えを素早く結論付けて実装できるかが、競争優位に立つためのスキルになりそう。
そう考えて今年の結果を振り返ると、現状は実装速度が遅く、爆速で実装できるようにならねばと思う。
抱負とその結果
3つのうち1つしか実現できずだった。仕方がないのだが、会社の業務で役立つかもって思う技術を見つけるとその調査に時間を取られてしまう。
- マイクロマウス競技会に出場する
7月か9月頃にありそうな西日本地区大会に向けて、停滞しているtarfの開発を完成させる
結果: Rustで組込みアプリを作るのは時期尚早だった。ROS2も使いやすいプラグインとかはないし、Pythonのビルドシステムもまともなできじゃなかった。 - 数学の勉強をする
大学の線形代数、複素関数論の基礎 を読み終える
結果: 量子力学の面白そうな本を見つけて横道にそれてしまった。 - コンピュータ関連の技術書を2ヶ月に1冊読む
後述の読みたい本の技術書から6冊読み終える
結果: O'Reilly本のサブスクを安く契約する方法が復活して想定以上に読んでしまった。
主にやっていた事
ロボットを作りたくて手始めにとマイクロマウスに手を出したけど全く進まない。あれこれ手を出して中途半端に終わってし待っている感じがする。
- 1月: 競技プログラミングの勉強(昨年からの続き)
- 2月:
- 3月: アジャイル関連の本の読書
- 4月: 競技プログラミングのためのアルゴリズムの勉強。「AtCoder Beginner Contest」に参加開始。
- 5月: OmniMouseプロジェクトを開始。主にRaspberry Piのセットアップや筐体の制作。
- 6月: OmniMouseプロジェクトで回路(配線)とステッピング・モーターの駆動のプログラミング。
- 7月: 「AtCoder Beginner Contest」で11回参加で暫定レーティング 452で入茶。他の事に時間を使いたくなって一旦停止。OmniMouseの開発。
- 8月: OmniMouseの開発。
- 9月:
- 10月: 『関数型ドメインモデリング』の内容をJavaで実装開始。 ANTLRでSQLのWhere句の式のパース方法調査。パーサコンビネータやパーサジェネレータの調査。
- 11月: tf2pumlというTerraformのコードからPlantUMLのアーキテクチャ図を生成するツール開発開始。Technology Radarを過去に遡りながら購読開始。
- 12月: tf2pumlの開発。Technology Radarのアーカイブの購読。
勉強した(、触ってみた、調査した)プログラミング言語・ライブラリ等
もう少し手早く習得したいのだけど、どうしても時間がかかってしまう。
- TiDB Serverless: トランザクション処理と分析処理に適したDBのSaaS
- Sleuth: Four Keys(DORA Metrics)測定に使えるSaaS
- ROS: Robot開発用フレームワーク(OSと名乗るのは誇大広告)
- Raspberry Pi OS: Raspberry Pi用のOS
- ANTLR: Javaで書かれたパーサジェネレータ
- Unleash: オープンソースのフィーチャーフラグ管理のプラットフォーム
読書
今年読んた本のベストは手を動かしてわかるクリーンアーキテクチャだった。ドメイン駆動設計の本を1つ読んだけど、分からないと言っている人には、今後はこれをお勧めする事にする。
コンピュータ技術書
「ACM会員になるとO'Reilly本が読み放題」になるので、O'Reilly本を読む比率が上がって来ているし、読む量も増えている。英語だとO'Reillyの他にAddison-Wesley Professional, Packt Publishing, Pragmatic Bookshelf, Prentice Hall, Manningなども読めるので、ChatGPTや翻訳SaaSを使って読んでいきたい。
プログラミング
-
競技プログラミングの鉄則 (第6, 7, 8, 9, 10章; 読了)
基本的なアルゴリズムの実装の速度が遅い気がしたので、速度アップの練習のために読み始めた。読了後はAtCoderに参加。 -
Vision Transformer入門 Computer Vision Library (読了)
画像にTransformerをどうやって適用しているのかと知りたくて読み始めたけど、Attentionの実装について一番分かりやすい解説だった。 -
ゼロから作るDeep Learning 4 ―強化学習編: (第6, 7, 8, 9, 10章; 読了)
ChatGPTで使われているRLHF(人間のフィードバックによる強化学習)を知りたかったが、そもそも強化学習の実装方法も分かってなくて読み始めた。このシリーズの解説は本当に知りたいところが良く解説されている。 -
ゼロから作るDeep Learning ❸ ―フレームワーク編: (第1, 2, 3, 4, 5ステージ; 読了)
PyTorchのメソッドの呼び出しの裏で起きている事が分かって良かった。 -
初めてのGraphQL ―Webサービスを作って学ぶ新世代API (読了)
リソース指向のREST APIだけでは限界を感じて読んだ。REST APIとGraphQLは共存するのかも。 -
WebSocket (読了)
非同期処理でポーリング処理をなくしたくて読んだ。 -
ROS2とPythonで作って学ぶAIロボット入門 : (第1, 2, 3章)
ROSを使ってみたくて読んだけど、ROSというフレームワーク自体がドキュメントも少ないし、こなれていない。共通のデータフォーマットが揃い始めた程度のレベルだった。 -
すごいHaskellたのしく学ぼう!: (モナド関連を拾い読み; 読了)
関数型ドメインモデリングでモナドについて少し触れていたのでモナドの復習になった。 -
The Definitive ANTLR 4 Reference: (Chapter 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12; 残りはリファレンスなので、読了とする)
Webアプリでパーサが必要になるようなオプションを実装できないかと考え、それにANTLRを使おうとして勉強するために読んだ。ANTLRが普及しないのは、これを有料にしているせいのような気がする。ANTLRを使うためには、絶対に無料公開して欲しいと思える良い内容だった。 -
ふつうのコンパイラをつくろう: (第1, 2, 3, 4, 5, 6, 7章)
ANTLRに辿り着く前にパーサの復習をしようと思って読み始めた。
ソフトウェア設計
ヘキサゴナルアーキテクチャの実装方法について自信を持って説明できるようになったのが、今年の収穫だった。
-
手を動かしてわかるクリーンアーキテクチャ (読了)
今年読んだ技術書の中のベスト。エリック・エヴァンスのドメイン駆動設計の次に読むべき本。実践ドメイン駆動設計のポート・アンド・アダプターに関する間違った記述にも気付けるので、こちらが先に読むべき。 -
関数型ドメインモデリング (読了)
今年読んだ技術書の2位。実際の業務で使うかは別(これについてこれないプログラマが続出しそう)として、知識として知っておいた方がよい。 -
脳に収まるコードの書き方: (第1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16章; 読了)
悪くはなかったけど、得たものが少なかったかなあ。 -
ルールズ・オブ・プログラミング ―より良いコードを書くための21のルール: (ルール 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21; 読了)
C++の環境だと問題になるかもしれないけど、他の言語の環境だと言語機能やライブラリ、フレームワークで解決済みの問題を議論している感が強い。 - なぜ依存を注入するのか DIの原理・原則とパターン (第1章)
-
ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法: (第1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16章; 読了)
具体例がなく心構えみたいな内容が多く類書との違いも少なかった。ただ、イベント駆動型アーキテクチャや、データメッシュについては理解していなかったので少し参考になった。
プロジェクト管理
2週間のスプリントでレトロスペクティブやレビューをやっているけど、本当のスクラム開発をできているのだろうかた悩んでしまって、スクラム関係の本を読み漁った。レビューでフィードバックを得て進む方向が変化しないんじゃ意味がないなと、自分の中で結論が出た。
- SCRUMMASTER THE BOOK 優れたスクラムマスターになるための極意――メタスキル、学習、心理、リーダーシップ (読了)
- エンジニアリングマネージャーのしごと ―チームが必要とするマネージャーになる方法 (読了)
- 大規模スクラム Large-Scale Scrum(LeSS) (読了)
- アジャイルに困った時に読む本 (読了)
- アジャイルプラクティスガイドブック (読了)
- スクラム実践者が知るべき97のこと: (第I, II, III, IV, V, VI, VII, VIII, XI部)
- Running Lean 第3版 ―リーンキャンバスから始める継続的イノベーションフレームワーク (第1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15章; 読了)
- ユーザーストーリーマッピング {再読; (第1, 2, 3, 4, 5 , 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19章; 読了)}
-
情熱プログラマー ソフトウェア開発者の幸せな生き方 (第1, 2, 3, 4, 5章; 読了)
ネットでお勧めしているのをみたので読んでみた。昔の話って感が強い。
数学・科学系専門書
今年の前半は読めたけど、後半は読めなかった。初学の編集者がわかるまで書き直した 基礎から鍛える量子力学は読み終えたい。
- 初学の編集者がわかるまで書き直した 基礎から鍛える量子力学: (第1, 2, 3, 4, 5章)
- 大学の線形代数 {再読: (第1, 2, 3, 4章)}
- 宇宙する頭脳 物理学者は世界をどう眺めているのか? (第1, 2, 3, 4部; 読了)
- 一般相対性理論を一歩一歩数式で理解する (開始)
その他専門書
THE MODELは当たりだった。ストーリーとしての競争戦略や企業参謀 戦略的思考とは何かとかと同じぐらい、和書の中で参考になるビジネス書だった。
-
THE MODEL: (第1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15章; 読了)
営業のパイプランという考え方が勉強になった。若い頃に読みたかったが、30年前にこの概念があったのだろうか… -
起業の科学 スタートアップサイエンス (読了)
スタートアップ関係の用語集みたいな本。この程度は知っておけという内容について軽く触れている。真髄は原典をあたるべきで、これを読んだだけで理解したつもりになると痛い目にあいそう。 - 現代思想入門 (第1, 2, 3, 4, 5, 6章)
-
ChatGPT翻訳術: (読了)
命題とモーダルという分け方があるのが勉強になった。用語集を作りながら翻訳させると訳語が統一できそう。
小説等の一般書
ドクター伊良部シリーズは面白かった。あと2冊残っているので読むのが楽しみ。
- 鯉姫婚姻譚 (読了)
- ある男 (読了)
- 天使 (読了)
- イン・ザ・プール ドクター伊良部 (読了)
- 空中ブランコ ドクター伊良部 (読了)
- 春期限定いちごタルト事件 (途中まで)
- ようこそヒュナム洞書店へ (読了)
- 創られた心 AIロボットSF傑作選 (途中まで)
目標の結果
色々とリストアップしても、次に読む本を選ぶ頃には気が変わっている。目標というよりも、その時点で気になる本のリストだったと思う。
技術書
-
ゼロから作るDeep Learning 4 ―強化学習編: (5章までは読んでいた
読了: 非常に良い本だった。 -
つくりながら学ぶ!PyTorchによる発展ディープラーニング
読まず: 別の本を読んだ方が良さそうと判断 -
ディープラーニングを支える技術〈2〉 ——ニューラルネットワーク最大の謎
読まず: 来年は読みたい -
競技プログラミングの鉄則 (5章までは読んだ)
読了: 無事読み切れた -
アルゴリズムパズル ―プログラマのための数学パズル入門
読まず: -
プロダクトマネジメント ―ビルドトラップを避け顧客に価値を届ける (14章までは読んでいた)
読まず: アジャイル開発系の本を大量に読む事になった
専門書等
-
僕たちは、宇宙のことぜんぜんわからない――この世で一番おもしろい宇宙入門
読まず: -
これからの「正義」の話をしよう ──いまを生き延びるための哲学
読まず: -
1100日間の葛藤 新型コロナ・パンデミック、専門家たちの記録
読まず:
小説
-
ある男
読了: -
SF的な宇宙で安全に暮らすっていうこと
読まず: 最初を読んで面白そうに思えなかった
Discussion