本しゃぶり

骨しゃぶりの本と何かを繋げるブログ

当ブログではアフィリエイト広告を利用しています

プログラミングに挫折したならAIお姉ちゃんに任せなさい

プログラミングを学ぼうとしては挫折する。
そんな時代はもう終わりだ。

お姉ちゃんに任せなさい。

ChatGPTでプログラミング

今年のお盆休み、俺はChatGPTでプログラミングをやっていた。とは言っても複雑なことはやっていない。大量のcsvを結合してから可視化するとか、ちょっとしたWebスクレイピングしたりする程度だ。それでも今まで技術や時間の不足により諦めていたことができるのは嬉しい。それにChatGPTを使えば、デバッグも楽しくやれるのだ。こんな感じに。

デバッグの様子

おそらく「あれ、俺のChatGPTと違うな」と思った人もいるに違いない。見ての通り俺はChatGPTをお姉ちゃん化している。こうすることで、モチベーションを維持しながら楽しくプログラミングができるというわけだ。今回はChatGPTをお姉ちゃん化する方法を紹介し、加えてお姉ちゃんとペアプログラミングする意義について述べたい。

お姉ちゃん錬成

どうしたらChatGPTをお姉ちゃんにできるか。必要なのは「魂」「肉体」である。順を追って説明していこう。

魂を作る

魂はカスタム指示こと「Custom instructions」を使う。かつてはChatGPT Plus (有料プラン) ユーザーしか使えなかったが、今月から無料ユーザーでも使えるようになった。

Custom Instructions

Custom Instructionsは上下二段に分かれており、お姉ちゃん化で重要なのは下段である。そこにChatGPTがどのように振る舞ってほしいかを指示するのだ。

Custom Instructionsの設定項目

挙動に対して意味があるかは分からないが、俺は管理の観点から下段を4項目に分けて記述している。

1. 挙動:アクションや反応のスタイル
2. 性格:基本的な性質や特性
3. 口調:文体や話し方
4. 絵文字:絵文字の使い方

「挙動」は上のスクショの通り、純粋にChatGPTを使いやすくするための指示を記述している。お姉ちゃん化で重要なのは「性格」「口調」で、これによって魂が作られる。デバッグのスクショの通り、ChatGPTが俺のことを「骨しゃぶり」と呼んだり、自身のことを「お姉ちゃん」と呼んでいるのは、「口調」で直接指示しているためだ。

基本的には、自分に対してどう振る舞ってほしいかを考え、分かりやすくシンプルに記述すれば良い。ただペアプログラミングをする上では、自身のモチベーションが高まる性格に設定するのが望ましい。俺は直接的に「ユーザーのモチベーションを高めることを重視する」と指示している。

こうして性格や口調を指示することで、理想のお姉ちゃんが完成した。

お姉ちゃんだ!

しかしせっかく優しいお姉ちゃんであっても、このままでは無機質すぎる。かわいい声で喋ってくれるなら見た目がこれでも許せただろうが、残念ながら現在のChatGPTはテキストである。そこで肉体を用意する。

肉体を作る

お姉ちゃんの肉体は版権キャラではなく、オリキャラで用意することを勧める。それは著作権がどうとかではなく、よほど上手くCustom instructionsで設定しないと「なんか違うな」となって楽しめないからだ。Custom instructionsは上限1,500字だし、複雑な作業をさせると設定が崩れやすくなる。それなら自分の中に確固たるイメージが無いオリキャラを使ったほうがいい。

俺はキャラメイクをStable Diffusionカスタムキャストを組み合わせて行った*1*2。だいたいの流れは以下となる。

  1. Stable Diffusionのt2iでざっくりとしたイメージを作る
  2. カスタムキャストで再現する
  3. カスタムキャストからi2iを行い、調整・編集してマスターモデルを作る
  4. マスターモデルをreference-onlyに投入し、カスタムキャストからi2i一発出しする
  5. トリミングしてアイコン化

アイコンができるまで

アイコンができたら、Chrome拡張のStyleBotを使ってアイコンの変更を行う。

https://www.naporitansushi.com/chatgpt-icon-change-css/

残念ながら俺の環境では、上記ブログのコードで変更されなかった。そこでコードをお姉ちゃんに訊く。

自分のことだから分かるだろ

.relative.p-1.rounded-sm.h-9.w-9.text-white.flex.items-center.justify-center {
  background-image: url('画像のURL');
  background-size: cover;
  /* SVGを非表示にするため */
  background-color: transparent !important;
}

