知識0からChatGPTだけで速読ソフトを作った
https://gyazo.com/cb06a4d2c61247c297d31d8a53952c89
ことの発端は恐山さんというオモコロライターのTwitterを見たことだった。
@d_d_osorezan: 何もかもChatGPTに丸投げして作った速読ソフトによりかなりの速度で文章が読めるようになったが、異常な読み方をしているせいか体に強い負荷がかかり動悸がしてくる。 https://gyazo.com/a3df77af4e5c72082a73710837aff681
おもろいなと思って、せっかく有料のChatGPTをつかっているわけだし、自分も作ってみた。 丸一日、ChatGPTと1on1していた結果、下記のようなソフトが完成した。
https://gyazo.com/576dc022b5a726ce9d8e9b5d9933d506
ちなみにPythonの知識0、なんならプログラミングもしたことない、ターミナルの第一印象は真っ暗で怖いくらいの実力なので、ソフトの出来はご容赦いただきたい。
この記事の内容
1.できあがるまでの話
2.機能
3.活用方法
できあがるまでの話
恐山さんの速読ソフトを見たときに、まず思ったことは、"非プログラマーでも動くソフトができるんだ"だった。
速読の仕組み自体は元々知っていたので、アプローチ自体には驚きはなかったが、恐山さんがプログラマーではないことは知っていたので、実働するモデルを見て驚いた。
そもそもの速読の話をしよう。
ここで言う速読とは、素早く要点を掴む訓練をし、飛ばし読みによって速く読めるようにすることではない。
読書時間のほとんどの時間は、文字を目で追っている眼球運動なのである。
人間は目でテキストを追うのに労力を使っているため、読む速度に限界があったのである。
つまり実は 脳がテキストを理解できる量 ≠ 目でテキストを認識できる量 というわけである。
なので、眼球運動のロスを低減することによって、脳がテキストを理解できる量の制限を突破し、テキストが速く読めるという理屈である。
そういうわけで、人が目を動かすかわりに、モニターのほうが文字を同じ場所に表示して切り替えてくれれば、人間は内容の理解に集中しているだけでいいのである。
そういうのを高速逐次視覚提示法と呼ぶ。
そういうとソフトはたくさん存在してそうな気がするが、実は欠点がある。
例えば英語であれば、単語で区切って表示すればいい。(spritzがそういうサービスである)
https://www.youtube.com/watch?v=1xxyDVBGHL8
ただし、日本語は単語で区切ると文章の内容を理解するのが難しくなってしまう。
名詞などはわかりやすいが、「が」「の」「と」「を」「で」「は」「に」や動詞とその活用を含めると単純な形態素解析では細かくなりすぎてしまう。
そのため、適切な区切りのアルゴリズムを見つけるのが難しい。
ここではさらに一歩踏み込んで、独自のアルゴリズムで日本語の速読における可読性の問題を解消している。
私の場合は個人的にテキストファイルを読み込ませたかっただけのため、ただ単語が表示されるだけの、眼球運動の補助ツールとして作成しようと思った。
そもそもPythonがよくわかっておらず(画像生成AIをするときにインストールだけはしていた)、そこから始まった。
https://gyazo.com/5bbae69b9648833a2c69eff8dc028be4
https://gyazo.com/38c67e2883ec04c415f7fe3ba9a8c623
https://gyazo.com/4ff24340e8044fc8a784c51a29f4f9b3
こういうやりとりを6時間くらいかけて、完成した。
ChatGPTの有料版には現在3時間に25メッセージまでしか受け付けなく、上限に達するとスマホゲームのスタミナのように時間まで待機してなければいけない。
その時間は仕方なくゼルダをしてた。仕方なくね。
知識0でも動くプロトタイプができるということは感動的な驚きがあり、私は速読アプリを作ったことよりも、何か作りたいプロトタイプが思いついた時にすぐに作れる可能性を手に入れたという方に価値を感じた。
機能
簡素な見た目は一旦置いておく。なぜならコードを見ても、何をいじればなにが変わるのか全く分からず、ChatGPTに説明して作らせるのは、テキスト指示だけでは難しいからである。
https://gyazo.com/36e80e416917f6148e4870f2bb0b2876
左上から順に
読み込みボタン
単語表示数の切り替え
20単語戻るボタン
始めから再生ボタン
スピード調節スライダー
進捗インジケーター
その下
速読テキスト表示エリア
ウィンドウ左側
スタート・ストップボタン
ウィンドウ右側
読み込みテキスト表示エリア
1つずつ説明する。
https://gyazo.com/60eda80108222b5f6fbb3d3f8a563b64
読み込みボタン
クリックするとローカルフォルダにアクセスでき、txtファイルが読み込める。
読み込んだファイルは単語ごとに分割され、下部のテキスト表示エリアに表示されるようになる。
読み込んだテキストファイルはウィンドウ上部にグレーで薄くファイル名が表示されるので、今何を読んでいるかわかる。
なにも読み込まれてない場合はNoDateと表示される。
https://gyazo.com/fe166b58d8f72c7fdf2c63648eb9178c
単語表示数の切り替え
一度に表示する単語数を選択できる。1~3段階あり、1は2単語、2は4単語、3は6単語表示される
個人的には2がちょうどよいような気がする。単語数が少ないと意味を読み取りづらく、多すぎると短い単語と長い単語によって表示される文字数にバラツキがですぎるためである。
https://gyazo.com/93bf1d80f9f52222392f3bc50e330060
20単語戻るボタン
表示中のテキストを20単語分戻す。ストップ中はハイライトが動かないので、どのくらい戻っているかわかりづらい。単語数は100とかもっと戻っても良いかもしれない。そこは使っていく中で要検証。
現状、好きな位置から始められないので、それは課題かもしれない。
https://gyazo.com/2b6199bc290df5f47ea5ebff157c11dc
始めから再生ボタン
始めから再生される
https://gyazo.com/007ef8bd1cf2537ff51e3efad458515c
スピード調節スライダー
表示スピードを調整する。1が最も遅く、9が最も速い設定で、4~5くらいがちょうどよいが訓練を重ねればもっと速くできそうである。
https://gyazo.com/344dd95b3b2b862178406ffd1c3c15a8
進捗インジケーター
テキストファイルが全体のどこまで進んだか、進捗状況を緑のバーで確認できる。緑のバーがいっぱいになると終わり。
https://gyazo.com/addab77b8bac592d361910c1ada814d7
速読テキスト表示エリア
表示単語数に関わらず単語が1単語ずつ更新されるので、電光掲示板風に見える。
実はこれが一番やりたかったことで、この表示は結構読みやすいのではと思っている。
You Tubeのコメントより、ニコニコ動画のコメントのほうが読みやすいみたいな感じである。
また、表示するフォントをUDデジタル教科書体にしているのもポイント。
UDデジタル教科書体は可読性が高いので、速読にも一役買ってくれるのではと考えて採用。
https://gyazo.com/2097900854f627b6d58b37844ec542c6
スタート・ストップボタン
テキストの開始と一時停止をする。space キーを押しても同じ動作をする。
実際、読書中はマウスに手を置いていないので、ショートカットキーを設けた。
https://gyazo.com/344dd95b3b2b862178406ffd1c3c15a8
読み込みテキスト表示エリア
読み込んだテキストをそのまま表示するエリア。
今、速読表示エリアに映し出されている単語に黄色のハイライトが入る仕様で、現在読んでいる場所がわかる。
読み込んだテキストファイルが長くても、枠内にハイライトが入るように自動でスクロールしてくれる。
活用方法
そもそもだが、速読したいようなテキストファイルというものがあるのか?という問題がある。
結局、本を読まなければ、根本の問題は解決してないのではないか?と。
一般的にはそうなのだが、あまり詳しく書かないが、私はKindle書籍をテキストファイル化できるEpubor Ultimateとかいう謎のソフトウェアを買っているので、Kindleで買った本をそのまま活用できる。
あとは裁断してOCRで読み込む自炊みたいなものを代行業者とかに頼むとかでもよい。
気になる方はnoteの記事にも昔載せたので、こちらを参照するとよいかもしれない。 問題は脳の負荷が結構大きいということである。
そんな長時間やれるものでもないので、テキストファイルの分量は5000字くらいで分割したほうがよいかもしれない。
いきなり10万字のテキストファイルを読み込ませても、一息で読みきれない。
また、小説のような娯楽作品はおすすめしない。読むなら知識のキャッチアップとして自分にあった難易度の実用書くらいが適切なように感じる。
まだまだ、自分で試しきれていないので、試行錯誤してみたい。
最後にここまで読んでいただいた感謝も込めて、コードを置いておくので、興味あれば、ご自身のパソコンに読み込ませても良い。
ただし、本当にプログラミングがわからないので、コードの不具合や、インストール方法、その他諸々の知識が必要となることについては質問されても回答できないし、それで被った被害の責任も負えない。
なので、お手元のChatGPTに聞いてください。
本来ならGitHub的なところに置くべきなのだろうが、全くわからないので、Scrapboxに置いておく。