✨

Geminiを相棒に、ローカルLLM×Ollamaで完全オフライン校正アプリを1週間で作って学んだこと

に公開

はじめに

AI技術の進歩が速すぎて、今何が流行っているのかすらも分からず
結局対話型AIしか使っていない、そこらへんにいる人です🐱

そんな私が対話型AIと一緒にローカルLLMで文章を校正するアプリを一週間で
完成させることができたため道のりを書きました。ご参考になれば幸いです。

初投稿なので粗は多めですが、ご容赦ください。

アプリを作ることになったきっかけ

秋口に買ったノートパソコンで、私は趣味範囲で楽しくCakePHPのWEBアプリを作っていました。
対話型AIで一部のソースを出力してもらったりもしていました。
便利だと思ういっぽう、開発が少しずつしか進められないせいか
モチベーションの維持がとても難しかったです・・・🐧

WEBアプリの開発がひと段落して落ち着いた頃に私は思いました。
「なんとなくAIにしっかりと触れていない気がする。これはエンジニアとしてどうなのか。」
と悩み始め、ある疑問が思い浮かびました。
今まで手作業でやってきたことをなるべくAIに任せたらどのくらい楽になるのだろうか🤔
そこで試しに新規アプリを作成することにしました。

どんなものを作るのかを考えた

今回はタイトルにある通り、「ローカルLLMで文章を校正するアプリ」を作ることにしました。
どのようなアプリかというと、簡単に言えば

機密情報などの外部に送信したくない文章をローカル環境で校正してくれるアプリ

です。
機密情報を外部に漏らさず自分が書いたルールに従って文章を校正してくれるのは
役立つのではないかと思った次第です。

そしてモチベーションを保つために、なるべくスピーディーに開発ができるようにすることを念頭に、次のステップとして技術選定をしました。

開発環境と技術選定🫛

開発環境

参考程度に簡単に開発PC環境を記載します。

項目 内容
OS Windows 11
CPU Intel Core Ultra 5 225H
RAM 16GB
AIコードエディタ Cursor(Free)
対話型AI Gemini(Pro)

技術

とにかく開発スピードを上げることと、できるだけAIに触れたいという点を重視しました。

項目 内容 説明
Flutter Ver3.38.5 実務では使った実績はありませんが、個人開発として使うのは2回目です。
iOS、Android、Web、デスクトップのアプリを単一のコードベースから高速に開発できます。
Dart Ver3.10.4 Flutterはフレームワークであり、言語自体はDartです。
AI Engine Ollama アプリからローカルのAPI経由で、ダウンロードしたLLMモデルを利用するためのアプリケーションです。単体としても便利そうです。
LLM Model Gemma 3:4B ローカルにダウンロードするモデル。3GBぐらいあります。
とりあえずGeminiに勧められるまま使いましたが、Qwenの方が校正の精度が高いという情報があるので変更して試す予定です🫩
精度を比較した記事をあげるかもしれません。

役割分担を決めて実際に開発を行う

AIのなかでも設計とコーディングはGeminiに任せて、
リファクタリングはCursorに任せることにしました。

開発工程 誰がするか 説明
基本設計 Gemini(Pro) 機能を洗い出す工程で、Geminiからも便利そうな機能を提案してもらう。
詳細設計 Gemini(Pro) 機能について、「このボタンを押下したらこうなる」など細かな仕様を考えて、AIには仕様についての矛盾や漏れを指摘してもらい解消していく。
最後に機能と仕様について、細かく箇条書きで書いてもらい、漏れがなければそのままエクセルにアプリについての概要と設計を出力してもらう。
開発 Gemini(Pro) / Cursor 基本的な実装はGemini(Pro)に任せて、私は実装してもらった内容について、仕様の漏れがないか、ソースを確認する。
ときどきCursorにソースのリファクタリングを実施してもらう。
今回リファクタリングは一度だけだった。
テスト 人間 今回はあくまで個人的な技術調査と検証であったため、
テストは簡単に実施する程度とした。実際に運用する場合はもっと精度を高める。機会があればテストもAIに任せたい。

本当は細かい開発工程を書きたかったのですが、文章量が多くなったため
どこかのタイミングで別記事としてアップします・・・🤦‍♂️

