NaNi EXECUTION LAB
プロジェクト計画最適化ツール
TOP / 事例 / プロジェクト計画最適化ツール

業務自動化

プロジェクト計画最適化ツール

会議の文字起こし・タスク一覧・カレンダーを入力するだけで、スケジュール最適化・衝突検出・代替日程提案を自動生成。AIによる要件抽出とクリティカルパス計算を組み合わせたStreamlitアプリ。

PythonStreamlitAIスケジューリングクリティカルパス業務効率化

🌐 ライブデモ

🚀 今すぐブラウザで試す
📦 GitHub リポジトリ

Streamlit Community Cloud で常時稼働中。インストール不要・ブラウザから即アクセス可能。 サンプルデータ(会議文字起こし・タスク一覧・カレンダー)が同梱されているので、ログインなしで全機能を試せます。


背景

プロジェクト管理の現場では「会議で決まったことを手動でタスク管理ツールに転記する」「スケジュールの衝突に気づかず後から手直し」という作業が慢性的に発生する。

特に複数プロジェクトを掛け持ちするメンバーが多い環境では、誰かの予定変更が連鎖的に他のタスクに影響するにも関わらず、それを把握するのは手動では限界がある。

このツールは「会議 → タスク更新 → スケジュール最適化」の一連の流れを自動化し、プロジェクトリーダーの判断作業を支援する。


できること

機能説明
【コア機能】
要件抽出(ルールベース)会議文字起こしからキーワードでタスク・宿題・決定事項・会議候補を自動分類
要件抽出(AI)OpenAI / GitHub Copilot APIで文脈を理解した高精度な自然言語抽出
スケジュール最適化タスクの依存関係からクリティカルパスを算出、最短完了経路を可視化
衝突検出メンバーの休暇・会議重複を自動検出してアラート
代替日程提案衝突タスクに対して実行可能な代替スケジュールを自動生成
遅延予測進捗率・経過日数から完了予測日を算出
【UI・操作機能】
Ganttチャート(ドラッグ対応)タスクをドラッグで動かしてスケジュールを直感的に編集
提案の承認/却下確信度付きの提案を1件ずつUIで承認または却下
ボトルネック検出保留・遅延・ブロック中のタスクを自動ハイライト
Excel入出力非エンジニアでも使えるExcelフォーマットでの入出力

技術構成

project-optimizer/
├── app.py              # 1,336行:Streamlit UI エントリポイント
├── src/
│   ├── extractor.py    # ルールベース要件抽出
│   ├── ai_extractor.py # AI(Copilot/OpenAI)要件抽出
│   ├── matcher.py      # タスク×カレンダーの衝突検出
│   ├── optimizer.py    # タスク更新判定・確信度・ボトルネック分析
│   ├── scheduler.py    # クリティカルパス・代替日程・遅延予測
│   └── exporter.py     # Excel/JSON出力
├── components/
│   └── gantt_editor/   # ドラッグ可能カスタムGanttコンポーネント
├── tests/              # 52テスト(6ファイル)
└── data/
    ├── project.json           # タスク定義
    ├── calendar_mock.json     # カレンダーデータ
    ├── transcript.txt         # 会議文字起こしサンプル
    └── project_template.xlsx  # Excel入力テンプレート

合計: 2,425行のPythonコード(約3週間で構築)+ 52件の自動テスト(カバレッジ対象: 抽出・スケジュール・衝突検出の主要ロジック)


処理フロー

① 入力
   会議文字起こし(.txt)
   タスク一覧(.json / .xlsx)
   カレンダー(.json)

② 要件抽出
   ルールベース:キーワードマッチ
   AI方式:自然言語理解 → 宿題/保留/決定/会議候補に分類

③ 分析
   クリティカルパス計算
   衝突検出(休暇・会議重複)
   遅延予測・ボトルネック特定

④ 最適化提案(確信度スコア付き)
   代替スケジュール案
   タスク更新案
   会議候補日程

⑤ 承認/却下 → Excel/JSON出力

実装のポイント

ルールベースとAIの切り替え

要件抽出には2つの方式を実装し、用途に応じて選択できる設計にした。

# ルールベース(高速・低コスト)
results = extract(transcript_text)

# AI方式(高精度・API必要)
results = ai_extract(transcript_text, api_key=key)

ルールベースは「宿題」「〜してください」「確認します」などのキーワードパターンで分類。AIは文脈を理解して「明示されていないが次のアクションが発生する発言」も抽出できる。

クリティカルパス算出

タスクの依存関係をDAG(有向非循環グラフ)として構築し、最長経路を動的計画法で算出。

def calc_critical_path(tasks: list[Task]) -> list[str]:
    # 依存関係グラフ構築 → トポロジカルソート → 最早・最遅完了時刻算出
    # → CP上のタスクID一覧を返す

CPタスクはUIで赤くハイライトされ、遅延が全体に影響することを視覚的に示す。

ドラッグ可能Ganttチャート

Streamlitのカスタムコンポーネント機能を使い、React製のGanttエディタを組み込んだ。タスクをドラッグして日程を変更すると、リアルタイムで依存タスクへの影響が反映される。


効果

作業従来の工数ツール導入後削減率
会議議事録からのタスク起こし30〜60分/回2〜5分90%
スケジュール衝突の確認15〜30分/週即時自動検出95%
代替日程の検討30〜60分/件5〜10分85%
Gantt更新作業20〜40分/回ドラッグ操作のみ80%

※ 数値は社内プロジェクトリーダー3名へのヒアリングに基づく推計値。


技術選定の理由

▸ このプロジェクトで使ったリソース
🤖 使ったAIツール
📚 関連学習
製造DX学習ロードマップ(16週)→ 関連ブログ記事を探す →
📖 関連用語
PythonStreamlitAIスケジューリングクリティカルパス業務効率化
同様の課題をお持ちの方へ

この事例と同様の課題についてご相談いただけます。
現場の状況に合わせた改善アプローチをご提案します。

お問い合わせ →

関連事例

ダッシュボード統合管理システム
データ可視化
設計変更通知の自動化
プロセス自動化
← 事例一覧へ戻る