AI時代にこそ学びたいプログラミング
プログラミングとは
以下、AIに説明してもらいました。
コンピュータの処理能力は当然、非常に高いです。
人間は到底及ばないような大量の処理を、正確かつ高速に実行してくれます。
また、一度書いたプログラムは繰り返し使い続けることが出来ます。
ただ、実行して欲しいことをそのまま指示することは出来ません。
そのためにプログラムという人間と機械とが双方で解釈できる言語で指示を書き、それを機械語に翻訳することで実行を可能にしています。
AIの発達により、この境界は曖昧になり、とくに様々なタスクに特化したAIが、自然言語での入力にしたがって必要な処理を行ってくれるようになったため、一見するとプログラミングの必要性は薄れているようにも思えます。
が、本当にそうでしょうか?
やりたいことを実現するにはプログラミングが必要
実際はAIを適用できる範囲にはまだまだ限りがあります。
理由は色々ありますが、そのひとつはやりたいことのニーズが人によって無限に存在するからです。
特に、自分の状況に特化し最適化された動作を望むなら、自分でプログラミングしてカスタマイズ出来ることのメリットは非常に大きいです。
やりたいことを組み立てて実現する部分には、まだ当面はプログラミングの知識や考え方が求められるでしょう。
ただ、ご存じの通り、この分野の発展は著しいので、自分が欲しかったものがいつの間にか開発されて提供されている、という可能性があることは否めません。
(蛇足ですが)当然、AI自身もプログラミングされたものです。
突き詰めると、AI自体の発展のためにもプログラミングは必要です。
(ただ、ここは一般の人が介入するレベルではないので、専門家にお任せして、我々は出来上がったAIをありがたく使わせてもらいましょう。)
プログラミングを学ぶことで思考法が変わる
プログラマが良く言う言葉に「頑張らないために頑張る」というのがあります。
例えば、100件のデータを修正するというタスクがあったとします。
愚直に手動で直すと一件当たり1分かかるとした場合、100分間作業に没頭する必要があります。
それがもし、1000件になったら?
他に選択肢がなければ、それでも頑張る、と割り切るしかないでしょう。
でも、そこで頑張りたくないので、プログラマは自動でやってくれるソリューションをプログラミングします。
コードを10分で書いたとしたら、あとは100件でも1000件でも、実行して待つだけで処理してくれます。
浮いた時間は他の事に充てます。
「頑張らないために頑張る」は「より効率的な方法を実現するために頑張る」ということを意味しているのです。
これはまず、「頑張りたくない」ことに気が付く必要があります。
でも、解決案を持ち合わせていない人には気付くことが出来ません。
「自分が(手作業で)頑張ればいい」という選択肢を無条件で選んでしまうのです。
この思考法の差は非常に大きいです。
申し訳ないですが、評価者の立場としては、100分手作業で頑張った人よりも、10分でコードを書いた人を評価します。
プログラミングの根底にあるのは、こういった「考え方」だったりします。
プログラミングを学ぶには?
まずは考え方を知るところからです。
Scratchのような、子供向けに開発されたアプリなどから入るのも一つの手です。
Spreadsheetを使っているのなら、付属のスクリプト機構を使ってみるのもいいと思います。
Webページを作ってJavaScriptを動かしてみるのも良いでしょう。ブラウザとテキストエディタだけで始められます。
ゲーム開発に挑戦してみたいなら、Unityのようなツールもあります。
また、RPGツクールのような特化型のツールもあり、いずれも作りながら学ぶのには良いのではないでしょうか。
ちょっとゴールまでの道のりは険しいかもしれませんが、自分のアプリを世に出すというのは明確な目標になります。
プログラミングの敷居がAIによって下がる
…と、ここまで書いてきましたが、実際問題として、未経験の方が自分でプログラムを書けるようになる敷居は決して低くないです(だからスクールなどが乱立している状態)
ですが、そういった方でもやりたいことを実現できるようなAIでのソリューションが続々と生まれてきています。
例えば、多くのIDE(統合開発環境・プログラムを書くためのツール)やエディター(こちらもプログラムを各ツール)は、すでになんらかのAIアシスタントを利用可能になっています。
有名どころだとGithub Copilotなども。
すごい勢いで発展が続いている分野なので、間違いなく、今後も敷居は下がり続けます。
(昨日までのデファクトスタンダードが今日はもう違う、なんてことも)
企画やアートも含めて、プロンプトだけでプログラミングしてアプリがリリース出来るような日が来るのもそう遠くはないと思います。
人間は何をするのがいいの?
実現したいことを決めるのは人間です。アイデアの案などもAIに出してもらうことは出来ますが、最終的に決めるのはあくまで人間です。
まずは、何がやりたいのかをしっかりと定めて整理し、AIに対して適切な指示(プロンプト)を与えられる必要があります。
そういう意味では、課題認識能力や課題分解能力、それらを正しく咀嚼し言語化してプロンプトに出来る語学力も求められるでしょう。
また、得られたプログラムの実行結果を評価して、意図した通りになっているのか最終判断するのも、人間の重要な仕事です。
規模にもよりますが、テスト計画を立てたり、品質基準を定めたり、色々とやることがあるでしょう。
そして、意図しない部分があるなら、引き続き調整の指示を与える必要があります。
もし、どうしても意図通りにならないときの最終手段として、問題個所を自ら調整する必要が生じるかもしれません。
ここは、プログラミング知識が皆無だと絶対に出来ない工程です。
現在流行している生成系AIは、そのアルゴリズムの性質上、生成の過程がブラックボックスになります。
つまり、利用者にとって「なぜだか分からないけど、それっぽいものが生成」されているのです。
これにより何が起こるかというと、狙った生成物を得るためのピンポイントの調整が困難となります。
(今後、また違ったアルゴリズムの発明や、既知の古典アルゴリズムの活用などで改善があるかもしれませんが…)
せっかく、いいところまで来ても、最終的な調整に失敗してリリースに漕ぎつけられない…。そんなことを避けるためにも、今後もプログラミングの技術は必要となると思います。
終わりに
ごちゃごちゃと書き散らかしましたが、最後に少しだけ。
まず、プログラミングは楽しいものです。
学ぶことで視野も広がりますし、選択肢も増えます。
自分がやりたいと思っていたことも実現できるかもしれません。
ちょっとこれ、面倒なんだけど、もっといい方法ないかな?
そんな小さな気付きから、学び始めてみるのもいいと思います!
こんなことに活用しています、という事例の記事もあるので、見ていただけると嬉しいです。