2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コードレビューの未来とエンジニアに求められる創造力 〜アセンブリが消えた日に似てる感覚〜

Posted at

背景

若手エンジニアのコードレビューをしていたときのこと。
前々から思っていたことがより一層現実的になってきたと感じてて、
ちょうど題材があったので書き留めてみた

15年ぐらい前

  • テストなんて面倒なことせずに、同一仕様書から2つの実装を別人が作って、in/out の全入出力✅したらいいんじゃね?

と考えていたけど、マシンパワーの問題もあり断念していた。

それが根底にある・・って言っても伝わらなさそうなので、わかりやすく言い換えると

「レビュー作業って、本当に人間がやるべき仕事なのか?」

実際、CodeRabbitGitHub Copilotのような AI レビューツールが出てきてる今、この問いがリアルになってきた。

AI がコンテキストを理解して、的確なレビューコメントを出してくれる時代、人間は、秘書の用にAIを使って、判断をするだけになりつつある。

言いたいこと

  • コードレビューは自動化される運命にある
    • IT の三大美徳(怠惰・短気・傲慢)から見れば、誰もが自動化したい領域
  • エンジニアに求められるのは「創造力」へシフト
    • 顧客が本当に求めているものを提案する力(いまえもだけど)
    • それを実現する手段を一緒に考え、構築するコンサルタント的スキル
    • Palantir の forward deployed engineer モデルがヒント
  • 未来の主力産業はエンターテインメント・創造的分野になる

AI 時代のコードレビューツール

すでに AI レビューツールはかなり進化してる 😅
Coipilot Code Review はまだまだだなって思ってたけど、Code Rabbit は業務で使いたいって思わせてくれるレベルだった。

CodeRabbit の特徴

CodeRabbitは、こんな感じでヤバい:

  • コンテキスト理解型のレビュー
    • 人間なら見落としたり、面倒で放置しがちなところもちゃんとしてくれる。
  • 学習機能
    • チームの好みにカスタマイズも出来る。人間は忘れる生き物なので、自動化でしすってむ対処するよね。
  • ベースの技術力が一般以上
    • 100% とは言えないものの普通の技術者を超えていて、Agent 化によってさらに高度になっていってる感じがする
  • 人間らしいフィードバック
    • シニアエンジニアみたいなコメントを生成

なにより、正しいことを親しい人に言われても素直に受け入れにくいってのが人間の特性の一つであって、Ai はこの大きな問題を解決するには最適

AI coding tools like Cursor and Claude Code let you write code 10x faster. But code reviews still happen manually. Senior engineers spend days reviewing AI-generated PRs. The queue backs up. Teams get stuck.

CodeRabbit solves this AI coding bottleneck with context-aware reviews that actually understand your codebase.

GitHub Copilot Review の特徴

GitHub Copilotも負けてない:

  • エディタ統合: VS Code、JetBrains、Neovim など、どこでも使える
  • コード生成とレビューの一体化: 書きながらリアルタイムでレビュー
  • エージェントモード: 複雑なタスクも自律的に実行
  • 多様な LLM モデル: GPT-4、Claude、Gemini など、用途に応じて選べる

まぁ、そうはいっても、レビュー自体は微妙だよね。設定もほとんどないし、Push すると「絶対何かレビューするマン」はちょっとうざい・・ :swear:

AI that works where you do, whether in your editor, on the command line, or across GitHub.

これらのツールは今でも十分実用的で、今後さらに進化していくのは確実。
この速さに対応できてない人、企業が淘汰されていくんだろうな、と戦々恐々ですよ :cry:

歴史は繰り返す:機械語 → 高級言語の教訓

かつて、機械語やアセンブリでプログラミングしてた時代があった。
C 言語みたいな高級言語が出てきたとき、当時の先輩方はこう言ってた

「高級言語はメモリ効率や速度の問題があるから、機械語・アセンブリはなくならない」

実際どうなったか?

技術は停滞することなく進化し続けて、その分野の仕事はほぼなくなった。
「ほぼ」って言ってるのは、今でもコンパイラー開発者や、CPU 設計でパイプライン最適化をしてくれてる技術者はいるわけで。
でも一般的には、ロストテクノロジー化してる。

コーディングとテストも同じ道を辿る

じゃあ、今コーディング・テストをしている僕らの作業はどうなるか?

きっとあと何年かすると、ほとんどが趣味の世界のみになってしまうと思ってる 😇

  • AI がコードを書き
  • AI がテストし
  • AI がレビューする

人間は最初、「AI の結果を判断する立場」として残るだろう。
でも、やがてその判断も自動化されて、自己解決するようになる。

だって、IT の三大美徳からすれば、誰もが自動化したい箇所であるから。

IT の三大美徳が示す未来

IT の三大美徳とは、Perl 言語の作者Larry Wallが提唱した、優れたプログラマーが持つべき 3 つの資質:

  • 怠惰(Laziness): 同じことを繰り返したくない。だから再利用可能なコードを書く
  • 短気(Impatience): 待ちたくない、すぐに結果が欲しい。だから効率化を追求する
  • 傲慢(Hubris): より良いものを作りたい。だから完璧を目指す

元々は半分ジョークだけど、深い真理をついている。

