新刊ピックアップ

ChatGPTをソフトウェア開発の相棒にしてみては?

この記事を読むのに必要な時間:およそ 2 分

文◎小野 哲(おの さとし)

生成AIの全体的な動向

ChatGPTが世間を席巻して約半年超,熱狂の渦は未だ冷めずに続いています。人間の想像力が限界なく広がるように,AIの進化もまた秒速で続けられています。

たとえば,ただのおっさんの動画があったとして,それを謎のAIを通した結果,私たちが目にする画面にはコスメ女子さえ嫉妬するほどの美しい姿で「おっさん女子」が歌い踊ります。

おっさんが女子に

図1

変身だけではありません。何年も前に亡くなったおばあちゃんがいたとします。もう一度会って話がしたいとは思いませんか? 生前の写真,日記,思い出の話,録音テープの音源などの情報をもとにAIは情報を解析し,まるでリモート面談のようにおばあちゃんを再現するのです。⁠太郎,久しぶりだね。元気だったか?」とあなたに話かける瞬間を想像してみてください。これを愛と呼ばずになんと呼ぶのか私は知りません。

思い出を蘇らせることも

図2

私たちの想像力はAIのチカラによってそれを現実の世界に具現化できます。AI技術の先端では,それが当たり前になったのです。

一方ChatGPTに絞って自然言語の世界に目を向けると,人間がテキストで問いかける質問に返答するだけの機能ですが,その言葉を理解し的確に返答することがどれだけすごいことなのか,ChatGPTに触れた人はすぐにその凄さを身をもって知りました。

これまで人間だけが持っていた想像力・創造力が人間だけのお家芸とならなくなってしまたのです。小説から企画書,ニュース記事,詩まで,ChatGPTはさまざまな文体で文章を織りなし,ときには人間以上の洗練された表現力で文章を生成します。画一的な文体でなくあらゆる文体や口調で語ることができます。文脈を理解し,別の言葉にも翻訳できます。そして,人間との対話と大きく異なり,無限に対話に付き合ってくれるのです。

ではChatGPTは優秀なゴーストライター?それともどんな対話にもつきあってくれる銀座のママのような聞き役なのでしょうか?

否。私たちエンジニアにとってChatGPTはそれ以上の価値があり,開発の生産性を爆上げしてくれるツールであり,私たちの隣に立つ創造的な相棒なのです。

