SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2024 セッションレポート

生成AI時代のプログラミングとの向き合い方とは? AIを活用した実装力を養うヒント

【15-A-7】AI時代を乗り切るための実装力をつけよう


  • X ポスト
  • このエントリーをはてなブックマークに追加

 生成AIの登場によって、プログラミングの知識がなくても誰でも簡単にコードを生成することが可能になった。しかし、AIによって生成されたコードの修正やカスタマイズにはプログラミングの知識が不可欠であり、AI時代であってもエンジニアにはプログラミングスキル、とりわけ実装力が重要になる。本セッションでは、『プロになるJava』の著者でLINEヤフーに所属するきしだ なおき氏が、Javaの手続きにおける状態遷移にフォーカスを当て、プログラミングのどこが難しいのか、どのように考えるべきかを整理するとともに、AI時代に対応した実装力を養うヒントについて語った。

  • X ポスト
  • このエントリーをはてなブックマークに追加

AI時代のプログラミングスキルとは

 AI時代に入り、ChatGPTなどのAIに依頼すればかなりの精度のコードが簡単に生成できるようになった。きしだ氏は「この流れは今後ますます加速していくと予想されるが、AI生成のコードが開発現場で問題を起こす事態もすでに発生している」と語る。その一例となるのが、生成されたコードがプロダクト内で正しく動作せず、しかも生成した人にプログラミングの知識がないため、コードの修正ができないという問題だ。

 「まともに動作するプログラムを書くには、どのようなコードを書いて欲しいのか指示を正確に与える必要がある。これはやはりプログラマーの役割だ。AI時代には特定のライブラリやフレームワークを使えるという価値は下がっていくが、プログラム、特に処理をちゃんと書ける能力は依然として重要なままだろう」。

LINEヤフー きしだ なおき氏
LINEヤフー株式会社 きしだ なおき氏

 このような背景を共有したうえできしだ氏は、プログラミング能力の土台となる概念として「状態遷移」を挙げる。その例として、以前話題になった「プログラミング初学者には『x=x+1』が分からない」ことを挙げた。

 「x=x+1」は、プログラミング経験者であればイディオムとして理解している人が多い。しかし「x=(x=x+1)+x」となると、混乱する人もいるだろう。

 「ここでの『x=x+1』は方程式ではなく、プログラムだ。『=』は変数に値を割り当てるとともに、割り当てた値を返す演算子として用いられている。つまりこのプログラムでは、『xという変数の値に1を加え、xに割り当て、割り当てた値を式として返す』という3段階の操作が表現されているわけだ。

 『x=(x=x+1)+x』では、そういった段階を正しく追った解釈が必要になる。

 このような解釈は、プログラミングを学んだ人であっても難しい。構文やイディオムの知識があるだけでは理解不能なものとなる。プログラムには、通常の式や文章とは違う概念が含まれていると知るところから始めなければならない」。

 プログラム特有の概念について、きしだ氏はさらに解説を続ける。「『x=x+1』は簡単なプログラムだが、プログラムの処理の本質である『演算』『逐次実行』『状態遷移』が含まれている。『x=』は、xという変数が状態遷移すること。『x+1』は演算で、これらが順番に実行されるのが『逐次実行』だ。ここを理解していなければ、表現方法を変えたところで解決にはならない。逆にここさえ押さえていれば、文法が変わっても対応できる」。

 [x=x+1] にはプログラミングの基礎がすべて詰まっている
[x=x+1] にはプログラミングの基礎がすべて詰まっている

 「演算」「逐次実行」「状態遷移」のうち、本セッションの主役となるのは「逐次実行」だ。「演算」「状態遷移」には算数や数学の知識が使えるが、「逐次実行」だけはプログラミングに特有の考え方であるためだ。そのうえ、基礎の基礎であるがゆえに入門書で明示されることも少なく、初心者がつまずく原因になってしまう。

 「変数やループが分からない」という人がいるのも、「結局のところは逐次処理を理解していないのが原因」ときしだ氏は指摘する。イディオム的に丸暗記するのではなく、概念として理解しているかどうかが大切というわけだ。

次のページ
ループとStreamの例から、プログラミングの核心を理解する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Developers Summit 2024 セッションレポート連載記事一覧

もっと読む

この記事の著者

丸毛 透(マルモ トオル)

インタビュー(人物)、ポートレート、商品撮影、料理写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

水無瀬 あずさ(ミナセ アズサ)

 現役エンジニア兼フリーランスライター。PHPで社内開発を行う傍ら、オウンドメディアコンテンツを執筆しています。得意ジャンルはIT・転職・教育。個人ゲーム開発に興味があり、最近になってUnity(C#)の勉強を始めました。おでんのコンニャクが主役のゲームを作るのが目標です。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19783 2024/10/01 17:14

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング