プログラミング(ほぼ)未経験から半年で自作WEBサイト公開に至った話
おことわり
プログラミングという言葉を使っていますが、筆者の国語力の不足からそうしているのであり、できれば使用したくないと思っています。
それは、コードを書くだけではなくコンピュータを対話的に操作することにも同様に学習コストが発生しており、ただプログラミングといってしまうと後者を軽視しているように勝手に感じるためです。
お前は誰だ?論旨は何だ?
小川(ogawa3427)という名義でインターネッツ活動しているものです。執筆時点で、中の人は金沢大学スマート創成科学類の1期生および1回生をしています。親および日本学生支援機構の脛をかじって生きています。
プログラミングおよびコマンドラインの類は中学生のころに挫折しています。艦これにドはまりして、艦これみたいなゲームを作りたかった記憶があります。変数とかIF文くらいしか覚えていませんでした。Excelは楽しいと思っていましたがCOUNTIFくらいまでしか触っていません。
そんな私がChatGPTに魂を売っ助けを借りて、PythonとJavaScriptをなんとなく書いて、とりあえずWEBページ(金沢大学履修支援スクリプトhttps://kurisyushien.org/)を作成して公開するところまでを半年で経験したのでレポートします。
ちなみに、本題とは関係ありませんが進行上知っておくと理解がスムーズになる情報を。
PythonやUNIX(Ubuntu)などなどソフトウェアが登場しますが、これらはほぼすべて無料で使用できるものです。オープンソースコミュニティに感謝しませう。
ドメインだけ年2000円ちょい必要です。
ストーリーを語る
シェルスクリプトとの出会い
2023年春、人生初の履修登録の終盤に自由履修を探していたら「シェルスクリプト言語論1」なるものが目に飛び込んできました。UNIXコマンドおよび持続可能なソフトウェアについて学び、最後はコマンドを組み合わせてソフトウェアを作成するというもの。
自分のパソコンの中で文字列を加工してテキストファイルを書き換えたりすることに熱中しました。ChatGPTのおかげで思ったことは大体コードで書けたように思います。だんだん方向性が不思議な感じになって、0と1を並べた文字列をコマンドで画像ファイルに変えたりもしました。
初夏に差し掛かり、このあたりでChatGPT Plusの契約をしたと思います。月に20$ですからちょっと覚悟のいる額でした。
文字列LOVE❤
さて、テキストエディタを2分割した画面に置いてシェルスクリプトを書きながらあることに気が付きました。
世界はテキストファイルで動いている。
UNIXコマンドはテキストをキーボードから入力してテキストが画面に表示されます。シェルスクリプトもCLIで実行します。今ご覧になっているwebサイトもその骨組みはHTMLという決まりで書かれたテキストファイルからできています。
テキストを持っていけば世界のどこのコンピュータでも通用するのでは??なんて思ってしまうんですがある壁にぶち当たります。
GUI欲しくね??
黒い画面ってクリックができません。
自分の作ったものを誰かに使ってほしくても黒い画面が怖い、わけわからなくて触りたくないということでどうも興味をもっていただけません。やはりマウスを使える画面が必要なのかと悟りました。マウスのほうが都合のいい操作などももちろんありますからね。
ここで思い切ってPythonを始める決断をしたのも月20$の元を取らねばという気持ちが影響したかもしれません。
夏休みの中頃だったと思いますが、当時シェルスクリプトで作成していたスクレイピングアプリをPythonで書き換えました。そして見よう見まねで解説動画とChatGPTを代わりばんこに見てPySimpleGUIをこねくり回し、なんとかウィンドウを表示できました。
やはりマウスでボタンを直接押せると便利ですし、コードを書いていて試しに実行するとウィンドウがだんだん完成していくのが目に見えて心躍りました。
WEBアプリにしたくね??
マウスが使えて、アプリ開発らしくなったと喜んでいましたがまた不満がてきました。Pythonをみんながみんな、すぐに使えるわけではないということです。数か月HelloWorld止まりでPythonを放置していた自分が一番の証人です。
そこで、ブラウザから使えれば最高じゃないかということで早速取り掛かります。アプリといえる程のたいそうなものではありませんが、ブラウザからアクセスできて便利そうな機能があるんですからそういうことにいたしましょう。
それから、ただアプリの処理を書いているだけではなく、サイトを公開するためのサーバーも動かさないといけないので、WEBサイトを公開するソフトウェアの使い方はChatGPTを質問攻めにして情報のとっかかりを作りました。
3言語目の正直
WEBアプリのうち、フロントエンド(皆様のブラウザで実行される部分)をPythonで書くのはやりたいことに対して得策ではなさそうでしたのでJavaScriptという言語でロジックを作ることにしました。
シェルスクリプトからPythonに書き換えたものを今度はJavaScriptに書き換えるということで#!/bin/bashが恋しかったのですが心を鬼にして書き換えました。やはりWEB系はお手本が無数にあるからかChatGPTもキレッキレに教えてくれました。
そんなこんなで夏休み明けの数晩をかけてPython版と同じくらいの機能をJavaScriptでも作りました。
学割ちゅるちゅる
学割というのはありがたいものです。
AWS(アマゾンがやっているサーバーとかのいろんなレンタルサービス)の学割を使うと、1年間無料で小さいサーバーを借りることができます。ちなみにAzure(マイクロソフトの似たようなやつ)も同様の学割があります。
このサーバにPythonだのなんだのを入れまして、ドメイン(表札的なもの)を借りてサイトを公開したのが10月の上旬だったと思います。
この頃、作業環境にも大変革が訪れていました。
これまでの半年間ではChatGPTの出力をコピペして、エラーが出ればエラーメッセージをChatGPTにコピペすることで暮らしていたのですが正直おっくうです。コードを書いてくれるだけで信じられなかったですが、もはや人間の慣れという機能のほうが信じられません。
そこでGitHub Copilotを導入しました。これもGitHubの有料機能ですが学割で無料になっています。
これは、コードを書いているとGPT-3.5Turboさんが先を予想してくれ、TABキーを押下すると入力してくれるというチートみたいな機能です。もちろん現在も常用しています。
現在(2023年10月)
細々とrisyuの開発をしつつ小さいアプリケーションやDiscordBotを書いています。新しいことや書いたことのないタイプのコードはChatGPTに最初はお任せし、なんとなくわかっているコードや頭の中で書けているコードはCopilotと一緒に楽しくTABキーを押下しています。
まとめ&警告 : 月額20ドルの死神に魂を売る ~AIに依存した初学者~
半年とは言ったもののPythonとWEBサイトの話は大学の夏休みの後半のできごとであるため、『1か月でPythonとWEBアプリ開発を一通りやった話』と銘打って、誇大広告で怒られたら消すスタンスにしてもよかったかもしれない。と思ってしまうくらいうまい話だがこれは実話である。それから、この4000文字少々のためにChatGPTなどは全く使っていない。ここに誓う。
さて、うまい話には裏があるのが世の常というものだろう。だいたい、うまい話なんてないんだから地道に頑張りなさいという教訓になるはずだ。
実際、私自身がそう思って怯えているのだ。
これまで、この分野の学習者はEラーニングなり教本を使っていわゆる"Hello World!"から始めていたはずで、そこには人間が作った体系が存在する。その体系に沿うことで1講座、一冊の理解が深まってゆく。
しかしLLMにほぼ無尽蔵の質問がぶつけられるようになってしまい、目隠しをした学習者はかけられる声にしたがってよろよろ進む。学習者がたどりついた先で目隠しを外し、そこが偽物の花園であっても、無論その声の主は責任など取らない。学習者は目隠しを外すことを拒み、ずっとその甘い声に従うままでいることを自ら望むまである。
オーダーメードとはよく言ったもので、実態は私の知っている概念を言い換えているに過ぎなくて何の成長にもなっていないのではないか。もちろん従前より効率的に効果的に学習できている可能性もある。
しかしそれは蜃気楼で、私は月額20ドル払った挙句何も得ていないのではないかと。生成系AIという死神に寿命を喰われているのではないかと、恐る恐る後ろを振り向いてしまうのである。
怖がらせてすみません
ゲーム脳、スマホ脳、おそらくそう遠くないうちにAI脳なんて言葉ができるとここで予言します。的中しないといいですね。
しかし、ChatGPTに質問しまくりながらPythonやJavaScriptを0から勉強することは人類にとって未知の領域です。コンピュータ1つあればできてしまうだけに気軽なことのようですが、それだけ重大な実験的行為だと考えています。
私としては自分を使って結構ポジティブに人体実験をしている感じです。
私は教本を開くと眠くなるタイプのようなので、新しい言語をやるときはまずChatGPTに知っている概念の書き換えを尋ねてみて、しばらく書いてだいたい知っている範囲はCopilotで書けるようになったら教本をとりあえず1周するのがちょうどよいかもしれません。
この調子で進んだ場合、もしかすると最後のnoteが「かゆい うま」になる可能性はあります。そん時はそん時でしょう。
真似したい方のためのTips
ChatGPT Plusっているの?
→最新機能が欲しいわけじゃないならまだ様子見(2023.10)
3.5でそれなりにPythonかなにかやって4のAPI叩いてみるのもいいかも?ChatGPTとCopilotの使い分け
→自然言語からコード ChatGPT
→コードの断片から大きい部品 Copilot
詳しくは感覚かちゃんとした記事へ高性能PC必要?
→今どきの大学指定スペックがあれば十分(メモリ16GBは人権)設備投資のオヌヌメ
→21.5"くらいのフルHDモニタ(お金余裕あれば28"4Kがうれしいけど4Kじゃなくても無くても死なない)
→安いのでも大丈夫な人はキーボードマウス買ってデスクトップ風に使うと楽かも(ノートPC)4or3本指でトラックパッドを横スライドすると仮想デスクトップ切り替えられるジェスチャー設定
←出先で1画面でも発狂しないように環境
→開発 WSL2 Ubuntu, VSCode
長々と失礼いたしました。
ここまでお読みいただきましてありがとうございました。