就活の情報収集を自動化する、自走型AIエージェントの開発記録。
コードを書く力と公式ドキュメントを自力で読む力を、ゼロから鍛えながら作っています。
Session 0|なぜ作るのか
情報収集なんて、人でやるもんか!!
契機
- 就活の企業リサーチに膨大な時間を消耗していた。Pythonを学ぶ時間も取れず、バランスを失っていた。
- 同じ作業を延々と繰り返すことへの違和感。
- 「じゃあ、その情報収集自体をAIエージェントに丸投げして自動化すればいい」という発想の転換。
目標
APIを利用し、安全なシステム環境で就活情報の収集を自動化すること。
その先の構想
このプロジェクトが成功したら、以前学んだ Python × SQL のスキルと接続し、
「Agentによる情報収集 → 整理・洗い出し → Python ScriptによるMySQLデータベースへの保存」までを、
一貫した業務プロセスとして組み上げる。
設計思想(初日に決めたこと)
作る前から、単に「動けばいい」ではなく「安全に、暴走させずに動かす」ことを軸に据えた。
懸念対策
AIの暴走・バグ
Docker隔離環境で実行し、Macの環境を守る
無限思考ループ
max_iterations で最大ループ回数を制限する安全弁を必ず入れる
APIキーの漏洩
コードに直書きせず .env に隔離し、環境変数として注入する
ログイン壁
アカウント情報をScript側に保持させ、ブラウザ操作を指示する
この記録に込めた哲学
仕様がごろごろ変わる今の時代では、自ら公式の一次情報を探し、常に最新の知識を持たないとすぐ時代遅れになる。AIすらそうなのだから、人も然り。
だからこのプロジェクトでは、AIに答えを書かせて終わりにせず、
自力でコードを書く力と公式ドキュメントを読み、最新の変更に追従し続ける力を鍛えることを最優先にしている。
🗺️ ロードマップ(開発フェーズ)
プロダクト完成までの工程。大きな地図なので頻繁には変わらない。
フェーズ状態
1
基礎習得 — dict / list / 関数 / requests / try-except を実地で使えるようにする
🟡 進行中
2
Tool自作 & エージェント統合 — 自作関数を @tool 化し、create_agent でLLMと統合
✅ 完了
3
実用スクレイピング — 実在サイトから情報抽出(JSON-LD / フォールバック設計)
🟡 進行中
4
安全環境の構築 — Docker隔離、.envによるキー管理、ループ制限
⬜ 未着手
5
本番運用 — 24時間稼働 + Python ScriptでMySQLへ保存
⬜ 未着手
凡例:✅ 完了 / 🟡 進行中 / ⬜ 未着手
✅ 学習セッション・ログ
実際の歩み。セッションを終えるたびに更新する。
左の「予定」に対して、右の「実際」がどれだけ膨らんだか —— それが立ち止まって深掘りした証拠。
Session 1|関数の自作から「LLM × Tool」の理解まで(5/27)
- 完了
予定実際にやったこと(派生・深掘り含む)
関数(def)を理解し、dictを返すツールを書く
書いた
→ 「def は書式を変えるのか?」と問い直し
→ インターフェース(外枠)と実装(中身)の分離に到達
@tool でLangChainのツールにする
docstring必須エラーを踏んで理解
→ さらに「なぜLLMが動く?」「ループはどこにある?」と問い、3者の関係(Python/LangChain/LLM)とReActループの所在まで到達
Session 2|Step 5 全体統合 → ローカル環境への移行(5/30)
- 完了
予定実際にやったこと
Toolをエージェントに統合して動かす
統合して動作
→ ダミーデータをわざと壊す実験
→ Garbage In, Garbage Outを体感
クラウドAPIで動かす
429レート制限に直面 → 自力で原因を読解
→ ローカルLLM(Gemma 4 26B)への移行を自分で決断
—
(派生)「自分は最初からLLMを前提にPythonを読んでいる」というPython観の言語化
Session 3|Webスクレイピングツールの自作(6/1)
- 完了
予定実際にやったこと
requests + BeautifulSoup でサイトのテキストを抽出する
公式ドキュメントを自力で泳ぎ、QuickstartからAPIリファレンスまで自力で潜って関数を発見
抽出したテキストをAgentに渡す
取れない
→ 「なぜAgentは見つけない?」と急がず問い直し
→ JS動的生成の壁を理解
→ JSON-LDの発見
→ フォールバック・アーキテクチャの設計まで到達
📁 各セッションの詳細な学習ノートは
/notesに格納(時系列ログ+知識分類の2部構成)。
🎯 踏みたい訓練課題
完成品には直接使わないが、ブラックボックスの中身を理解して自走力を上げるための自己課題。
- 基礎4武器の習得 — dict/list・関数と型ヒント・requests・try/except を単体で自在に書けるようにする
- 公式ドキュメントの「破壊」訓練 — 動くコードの引数を消す・変数名を変えるなど、わざとエラーを出してシステムの骨格を体で理解する
- LangChainを「使わずに」ミニチャットアプリを作る(車輪の再発明)
→ Pythonの標準機能とrequestsだけで「入力 → Gemini API → 返答 → ループ」を自作する。
whileループの中で会話履歴をlistで毎回送り直す必要があることを通じて、LLMのステートレスな性質を根本から理解する。 - RAG(tool)の研究
- Mom0(tool)の研究
🛠️ 技術スタック
Python LangChain Ollama (Gemma 4 26B) requests BeautifulSoup Google Colab(実験)→ VS Code(開発)→ Docker(予定) Git / GitHub
API構成:Gemini API(クラウド・実験用)と ローカルLLM(Ollama)を、コード数行で切り替え可能。
📌 開発スタイル
- 実験: Google Colab + 無料のGemini API でロジックを動かす
- 開発: VS Code + Docker で、安全な自動化システムを組む
- (オプション)本番: クラウドで24時間運用
このリポジトリは「完成品の展示」ではなく、「ゼロから学び、自走できるエンジニアになっていく過程」の記録です。