【メタエンジニアの戯言】あえてChatGPTを使わずに新言語をさわる
2023.11.02松林弘治の連載コラムPowerShell。生まれてこのかたWindowsを仕事で全く使ってこなかった(笑)自分が、ついに必要にかられてコーディングする羽目になったスクリプト言語です。
いまお手伝いしているとある企業の方から、「面倒な業務の効率化」について相談を受けたのです。いわく、フォルダ内のPDFファイル群から、特定の条件に合致するものだけを残し、ほかは削除したい。現在は、会計ソフトなどをみながら目視確認(!)で削除作業を行っている、なにか良い方法はないか、と。
もちろん、「特定の条件」が明文化されているならば、いくらでも自動化する方法はありますよ、とお答えしたところ、そのようなソリューションを作ってもらえないでしょうか、と頼まれました。
さて、困りました。自分でそのような目的を達成するのであれば、LinuxやUNIX(含macOS)上で、シェルスクリプトを組んで終わりです。しかし、対象ユーザはその企業の非エンジニアの方々。使われるWindowsマシンにWSL(Windows Subsystem for Linux)をインストールしてもらい、作ったコマンドを実行してもらうのは、さすがにハードルが高いですし、本末転倒感もあります。
そこで、分からないなりにいろいろ調べてみると、最近のWindowsにはPowerShellというスクリプト言語およびコマンドラインインタフェースのシェルが標準搭載されているとのこと。また、Windowsの「ショートカット」を使えば、ダブルクリックでスクリプト実行させることもできそうです。
というわけで、練習問題レベルの小規模コード作成とはいえ、生まれて初めてPowerShellに触ることとなりました…
—-
全くコードを書いたことも読んだこともないPowerShellスクリプトですから、いまどきならChatGPTに相談しながらコーディングする、ってのもアリかなぁ、と思ったのですが、今回はあえて、AIのお世話にならずに(笑)作ってみることにしました。
そもそもPowerShellには5系と7系があり、Windows10/11に標準搭載されているのは5系であることが分かりました。そこで、 PowerShell 5.1のリファレンス をながめて勘所を探るところから始めました。とはいえ、今回はファイル名からIDを抽出し、別途与えられたCSVファイルを参照しながら、所与の条件に従ってファイルを残す、削除する、というとても簡単な自動化で、そんなに込み入ったことをするわけではありませんので、あくまで斜め読み程度に。
その後、似たようなことをやっている事例をWeb検索で見つけては、そのコードを読み、参考になるところは参考にしてコードを書き進めていきました。GUIっぽいところの作り込みだけかなり面倒でしたが、ほどなく目的のコードが動くところまで到達しました。
その後、先方が提示した「残す・削除する」の条件がそもそも不十分であることが判明し(笑)、何度かオンラインでヒアリングをし直したのち、テストを行って、やっと完成しました。
—-
今回は結局、自力で(Web検索しながら)解決しましたが、過去にいろんなプログラミング言語を使ってきたから、その類推で意外と早く済んだのかもしれません。
さて、今回のように、初めて触れるスクリプト言語でコーディングをするシーンで、もしChatGPTを使っていたとしたら、どのように使っていたのでしょうか。そして、ChatGPTのお世話になった方が、結果として早くコードが完成していたでしょうか。また、自力で挑むよりも早く深く理解が進んだでしょうか。
それは、当たり前ですが、やってみないと分かりません。「シェルスクリプトを長年使ってきましたが、今回初めてPowerShellでコーディングを行うことになりました。この際、*NIXとWindowsの違いも含め、気を付けることは何ですか」などと聞いたらどんな回答が得られるだろう、と、いまGPT4に聞いてみた結果がこんな感じでした。
「PowerShellを数日間いじった後である今、これを読むと、一部あやしいところはあるものの、確かにコンパクトに要点をおさえた回答っぽいな、と思えます。
しかし、まだPowerShellに触れる前、一番最初にこれを読んでいたら、私はどう思ったのだろうか、結局はリファレンスを読みに行ってたのかなぁ、と思ったりしました。
例えば、記憶があやふやな命令や文法を確認したい時、あるいは、逆引きリファレンスのように「PowerShellで〇〇を実現するにはどのような方法があるのか」を知りたい時、など、より具体的な内容を聞くのであれば、(少し癖のある)先輩エンジニアから教えてもらう感じに多少は近くなるのかもしれません。
—-
ChatGPTやGitHub Copilotといった最新のツールが当たり前にそこにある環境で育っていく若いエンジニアと、私のように長年manページやリファレンスを頼りにやってきた年寄り(笑)とでは、前提条件がいろいろ違うのかもしれません。
ともあれ、過去の知識や知恵の蓄積を生かしつつ、ますます発展していくであろう各種AIツールをどのように活用して、ますます学びを深め加速できるか、これからも試行錯誤は続きそうです。とりあえず、次に新しい言語に触れる際には、まずChatGPTに聞いてみようかな、と思います。
松林 弘治 / リズマニング代表
大阪大学大学院基礎工学研究科博士前期過程修了、博士後期課程中退。龍谷大学理工学部助手、レッドハット、ヴァインカーブを経て2014年12月より現職。コンサルティング、カスタムシステムの開発・構築、オープンソースに関する研究開発、書籍・原稿の執筆などを行う。Vine Linuxの開発団体Project Vine 副代表(2001年〜)。写真アプリ「インスタグラム」の日本語化に貢献。鮮文大学グローバルソフトウェア学科客員教授、株式会社アーテックの社外技術顧問を歴任。デジタルハリウッド大学院講義のゲスト講師も務める。著書に「子どもを億万長者にしたければプログラミングの基礎を教えなさい」(KADOKAWA)、「プログラミングは最強のビジネススキルである」(KADOKAWA)、「シン・デジタル教育」(かんき出版)など多数。