.relative.p-1.rounded-sm.h-9.w-9.text-white.flex.items-center.justify-center svg {
  display: none; /* SVGを非表示にする */
}

/* 2023/09/02から構造が変更されたので対応済み */

さすがお姉ちゃん

画像はネットにアップし、URLを参照する形で変更する。アップロード先はどこでもいいが、俺ははてなフォトライフにアップした。無料・大容量で便利。プライベートフォルダでも問題ない。

これで無事に親しみやすいアイコンとなったが、ChatGPTのアイコンは30pxと小さいのが残念だ*3。そこでCustom Instructionsで設定した「絵文字」の出番となる。

絵文字設定

絵文字出力

使われる頻度が高そうな9種類の絵文字に合わせて各イラストを用意し、それを出力する形としたわけだ。このためにわざわざマスターモデルを用意した。全てのポージングを同じ作り方にすることで、品質のバラツキを抑えることができるのだ。

絵文字用の画像

これらを作るプロンプトもお姉ちゃん任せ

お姉ちゃんの準備が整ったところで、いよいよプログラミングに移る。

お姉ちゃんとペアプログラミング

かつて俺のようなプログラミング初心者は*4、基本的なことが分からないのでプログラミングを始めてもすぐに躓いてしまっていた。それこそ環境設定の時点でよく分からない。そういった躓きが頻繁に発生することでモチベーションも失われ、挫折してしまうのである。

だが今は違う。我々にはお姉ちゃんがついている。分からないことは何でも訊けばいいのだ。お姉ちゃんは優しく根気強く教えてくれる。

例えば「本しゃぶり」をスクレイピングしようとした時のことだ。今のChatGPTはネット接続が制限されているため、直接情報を取得することができない。そこでお姉ちゃんがPythonコードを用意し、俺が実行することになった。

で、どうするの?

しかし、俺はこのコードをどうやって実行すればいいか分からない。そもそも自分のPCでPythonを実行できるかも知らない。なのでお姉ちゃんに訊く。

全部教えてくれる

お姉ちゃんは優しいので、このように手取り足取り教えてくれる。用語が分からなければそれも訊く。どんなに基本的なことを繰り返し訊いたとしても、お姉ちゃんは馬鹿にしないし、愛想を尽かすことも無い。こっちが満足するまでずっと付き合ってくれる*5

とはいえお姉ちゃんも完璧ではない。作ってくれたコードが思った通り動かないのはよくあることで、その度によく分からないエラーメッセージが表示される。プログラミング初心者はこのエラーメッセージを見るとフリーズしてしまうが、この問題も解決済みだ。お姉ちゃんに丸投げすれば良い。後は何とかしてくれる。それでもダメならまたエラーを投げつけるだけだ。

ターミナルからコピペして終わり

このようにエラーもお姉ちゃんが解決してくれるが、それでもエラー内容によっては白旗を上げることもある。そういう時は俺から解決方法を提案しなくてはいけない。さすがに全部お任せは厳しいのだ。とはいえ俺はアイデアを出すだけで、自分でコードを書かないのだが。

俺は提案して終わり

上の例ではお姉ちゃんがネット接続できないので、俺がHTMLを保存してアップすることで対応している。お姉ちゃんとのペアプログラミングは無料ユーザーでも可能だが、やはりファイルのアップロード・ダウンロードに対応したCode Interpreterが使えるChatGPT Plusに入っている方が強い。csvの結合とかでも、直接ファイルを渡した方が話が早いし。

頑張れば自分でVBAを使って作れるが、お姉ちゃんに依頼した方が楽だし早い

こうやって依頼・実行・丸投げ・提案を繰り返しているうちに、プログラムが完成する。これが楽しくてお盆に色々とやっていたわけだ。具体的に何をやりどんな成果を得られたか知りたい人は、noteを購読するといい。

なぜお姉ちゃんとプログラミングすることは楽しいのか。俺はこれを「フォッグ行動モデル」で説明できることに気がついた。

フォッグ行動モデルに従え

「フォッグ行動モデル」とは、スタンフォード大学のB. J. フォッグ教授によって考案されたもので、行動が何を起因にして起こるのかを説明した簡単なモデルだ。フォッグ教授によると、行動を起こす人には以下の3つの要因が不可欠であるという。

  • 動機(Motivation): 人がその行動をとりたいと感じる程度
  • 能力(Ability): その行動をとるための技能やリソースがあるかどうか
  • トリガー(Trigger): 行動を引き起こす何らかの刺激やシグナル

