Content-Converterリポジトリ作成と基本構造構築(開発日記 No.082)
関連リンク
はじめに
昨日は既存プロジェクトの調整を行いましたが、今日は気分を新たに、Content-Converterの新しいリポジトリ作成に取り組みます。仕様書を元に、ZennやNote.comなど様々なプラットフォームに対応できる変換ツールを構築していきます。
背景と目的
これまでDiary-ConverterやNote-Converterといった個別のツールを使っていましたが、これらを統合し、より汎用的な変換ツールとしてContent-Converterを開発することになりました。複数のLLM APIをサポートし、様々なプラットフォームに対応できる拡張性の高い構造を目指します。
検討内容
まずは、リポジトリの構成をどうするか検討しました。Pythonのパッケージ構造を基本とし、コアモジュール、LLMモジュール、プラットフォーム連携モジュールなどを配置することに。OASISとの連携も視野に入れ、モジュール構成を練りました。また、CLIインターフェースを実装することで、手軽に利用できるようにすることも考慮しました。
実装内容
まず、/home/centervil/repos/Content-Converter
に新しいディレクトリを作成し、Gitリポジトリを初期化しました。次に、rules-common/scripts/setup_rules_common.sh
を使って初期セットアップを行おうとしたところ、スクリプトがリポジトリのルートで実行されることを思い出しました。
そこで、スクリプトをContent-Converterディレクトリにコピーし、修正を加えてから実行。スクリプト中の不要なテキスト "rules" を修正する必要がありました。
セットアップが完了した後、以下の基本的なプロジェクト構造を作成しました。
- READMEファイル
- 必要な依存関係ファイル (
requirements.txt
,requirements-optional.txt
,requirements-dev.txt
) - Pythonパッケージ構造 (
content_converter
) - コアモジュール、LLMモジュール、プラットフォーム連携(Zenn, note.com)モジュール
- OASISとの連携モジュール
- ファクトリークラスとコンバータークラス実装
- CLIインターフェイス実装
- テスト関連ファイル
- サンプルマークダウンファイル
- CI/CDの設定ファイル
- ライセンスファイル、.gitignoreファイル
最後に、これらのファイルを全てコミットしました。
技術的なポイント
今回の実装で特に重要だったのは、拡張性の高いモジュール構造を設計した点です。将来的に新しいプラットフォームやLLM APIを追加することを考慮し、疎結合な設計を心がけました。また、ファクトリークラスとコンバータークラスを実装することで、様々な変換処理を柔軟に追加できるようにしました。
所感
新しいリポジトリをゼロから構築するのは、いつもワクワクします。今回は、既存のツールを統合するという目的があったので、より汎用的な設計を意識しました。特に、モジュール構造を考えるのが難しかったですが、将来の拡張性を考えると、非常に重要な部分だと感じています。セットアップスクリプトの実行場所を間違えるという凡ミスもありましたが、無事にリポジトリの初期構築を終えることができて、一安心です。
今後の課題
今回はリポジトリの初期構築がメインでしたが、今後は各モジュールの具体的な実装を進めていく必要があります。特に、LLM連携モジュールやプラットフォーム連携モジュールは、APIの仕様を理解する必要があるので、しっかりと調査しながら進めていきたいと思います。また、テスト環境の整備も重要です。
まとめ
今日は、Content-Converterプロジェクトの新しいリポジトリを作成し、基本的なプロジェクト構造を構築しました。マークダウンテキストを様々な公開プラットフォーム向けに変換するツールの基盤を構築することができました。今後は、各モジュールの実装を進め、より実用的なツールにしていきたいと思います。
Discussion