学習教材自動生成パイプライン構築(開発日記 No.109)

に公開

関連リンク

はじめに

昨日はITIL4学習教材自動生成パイプラインの構築に取り組みました。本日は、その過程で発生したIssue #2に対応し、パイプラインのエラー解消と機能改善を目指します。

背景と目的

Issue #2は、ITIL4学習教材自動生成パイプラインの初期設定とcontent-converterの利用方法に関するものです。初期値の誤りや、content-converterの引数設定に不備があり、パイプラインが正常に動作していませんでした。これらの問題を解決し、教材の自動生成を安定させることを目的とします。

検討内容

まず、Issue #2の最新コメントを確認し、指摘されている問題点を洗い出しました。具体的には、current_day.txtの初期値の修正と、content-converterのインストール方法、引数の修正が必要です。また、GitHub Actionsの実行ログを分析し、エラーの原因を特定しました。

実装内容

以下に、具体的な実装内容を示します。

1. Issue #2 の初期値に関する修正

  • security-study/ITIL4-Foundation/current_day.txt の初期値を Issue の最新コメントに基づき 9 から 11 に修正しました。
  • .github/workflows/generate_itil_study_material.yml 内の、current_day.txt が存在しない場合の初期値も 11 に修正しました。

2. content-converter の利用方法に関する修正

  • .github/workflows/generate_itil_study_material.yml にて、content-converter のインストール方法を pip install git+https://github.com/centervil/content-converter.git に修正しました。
  • content-converter のコマンド引数を --prompt "${{ steps.generate_prompt.outputs.GENERATED_PROMPT }}" から --input "security-study/ITIL4-Foundation/00_plan.md" --output "$OUTPUT_FOLDER_PATH/Day${CURRENT_DAY}_ITIL4-Foundation_study.md" --template "$FORMAT_FILE_PATH" --prompt "$PROMPT_FILE_PATH" へと修正しました。
  • プロンプト文字列を直接渡すのではなく、一時ファイルに書き出してそのファイルパスを --prompt に渡すように変更しました。これにより、多行のプロンプトが正しく処理されるようになりました。

3. エラーの解消

上記の修正により、GitHub Actions のパイプライン (実行ログ) で発生していたエラーが解消されました。

技術的なポイント

  • GitHub ActionsのGITHUB_OUTPUTに多行文字列を渡す際に、EOFデリミタを使用することで、特殊文字や改行を含む文字列を正しく処理できるようになりました。
  • content-converterにプロンプト文字列を直接渡すのではなく、一時ファイルに書き出してそのファイルパスを渡すことで、多行のプロンプトを正しく処理できるようになりました。

所感

Issue #2への対応を通して、GitHub Actionsのワークフロー定義や、content-converterの利用方法について深く理解することができました。特に、多行文字列の扱い方や、外部ツールへの引数渡し方など、実践的な知識を得ることができました。エラーが発生した際は、ログを丁寧に分析し、原因を特定することが重要だと改めて感じました。

今後の課題

GitHub Actionsの設定で、リポジトリの Actions > General > Workflow permissions にて Read and write permissions を有効にし、Allow GitHub Actions to create and approve pull requests をチェックする必要があることを確認しました。これにより、自動コミット・プッシュが可能になります。 今後はこの設定を行い、自動化をさらに進めていきたいと考えています。

まとめ

本日は、ITIL4学習教材自動生成パイプライン構築におけるIssue #2に対応し、初期値の修正、content-converterの利用方法の改善、エラーの解消を行いました。これにより、パイプラインの安定性が向上し、教材の自動生成がスムーズに進むようになりました。

GitHubで編集を提案

Discussion