知識グラフ駆動型Redmineチケットシステム

<a href="https://it.blogmura.com/ranking/in?p_cid=11119283" target="_blank"><img src="https://b.blogmura.com/it/88_31.gif" width="88" height="31" border="0" alt="にほんブログ村 IT技術ブログへ" /></a><br />
この３か月ばかりアフェリエイト収入目当ての嘘っぱちブログを書いてきた。

https://qiita.com/EasyCording/items/31c9f73c871e936a2869


別にこれはこれで、自分では間違っていないと思っているし、少しはブログとしての価値も高まったとは思う（それだけ、過去のブログ記事は酷かった・・・）

しかしながら、最近になってやはりブログと言うものは、ある意味、自分にとっての鏡のような存在であり、やはりコンテンツとしての存在について考え直した方が良いと思っている。
# ブログの価値

ブログの価値を平たく絵にしてみると、下記のようなものである。
つまり、これからの時代は検索エンジンなり生成ＡＩを使えば、最もそれらしい答えが得られるので、わざわざ他人のブログに情報を求める必要性は少ないのである。
それよりも、やはり人の歩んだ道をトレースしたり、参考にしたりして、自分の成長に役立つ情報としての価値が今後は求められる（さすがにここは、ＡＩは人間じゃないので・・・）

```plantuml
@startuml
actor ブログ読者 as reader
entity 魅力あるブログ as blog
entity ストーリー性と洞察 as story
entity 思考と経験 as experience
entity 結論ベースのブログ as aiBlog
actor ブロガー as blogger
entity AIツール as ai

reader --> blog : 共感
reader --> aiBlog : 情報

blog --|> story : 洞察
blog --|> experience : 深み

blogger --> story : 洞察を提供
blogger --> experience : 経験を共有

ai --> aiBlog : 自動生成

note right of blog
  魅力あるブログ
  ストーリーと経験
end note

note left of aiBlog
  結論ベースブログ
  情報重視
end note
@enduml
```

# 現状
いったんリリースしたブログであるが、そこそこのアクセス数を確保できたし、自分が買い物するときにちょっとしたポイントが手に入るので、少しは家計に役立っている。それに加えて、Youtubeのアクセス数も増えたりして、非常に薄っすらであるが、手がけている工数とのトレードオフで考えれば、まあ息抜き程度の娯楽としては満足している。

https://ameblo.jp/motochan1969

# 本題
ここからが本題であるが、やはり自分の内面と、自分の外面というのは表裏一体だということである。
つまり、これまで追求してきた、個人でのREDMINEによるタスク管理と、ブログでの情報発信は別のシステムではなくて、統合された一つのシステムであるべきだと気づくようになった。これまで霧の中で作り上げてきた構想が、ようやく霧が晴れて全容が見えてきたかのような発見である。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212914/b6d0aac7-a464-2cbf-8692-3f42b674d420.png)

# フローチャート

以下に目指すべき全体フローチャートを示す。
それぞれの要素の意味とこれがもたらす効果、従来との差異について解説する。

---

### 構成の説明

1. **Input（入力ソース）**
   - `つぶやき/短文`、`日常的な記録`、`アイデアメモ`などの多様な情報を入力ソースとしています。
   - **目的**：日々生まれる短いメモや記録を一箇所に集め、AIに処理させること。

2. **AI_Processing（AI処理レイヤー）**
   - **テキスト分析エンジン**: 入力情報を解析するためのエンジン。
   - **タスク分類エンジン**: 情報をタスクに分類し、優先度や実行計画を決定する。
   - **コンテンツ生成エンジン**: 解析した情報から新しいコンテンツ（記事、ストーリー、レポートなど）を自動生成する。

3. **Task_Management（タスク管理自動化）**
   - **タスク抽出**: テキストから実行するべきタスクを自動的に抽出。
   - **優先度判定**: タスクの緊急度や重要度を評価。
   - **行動計画生成**: タスクに基づいた具体的なアクションプランを作成。

4. **Content_Generation（コンテンツ自動生成）**
   - **感情/意図分析**: テキストの感情や意図を理解し、適切な表現を選択。
   - **ストーリー展開**: 読み手を惹きつけるようなストーリーを構成。
   - **情報拡充/RAG（Retrieval-Augmented Generation）**: 外部情報を取得して、より深みのあるコンテンツを生成。

