【メタエンジニアの戯言】あえて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に聞いてみようかな、と思います。

【他社事例から学ぶ】自社のDX推進を成功に導くために

DX時代をけん引する人材を育てるための戦略

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