完成したアプリ🎉

一週間で開発完了まで辿り着けました。総合テストは未実施ですが・・・
仕事もありましたので実際はもっと短い期間でできたかもしれません。
おそらくAIを使わずに一人ですべて行ったら、少なくとも2ヵ月はかかっていたと思います。

メイン画面

  • 自然な文章かどうかはおいておいて、結構修正してくれていますね。
  • オフライン状態でも正常に動作します。
  • 右上の「マイルール設定」で、オリジナルの校正ルールをモデルに共有することができます。
  • テキストファイルはもちろん、Excel、PDF、Wordファイルも校正対象として読み込めます。

他にも保存機能やどのような校正トーンにするかなどの機能がありますが、今回はあくまでも
完成までの道のりを書きたかったのでここでは割愛させていただきます。

適性診断機能

ローカルにモデルをダウンロードし、利用するためそれなりの負荷がかかります。
このため、ローカルで使える環境かをチェックする機能も搭載しました。
インストール時にチェックするのもありかと思いましたが、
今回の趣旨からは少しずれてしまうのでアプリ内でチェックすることにしました。

※メモリは16GB積んでいますが利用できる分を取得しているため⚠️が表示されています。修正します。

結果✏️

良かった点、感じたこと

  • 設計からソースコーディングまで基本はすべてAIに任せました。
    そのおかげでモチベーションを保ったまま完成まで持って行けたことは大きなメリットだなと思いました。
  • 機能を考えるとき、AIからも仕様についての矛盾や、この機能はどうか?などの提案も
    あったため、想定以上に完成度の高いアプリができました。
  • 仕事上では限られた場面でしかAIを利用することができませんでしたが
    今回は思い切っていろいろと使えたので楽しかったです!
    どのようなプロンプトを投げたら思った返しがくるのかを考えさせられる機会を得られました。
  • AIコードエディタの威力が予想以上で大変驚きました。
    プロンプトをしっかり書いてリファクタリングをさせたら、かなりしっかり作ってくれたので感動しました。なにをどう変えたのかの把握に時間がかかりましたが・・・

悪かった点、課題

  • スピーディーに開発を進めることができたため、休むタイミングを見失いました。
    延々と開発ができるため、あれもこれもと欲張り続けた結果、
    ちょっとしんどくなった瞬間もありました😞
  • 悪い意味で考える機会がなくなり、上手な指示さえすればコードの内容も完全に把握せずとも
    完成まで持っていけます。ある程度実装経験を積んでいる方にとっては効率的と割り切ってもいいかもしれませんが、全くわからずにリリースまで進めることは非常に危険だと感じました。保守のことも考えソースをしっかり把握する時間を設ける必要がありそうです。
  • 対話型AIで設計やコーディングを実施したため、途中でAIが仕様を忘れたり
    ソースの実装内容を忘れたりするため、リマインドのような作業が時々発生しました。
    「メインの開発をするチャネル」「開発にかかわる細かい質問をするチャネル」と
    分けるべきだったかもしれません。

まとめ

新しいAI技術にたくさん触れられたかというと微妙ですが、
対話型AIで設計から開発までふんだんにAIを使えた気がします。
プロンプトの仕方がキーになることを実感し、しっかり考えるべきだと思いました。
チャネルはメイン開発と仕様に関する相談などに細かく分けるべきだと思いました。

すでにあるのかもしれませんが、Gitみたいにブランチで
チャットを分けていくことができたらいいなと思いました。

また、校正アプリについては精度はまぁまぁといったところで8割ぐらいは良い感じに校正してくれますが、たまに不自然な文章に生まれ変わったりするのでまだまだ改善の余地はありそうです。
折角ここまでできたので、改善すべきところを解消してからアプリを配布までやり切りたいと思います!

今後🍀

このアプリを作るうえで他にも苦労した点や開発手順を細かく書いていたら
大量の文章になったのでざっくりと書きました。
細かい部分については今後別記事として書こうと思います。

また、実はこのアプリを作成する前にもう1つ作成していました。
それも別記事で紹介する予定です。

本稿の内容が、設計や実装を考える際の参考になれば幸いです。

Discussion