この 3 つの美徳から見れば、レビュー・コーディング・テストの自動化は必然だよね。

  • 怠惰
    • 毎回同じようなレビューコメント書きたくない
  • 短気
    • レビュー待ちでデプロイが遅れるの嫌
  • 傲慢
    • もっと本質的な価値創造に集中したい

そもそも、自分の場合かもしれないけれど、コードを書いてて楽しかったのは、
書いてることではなくて、想像していたものが、その通りに動いた時だったわけ :laughing:

じゃあ、エンジニアに何が求められる?

創造力だよね

デザイン思考に代表されるような、

  • 顧客が何を求めているか?それを実現する手段を支援し、一緒に構築するコンサルタント的なこと

だと思っている。

上流工程といわれる部分は、残ると思ってる。誰もがAIを使えるようになったとしても、一人で全分野の知識をカバーできるわけではないので、専門家と二人三脚でやりたいことを実現する世界は残るだろう、と

Palantir の forward deployed engineer モデル

いい例が Palantir のビジネスモデル。

Forward Deployed Engineer (FDE) とは、Palantir Technologies が実践する働き方。

エンジニアが顧客の現場に入り込み、データ分析やソフトウェアを使って実際のビジネス課題を解決する。単なる開発者ではなく、コンサルタントとエンジニアの融合

Aided by 120 "forward-deployed engineers" of Palantir in 2009, Peter Cavicchia III of JPMorgan used Metropolis to monitor employee communications

これこそが、直近で求められているものだと思う。

技術そのものよりも、技術を使って顧客の課題をどう解決するか?
コードを書く力じゃなくて、何を作るべきかを見極める力

それを素早く実現する。ウォーターフォール時代のような時間をかけて、ではなく長くても数か月程度で

未来の主力産業はエンターテインメント

バーニングマン、知ってます?結構前に話題になったことがあるので覚えてる人もいるんじゃないかな?と

「未来の主力産業はエンターテインメントや創造的分野になる」

つまり、単純作業や定型業務は AI に任せて、人間は創造的な仕事に集中する未来。
これってまさに、創造力を活かした新しいモノづくりこそが今後必要なものだってこと

マトリクスの世界線かもしれないけれど :sweat:

創造力を鍛えるために何をするか?

じゃあ具体的に何をすればいいのか?

1. 脳内 Index を作る

アンテナを広げて、概要を知っておき、専門用語で AI と話せるようにしておく

AI と効果的に対話するには、こっちがある程度の知識を持ってないといけない。
「このドメインではこういう用語を使う」「この技術領域ではこのアプローチが一般的」みたいな脳内 Indexを作っておく。

具体的には:

  • 技術トレンドを浅く広くキャッチアップ
  • 業界用語や専門用語を蓄積
  • 「何がわからないか」を言語化できるようにする

深い専門知識は AI に任せて、人間は横断的な知識のハブになる感じ。

当面はここは強いと思ってる

2. 創造力を鍛える

リベラルアーツや他分野に手を広げ、発想を広げる

エンジニアリングだけじゃなく:

  • デザイン思考を学ぶ
  • 心理学や行動経済学を知る
  • アートやエンターテインメントに触れる
  • 異業種の人と交流する

異なる分野の知識が組み合わさったとき、イノベーションが生まれる 🥰

  • 創造力とは、知識の再構築である

から

ちなみに、大学で、なぜ人文などを学ぶのか?というのは、リベラルアーツこそが、創造力を鍛えるものであるって考えから来てると思ってる。
これを生徒に教えてないから、無意味な単位取得のためだけの講義になってると思ってる。

これは教授陣の問題だとはおもうけど・・。義務教育の現場も一緒か :thinking:

3. 顧客理解力を磨く

技術は手段でしかない。大事なのは:

  • 顧客の本当の課題は何か?
  • その課題を解決したとき、どんな価値が生まれるか?
  • どうすれば持続可能なソリューションになるか?

これらを見極める力。
これも、デザイン思考で発想力を鍛えていった先にあるものかな

4. ストーリーテリング能力

技術的に正しいだけじゃダメで、なぜそれが必要かを説明できる力。
経営層や非エンジニアに対して、技術の価値を伝えられること。

やっぱり、サイモンシネックのこの動画はみんなに見てほしい

AI の可能性を広げるのも、狭めるのも人間

ここで大事なポイント。

AI の創造力を狭めているのは、それを使っている人間のせいであり、AI さんの可能性を広められるのも、それを使っている我々人間

AI は強力なツールだけど、「何を作るべきか」「どう使うべきか」を決めるのは人間。
だからこそ、エンジニアには創造的な問いを立てる力が必要になる。

あとがき

なんてことを、若手エンジニアのコードレビューをしながら考えていた。

自分たちの仕事が AI に置き換わる日は、そう遠くない。
でも、それは悲観すべきことじゃなくて、次のステージへの移行だと思う。

単純作業から解放されて、より創造的な仕事に集中できる未来。
そこで価値を発揮できるエンジニアになるために、今から準備していこう 😁

だって、我々が非ITの人達に今まで言っていたセリフだよね。

  • 自動化・効率化して、創造的な仕事をしましょう! :heart:

って

技術を深めるのも大事だけど、それ以上に、人として、創造者として成長すること
それが、AI 時代のエンジニアに求められるものだと思ってる。

みんなはどう思う?👍

参考リンク

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?