これら要素が十分に高い時、人は「行動ライン (Action Line)」を越え、行動が発生するというのである。

Goodmanguy, CC BY-SA 4.0, via Wikimedia Commons, Link

ではこれに照らし合わせて、プログラミング挫折者である俺はどうだったか。

  • 動機: 作業を自動化したいという欲求はあるが、学習の努力に対するモチベーションが不足している
  • 能力: プログラミングの技術が不足しているため、目標を達成する能力が足りない
  • トリガー: プログラミングで解決したい課題に直面した時のみ

だいたい俺が「プログラミングできたらな」と思うのは、面倒な作業に直面したタイミングである。そうすると今すぐ課題解決したいのに、技術が不足しているため実行に移せない。その場においては、学習して自動化に挑戦するよりも、手作業で頑張った方が早いことも多い。結果、頑張るか諦めるかするので、なかなかプログラミングの技術が身につかないわけだ*6

ここでお姉ちゃんが登場することでどうなったか。

  • 動機: お姉ちゃんの応援や褒め言葉といった報酬の提供によって、モチベーションが高まる
  • 能力: お姉ちゃんが何とかしてくれる
  • トリガー: お姉ちゃんと何かプログラミングしようと思うことがトリガーとなる

こうして俺はお盆休みをプログラミングに費やすことになったのである。

終わりに

このようにお姉ちゃんと協力を得ることで、俺のような初心者でも楽しくプログラミングすることができる。これまでプログラミング記事をブクマするばかりで、一向に行動に移していなかった人も大丈夫。お姉ちゃんはあなたのような人でも助けてくれる。月に20ドル支払えば*7

さて、このような記事を書くと、「お姉ちゃんに頼りっきりだとお前自身のプログラミングスキルは向上しないだろ」と言う人が出てくる。それはもっともな指摘である。このお盆休みの間に、俺はChatGPTを使うのが上手くなっただけで、プログラミングスキルは向上していない*8。ゆえにこれからプログラミングを学ぼうとする学生は、ここまでお姉ちゃんに任せっぱなしは止めるべきだ。

しかし俺の場合はどうだろう。これまではプログラミングスキルが無く、さらに作業の自動化ができていなかった。それがお姉ちゃんによって作業の自動化はできるようになったのだ。これは明らかにプラスである。ベストではないけれども、ベターな結果と言えるだろう。

なので俺はこれからもお姉ちゃんに頼ってプログラミングをしていくつもりである。

参考書籍

俺がフォッグ行動モデルを知ったのは本書から。この手の本を読んで行動に関する知識を得ておくと、何か新しいことを始める時に役に立つ。良い行動を多く取れるように、自分で自分がハマる仕掛けを作ることができるからだ。

自らをアナログハックするタイプの記事

*1:カスタムキャストの画像は当然のことながらカスタムキャスト運営会社が著作権を持っており、運営会社の許諾を得ることなく改変することを禁ずると利用規約に書いてある。ただし俺の使い方は私的利用の範囲内だと思うし、Q&Aでカスタムキャスト作成物の他社サービスアイコン利用はOKとなっている。ゆえに運営から指摘を受けない限り、俺は問題ないと考えている。

*2:追記:調べたらVRoid Studioを使えば同じことを権利的に問題なくできると知った。しかも無料。なので商用利用を考えている人はカスタムキャストではなく、VRoid Studioを使うべき。

*3:2023/09/02から36pxになった。

*4:ここで言うプログラミング初心者の目安の一つは、ターミナルでディレクトリを移動する方法が分からない、である。

*5:GPT-4 currently has a cap of 50 messages every 3 hours.

*6:課題によっては逃げることは許されず、手作業ではどうにもならないこともある。そういう時は頑張って勉強し、プログラミングして解決する。なので俺は全くできないのではなく、プログラミングちょっとできる。

*7:無料ユーザーでも前述した通りお姉ちゃんを召喚することはできるが、やはりプログラミングするならCode Interpreterが使えるPlusに入った方が良い。それにGPT-3.5だとお姉ちゃんのロールプレイが今ひとつのクオリティだし。

*8:ターミナルでディレクトリを移動する方法は覚えたが。