```mermaid

flowchart TD
    subgraph Input["入力ソース"]
        A1[つぶやき/短文] --> B1
        A2[日常的な記録] --> B1
        A3[アイデアメモ] --> B1
    end

    subgraph AI_Processing["AI処理レイヤー"]
        B1[テキスト分析エンジン]
        B2[タスク分類エンジン]
        B3[コンテンツ生成エンジン]
        
        B1 --> B2
        B1 --> B3
        
        subgraph Task_Management["タスク管理自動化"]
            C1[タスク抽出]
            C2[優先度判定]
            C3[行動計画生成]
            
            B2 --> C1
            C1 --> C2
            C2 --> C3
        end
        
        subgraph Content_Generation["コンテンツ自動生成"]
            D1[感情/意図分析]
            D2[ストーリー展開]
            D3[情報拡充/RAG]
            
            B3 --> D1
            D1 --> D2
            D2 --> D3
        end
    end

    subgraph Output["出力/活用"]
        E1[REDMINE自動チケット]
        E2[行動レシピ]
        E3[ブログ記事]
        E4[アフィリエイト連携]
        
        C3 --> E1
        C3 --> E2
        D3 --> E3
        E3 --> E4
    end

    style Input fill:#e6f3ff,stroke:#333,stroke-width:2px
    style AI_Processing fill:#f0fff0,stroke:#333,stroke-width:2px
    style Task_Management fill:#fff0f0,stroke:#333,stroke-width:2px
    style Content_Generation fill:#f5f5f5,stroke:#333,stroke-width:2px
    style Output fill:#fff5e6,stroke:#333,stroke-width:2px
    
```

# 効果と従来との違い

少なくとも、これまでのタスク管理や、コンテンツ生成はＡＩに任せて、自分は入力ソースを与えるための人間界との情報収集のインターフェース、行動のためのアクチュエーターに徹するという、最終的に自分自身がアンドロイドではないかと錯覚してしまう・・・

```mermaid
flowchart LR
    subgraph 従来["従来システム"]
        H[人間] --> T1[思考] --> T2[判断] --> T3[創作]
    end

    subgraph 新システム["新しい共生システム"]
        subgraph 人間["Human Interface"]
            S[感覚器官<br>・情報収集<br>・感性判断] --> A[行動機関<br>・実行<br>・表現]
        end
        
        subgraph AI["AI Processing"]
            P1[データ処理] --> P2[意思決定] --> P3[生成]
        end
        
        S --> P1
        P3 --> A
    end

    従来 --> 新システム

    style 従来 fill:#f5f5f5,stroke:#333
    style 新システム fill:#e6f3ff,stroke:#333
    style 人間 fill:#ffe6e6,stroke:#333
    style AI fill:#e6ffe6,stroke:#333
    
```

# まとめ
いったんシステム設計の構想は、こんな感じとなった。いままでバラバラで取り組んでいた内容が、ついに一つのシステムとしてまとめる段階に来た。ぼちぼちと、これらのシステムについて構想を具現化していきたいと思う。

```plantuml
@startuml
skinparam backgroundColor #FFFFFF
skinparam sequence {
    ArrowColor #333333
    ActorBorderColor #333333
    LifeLineBorderColor #333333
    ParticipantBorderColor #333333
    ParticipantBackgroundColor #EEEEEE
}

actor Human
participant "LINE\nBot" as Line #98FF98
participant "Google AI Studio" as GAS #87CEEB
participant "Webhook\nBridge" as Bridge #FFB6C1
participant "Redmine" as Redmine #FF6B6B
participant "WordPress" as WP #4169E1

== 1. 日常的な入力フェーズ ==
Human -> Line: つぶやき/会話
Human -> Line: 音声メモ
Human -> Line: 画像/写真
activate Line

Line -> GAS: テキストデータ送信
activate GAS
GAS --> Line: 受信確認

== 2. AI解析フェーズ ==
GAS -> GAS: テキスト解析
GAS -> GAS: 感情/意図分析
GAS -> GAS: タスク抽出
GAS -> GAS: コンテンツ企画生成

== 3. タスク管理フェーズ ==
GAS -> Bridge: タスクデータ送信
activate Bridge
Bridge -> Redmine: チケット生成リクエスト
activate Redmine
Redmine -> Redmine: チケット作成
Redmine -> Redmine: 優先度設定
Redmine -> Redmine: 期限設定
Redmine --> Bridge: チケット作成完了
Bridge --> GAS: タスク登録完了

== 4. コンテンツ生成フェーズ ==
GAS -> Bridge: コンテンツデータ送信
Bridge -> WP: 記事下書き生成
activate WP
WP -> WP: メディア最適化
WP -> WP: SEO調整
WP -> WP: 投稿スケジュール設定
WP --> Bridge: 下書き保存完了

== 5. フィードバックフェーズ ==
Bridge -> Line: タスク作成通知
Bridge -> Line: 記事下書き完了通知
Line -> Human: 統合結果通知

== 6. アクション確認フェーズ ==
Human -> Line: 確認/修正指示
Line -> GAS: フィードバック処理
GAS -> Bridge: 更新指示
Bridge -> Redmine: タスク更新
Bridge -> WP: コンテンツ更新

deactivate WP
deactivate Redmine
deactivate Bridge
deactivate GAS
deactivate Line

@enduml
```