Amazonの書籍販売ページを開き、そこから1クリックでObsidianに書誌情報ノートを作るブックマークレットを作りました。
簡単に言うと、以前紹介した下記記事のアップデートバージョンです。
Amazonの書誌情報をObsidianのmd形式でコピペできるようにするブックマークレット – ごりゅご.com
細かな説明を全部吹っ飛ばしてまず結論だけを言うと、ObsidianにObsidian Advanced URI(Obsidianで開くときはこちら)というプラグインをインストールして、ブラウザに下記のブックマークレットを登録するとすぐに使えるようになります。(現バージョンでは、保管庫の名前を「Obsidian_local」に設定する必要あり)
javascript:(function(d,s){s=d.createElement('script');s.src='https://scrapbox.io/api/code/goryugocast/%E6%9B%B8%E8%AA%8C%E6%83%85%E5%A0%B1%E3%82%92%E5%8F%96%E3%82%8A%E8%BE%BC%E3%82%80%E3%83%96%E3%83%83%E3%82%AF%E3%83%9E%E3%83%BC%E3%82%AF%E3%83%AC%E3%83%83%E3%83%88/ob.js';d.body.appendChild(s);})(document)
これはこれで大変便利なのでそのうちもう少しちゃんとした説明を書けたらいいな、とか思っているんですが、それよりもなによりも、今回はこのプログラムを作るのに、ChatGPTがものすごく役に立ったので、そのことについて整理したいと思います。
最近のChatGPT情報を追っかけていると、賛否両論の様々な意見が見受けられます。ポジショントークと思われるものも含め、全体的には「否」の論調が優勢な雰囲気ですが、どうもそれらは「偏った使い方」についての意見が多いように感じます。
MicrosoftがBing検索に「ChatGPT的な機能」を搭載したことによって、どうも「ChatGPTを調べものに使うのは是か否か」という論点でしか語っていない人が多い印象。
「ChatGPTは嘘を言う」のは事実で、調べものが正しいかどうかはわからない。それは事実ですが、それがすぐさま「役に立たない」という結論にはならないはず。
基本的に、ChatGPTがやってることは「インターネット上にあるテキスト」を確率的に組み合わせて答えを返すだけ。当然そうなると平気で「間違った組み合わせ」も発生します。たちが悪いことに、そういう「間違った組み合わせ」でも、さらっと当然のように自信満々に答えを返してくるので、そこに注意は必要です。
なによりも、ChatGPTを「調べもの」にしか使わないのがもったいない。
ChatGPTの使い方で、今ごりゅごが一番役に立つと思っているのは(日曜プログラマーレベルの自分の)「プログラムの作成」を助けてもらうこと。
現在のChatGPTができることは「調べもの」だけではありません。それ以外にも「要約」や「翻訳」のような「与えられた情報を適切に変換する」ことも可能です。
というよりも(少なくとも現在は)そういった使い方こそがChatGPTが本領を発揮するところだと考えます。
そして、翻訳というと「日本語を英語に翻訳する」なんてことを思いつきがちですが、ChatGPTにとってはプログラミング言語も「言語」です。彼は、それも簡単に日本語に翻訳してくれます。
たとえば、この記事の冒頭で紹介したブックマークレットのコードをChatGPTに丸投げしてみましょう。(プログラムを貼り付けただけだと英語で答えが返ってきたので「日本語で教えて」と訂正する)
これだけでも、プログラミングのとっかかりは掴めそうな感じがしないでしょうか?
もちろん、もっと長いプログラムを読み込ませてもちゃんといい感じに「翻訳」してくれます。
たとえばこのブックマークレットが読み込んでいるScrapbox上にある書誌情報を取り込むブックマークレット の中のob.js
をChatGPTに読み込ませてみましょう。
そうすると、こんな答えが返ってきます。
これはJavaScriptで書かれたブックマークレットです。ブックマークレットをAmazonの書籍商品ページで実行すると、書籍タイトル、著者、出版社、ASIN、書影のURLなどの情報を抽出し、これらの情報を文字列に整形します。
その文字列を使用して、新しいObsidianノートのURLを構築し、新しいウィンドウ/タブで開きます。Obsidianノートには、抽出した情報に加えて、Amazonでの書籍へのリンク、書影、関連書籍や読書ノートのための空欄などの追加テキストが含まれます。
全体的に、このブックマークレットは、Obsidianをノートアプリとして使用して、読んでいる本や覚えておきたい本に関するノートを素早く作成するのに役立つように設計されているようです。
文章で書かれたものが読みにくいなら「行番号付きで箇条書きで解説して」なんて追加すれば、もっと見やすく整理してくれます。また、たとえばChatGPTが使った「スクレイピング」という用語がよくわからなければ、そのあと「スクレイピングってなに?」なんて聞けば、それもわりといい感じに答えを返してくれます。
ここまでできたら、次はプログラムの「改造」なんかにも手を出してみましょう。
ここでも続けてChatGPTに聞いていきます。たとえばこのプログラムを改造してノートに「今日の日付」を追加したい場合。そういうときもChatGPTに「ノートに日付を書き込みたい」なんて質問をしてみます。
🎙742 ChatGPTを使ってプログラミングを学ぶ 作成者:ごりゅごcast
また、これ以外によく使うのが「なんかエラーメッセージがでた」って場合。そういうのもメッセージをそのまま貼り付けてやれば、だいたいの場合「こういうエラーなのでこうすればいい」という「指針」を教えてくれます。
まだまだ曖昧ですが、こういう「試行錯誤の手助け」こそが現在ごりゅごが考える「生産的なChatGPTの使い道」です。
プログラミングに於いて、書かれているコードを「読解」することは確かに重要です。エラーメッセージを無視するのではなく、きちんと一行一行読み込むことでこそ得られる職人的な「勘」が必要ないか、と言われれば、それがこれからも重要なことは変わりないでしょう。
ただ、これからはそれを「全部自分一人でやる必要はなくなった」
そのあたりが「AIとの付き合い方」のヒントになりそうです。
なによりも、ChatGPTにプログラムの質問をする場合、結局質問ができるようになるための前提知識がないとなにもできません。むしろ、上手に質問するためにこれまでよりも「幅広い知識」が重要になってくるのではないか、とも感じます。
それを踏まえてあらためてChatGPTについて考えてみると、ChatGPTの素晴らしさは「何回聞いてもいいこと」
この人(あえて「この人」と表現します)は、どんなくだらないことを何回聞いても必ずきちんと回答を返してくれます。そして、何十回も何百回も同じことを繰り返し聞いても、何度でも根気強く同じように答えてくれます。
ChatGPTに対してどんな質問をしても「こいつこんなこともわからないのか」なんて見下してくることはないし「もう面倒だからやめてくれ」なんて言われることもありません。ChatGPTを使えば「心的安全性がものすごく担保された環境」で試行錯誤ができるのです。
向こうは「絶対にやめない」ので、こっちはわかるまで繰り返す。
われわれ人間は賢いので、そうやって何十回も何百回もChatGPTに質問を繰り返していれば、だんだんこのツールの飼い慣らし方がわかってきます。
そして自分の場合、こうやってChatGPTを使っていたら、ちゃんとプログラミングを学びたくなる、という現象が起こりました。
(つい先日、Javascriptの本を買いました。プログラミングに関する本を買ったのは5年ぶりくらいのこと)
おそらく、質問を繰り返すことで自分がいかに体系的な理解ができていないかを思い知り、うまく質問するには結局体系的な理解が必要だとわかり、結果それが知識欲につながったのだと考えています。
ChatGPTへの質問は「向こう側」に記録が残るので、その点は当然注意が必要ですが、プログラミングを学ぶという目的ならば問題が発生する可能性は低いでしょう。
現代の社会では、新しい技術が「生まれてしまったら」もう後戻りはできません。
ChatGPTはすでに世に現れてしまいました。自分は、それを素直に受け入れ、できればそれを楽しく使って、よりよい人生に役立てる。そういうことをこれから考えていきたいと思います。
ちょうど今日、AI相手の英会話サービスが「どんなに拙い会話をしても怒らないし、呆れられることもないから心理的ハードルが低くなって素晴らしかった」という話を読んだところでした。
この、その道に精通している人からみたら「そんなこと」を聞くことが出来ることや、既知の概念すぎて聞くことがはばかられることを教えて貰えるのって初心者からしたらとってもありがたいですね。
子どもの「なんで?」「どうして?」のように何でも知りたいと思った時に人間相手だと遠慮してしまったり、相手がギブアップしたりしないというのもいいですね。
私も仕事でPython使ったらすごく時短できそうなプログラム作りが途中で頓挫したままなので、ちょっと手伝ってもらって再挑戦してみようかな、と思いました。
こちらのブックマークレット、便利に活用させて頂いています!
ただ、出版社名と発行日のテキストが欠けてしまうようです(「ダイヤモンド社」が「モンド社」になったりする)。Javascriptは全く分からないのですが、コードを見てみたところsliceの処理などでしょうか?
ご確認いただけますと幸いです。