春告げ抹茶ホイップ

論文収集プログラム「carrel.」を作った

少し前に「carrel.」というアプリをコーディングエージェントを使って開発した。 論文の管理と翻訳と LLM との議論が行えるアプリである。 ちょっと前に作ったブログ執筆アプリ[1]、クレカ使用量確認アプリ[2]に引き続き、AI コーディングエージェントに書かせたアプリシリーズの記事の 3 本目である。

今回の記事ではせっかく作ったので、このアプリを軽く紹介してみる。


アプリの立ち位置

仕事上、論文をたくさん読まないといけないが、それを便利にするための自分用のアプリという位置づけ。 英語の論文はもちろんちゃんと読もうと思えば読めるが多数の論文をザッピングしたりする際に英語より日本語になっていた方が明らかに頭に入る情報が多かったりというので日本語でアブストが眺められると便利だなあと。 また、論文の内容について議論したり質問する際に pdf を ChatGPT に貼り付けていたが、毎回関連する論文群を貼り付けるのは地味に面倒でもあった。 また、議論の記録がローカルには残らないで ChatGPT のサーバーにのみ存在するのも若干気になるところだったので、ローカルに markdown などで議論のチャット履歴を残しつつ会話できると良いなと。

ChatGPT の出しているコーディングエージェントの Codex は自作のアプリに Codex を組み込むための Codex App Server や Codex SDK を提供している。 これは ChatGPT のサブスクについてくる Codex の使用量を使うことも可能であるようだ。 そのため、API で ChatGPT を使うのと異なりチャットを投げるたびに API 利用料がかからず定額のサブスクリプションの範囲内で自作アプリに Codex によるチャットを組み込める。 これを使ってローカルで論文について議論するためのアプリを作った。


アプリのできること

このアプリでは最初に論文を取り込むことで、図や数式なども取り込んだ markdown として保存し、日本語訳も markdown として保存される。 arXiv の cs.GR のグラフィクスの論文のフィードもあり、そこから論文を手軽に取り込むことも可能だ。

取り込んだ論文は全文についてベクトル埋め込みを作ってあり、ベクトル検索で自由入力から論文を検索することもできる。

取り込んだ論文は markdown になっていて、アプリ内には markdown のビューワーも付いているので、そのまま取り込んだ論文の英語原文や日本語訳をその場で読める。

また、チャット機能があり Codex とチャットをして論文の内容について議論したりできる。 取り込んだ論文には 20XX-hoge-fuga のような slug が与えられており、この slug をチャットで @20XX-hoge-fuga と入力することでこの論文を参照させる仕組みもある。 この @slug がチャットに渡されたら、Codex は裏で MCP サーバーを利用してその指定された論文を読むなどの処理を発行できるし、その論文の参照している論文なども引っ張ってきてそれを読むなどの処理も発行できる。

論文取り込みを発行する MCP のコマンドも用意されているので、Codex に Web サーチで関連する論文を網羅的に探してそれらを全部取り込みしておくようにチャットで指示すると、関連する論文を取り込んでくれたりもする。

以下、スクリーンショットである。

左に取り込んだ論文の一覧、右側にチャットの内容が表示されている。

過去のチャットはリストになって保存されている。

ベクトル検索に対応しており、自由入力で取り込み済み論文を絞り込める。

論文本文の和訳済み markdown を左側で見つつ、右側でその内容について Codex のチャットに質問したりできる。 質問に対して、論文内の図なども引用しながら AI に回答をしてもらうことも可能だ。

論文の取り込みは左の画面のように可視化されている。 数式の取り込みの誤りを正したり、本文全文の和訳を作ったりするので、取り込みには 1 本あたり数分かかったりはする。


このアプリを使い始めて 2~3 週間だが、割と便利には使えている。 別に読もうと思えば私でも英語の論文も読めるが、やはり日本語になっているとよりサクサクと内容を掴んで読めるのでプライドを捨てて AI に翻訳してもらうフローを作ってしまったのは論文を読む効率という意味では悪くなかったかなとは思う。 ただ、このままどこまで AI に任せて自分が堕落していってしまうのかは怖くはあるが。

GitHub 上にソースコードは公開してある。

このアプリは完全に私の自分の環境用に作られておりパスなども私の環境に合わせて埋め込まれている気がするので、使う場合は色々編集が必要になるだろう。 clone した後に自分の環境に合わせて変更するようにコーディングエージェントに頼むと良いかもしれない。

開発に当たっては Claude Code の Opus 5 を利用した。 Fable 5 を使っても良かったのだが、Opus 5 の実力を知りたかったということで。 開発の際に自分用の開発フローを強制するエージェント用のハーネスも作って開発を進めたのだが、そのハーネスを使った AI での開発についてはまた別の記事にしようと思う。

Series

References

  1. 1. ブログ執筆アプリを用意した
  2. 2. お金を使いすぎるのが得意な話

Cited By