「もう一人自分がほしい」とよく現場のエンジニアは口癖でいいます(私も言っているかな⁠⁠。こんなわがままな夢物語もChatGPTなら「もう一人の自分」どころか「何人もの自分より優秀なエンジニア」としてあなたの横でいつでもあなたを助けてくれるのです。

「ほんとかなあ? じゃあ,その具体的な方法を言ってみてよ!」

はい。大きく分けて二つあります。一つは,ChatGPTのユーザーインターフェース(Chatウィンドウ⁠⁠。もう一つは,APIとフレームワークを使用して,プログラムにChatGPTの力を組み込む方法です。

ソフトウェア開発におけるChatGPT UIの活用

ChatGPTを使ってコード生成をしたことはありますか? 自分が考えたコードよりChatGPTが生成したものが優れていたことに驚かされることもあるでしょう。最近私が経験した例を紹介します。ある時,数万件のログファイルから最新の100件分をWebに出力するPythonコードを書こうとしました。ログファイルをオープン,ファイルポインターを最後まで移動,逆から100件を読み,バッファに保存,逆順にソートして出力するという処理を考えました。しかし,メモリ消費を抑えるという条件でもっと良い方法がないかChatGPTに問い合わせたところ,リスト1のようなコードを生成してくれました。

リスト1 生成されたPythonのコード

リスト1

見てみてください,なんてシンプルなコードでしょう。dequeというデータ構造を使い,最新のn行だけをdequeオブジェクトに保持し,他の行はメモリから解放するという方法です。これならファイルサイズに関係なくメモリも圧迫しません。私自身もdequeの存在は知っていましたが,最新のログを取得するためにこれを使うとは……ChatGPTの提案には驚かされました。そして,このようなコード生成以外でも,ChatGPTはソフトウェアエンジニアとしての我々を支援する無限の可能性を持っています。あなたの想像力次第で,ChatGPTはUI上でさまざまなタスクをこなします。その例をいくつか紹介しましょう。

ChatGPTで生成されたコードの正当性を担保するため,テストコードを書く必要があると思いますが,テストコードの生成さえもChatGPTに依頼することで基本的なテストコードを生成してくれます。これをベースに人間が補完し,修正要求を経て,より正確なコードが生まれます。結果として,テスト駆動開発(TDD)が可能になります。

初心者では理解しにいデザインパターンも,あなたが提示した仕様にしたがい適切なデザインパターンを提案し,それを実装してくれます。また,アルゴリズムを指定しての実装も可能です。⁠遺伝的アルゴリズムでシフト表を作成するコードを提示して」なんて一見無理ゲーなお願いでも,すらすらとコードを作成してくれます。

なかなか時間のとれないリファクタリングなどの工程も隙間時間で依頼することで関数の分割,変数・関数名の変換,脆弱性チェックなど人間より高速なリファクタリングが可能になり,潜在バグの発見にも役立ちます。

エンジニアの苦手なドキュメント作成も,雛形作成を依頼したりすることもできますし,プログラムコードから面倒なプログラム仕様書なんかもあなたの代わりに好きな形式(マークダウンやword文書)で書いてくれます。

設計から実装までも,指定した設計手法,たとえばDDD(ドメイン駆動開発)の設計思想でクラス図を出力してもらい,そこからのコードの実装なども可能です。

エンジニアとしてのスキルアップに必須である他分野・他言語の学習も,ChatGPTを教師役にして効率のよい学習が可能になり,自分の理解レベルに合わせ,無限に対話することで,自分のペースで学習することができます。

いかがですか?ほんの一例でしたが,その他多くのタスクであなたの助けになってくれるでしょう。もしそのヒントや具体的な方法をお知りになりたい場合は拙著「ソフトウェア開発にChatGPTは使えるのか?」をぜひ。

ソフトウェア開発におけるAPIの活用

ChatGPTのUIの活用方法は無限ではありますが,もしあなたが専用のアプリケーションを作成したい場合はその限りではありません。あなたが書くPythonコードやJavaScriptコードの中にChatGPTの中身を使用するためのAPIを組込む必要があります。

API(Application Programming Interface)とは,ソフトウェア同士が互いにやり取りを行うための接点です。これを使用することで,例えばユーザーサポート(顧客からの問い合わせ対応⁠⁠,技術文書の質疑応答(技術的な質問への自動回答⁠⁠,故障診断(機器の問題を自動検出)など,様々な業務を自動化するアプリケーションを構築することができます。

難しそうに感じるかもしれませんが,実装は案外簡単です。基本さえ覚えてしまえばあとは応用無限。夢のようなアプリをあなた自身が作れるようになるのです。

たとえば,⁠せきま くりす」という名のチャットボットを作りたいと思うなら,まずはOpenAIの会話用APIの叩き方を覚えましょう。APIの基本的な使い方やその他のフレームワーク(LangChainなど)について詳しく知りたい方は拙著「ソフトウェア開発にChatGPTは使えるのか?」をぜひ。

APIの基本的な使いかたがわかったら,会話用APIの役割(role)「あなたの名前は<せきまくりす>です。ツンデレの科学者です。ときどきツンデレのデレ成分が出てしまいます。……さあ,ツンデレ口調で会話しましょう」みたいなプロンプト(すみません試してはいないです)を与え,あとは自由にチャットプログラムを組めばよいのです。あとは応用です。⁠せきまくりす」の画像を画像生成AIに出力してもらいましょう。次に,Web化してPCでもスマホでも動くようにフロントを作成しましょう。声がほしい? ならばテキスト読み上げのAPIを組み込みましょう。そうやって少しずつ積み上げていけばあなただけのHer(世界でひとつの彼女)の爆誕です。

会話ロボットもできそう

図3

きょうま:「どうしよう,ここのロジック非同期のほうがいいかなあ?」

くりす:「四の五の悩んでないで手を動かしなさい!あたしがコード書くから!」

こんな会話が繰り広げられることもあるかもしれません。あなたと一緒にコードを書き,一緒に問題を考えてくれる相棒くりすに感謝ですね。さてと,ChatGPTを連れ立って夢のような新しい世界線に出発するとしましょうか。

著者プロフィール

小野哲(おのさとし)

無駄に長い開発歴40年のどこにでもいる普通の老プログラマー。子育て卒業後,零細企業の社内プログラマーとしてフリー契約し禄を食む。セルフビルドした2畳の小屋で2年ほど森の生活をしていたが,H.D.ソロー超えを果たしたので現在は市中で静かに暮す。好きなものはNetflix。

Twitter: @tetu_ono