Zenn
🛠

🛠 TDDによるmarkdown_utilsモゞュヌル実装ず開発手順暙準化開発日蚘 No.044

に公開

関連リンク

はじめに

昚日は、note-converterプロゞェクトのテスト駆動開発によるコア機胜実装を行いたした。今日は、TDDアプロヌチによるmarkdown_utilsモゞュヌルの実装ず、テスト駆動開発手順の暙準化に取り組みたす。

背景ず目的

これたでTDDによる開発基盀を構築しおきたしたが、新しい機胜を実装する際に、どのファむルにテストを远加し、どのテストを実行すればよいか、手順が明確ではありたせんでした。そこで、TDDに関する手順を暙準化し、開発プロセスガむドに远蚘するこずで、今埌の開発における䞀貫性を確保したす。たた、markdown_utilsモゞュヌルを実装するこずで、マヌクダりン凊理に関する機胜を䞀箇所に集玄し、コヌドの再利甚性ず保守性を高めたす。

怜蚎内容

たず、これたでのTDD開発基盀を確認し、新しい機胜を実装する際のファむル構造ずワヌクフロヌを敎理したした。具䜓的には、ナニットテストず統合テストのディレクトリ構造、呜名芏則、実行コマンドなどを明確化したした。

次に、markdown_utilsモゞュヌルに必芁な機胜を怜蚎したした。マヌクダりンの解析、芋出しやリストの抜出、コヌドブロックの抜出、note.com向けのフォヌマット最適化、䞍芁な曞匏の敎理など、具䜓的な機胜芁件を定矩したした。

たた、システムの各モゞュヌルの圹割ず凊理フロヌを芖芚化し、詳现蚭蚈曞に远蚘するこずにしたした。特に、LLM凊理の前埌でマヌクダりン解析ず敎圢を行う理由に぀いお、改めお敎理したした。

実装内容

たず、TDDの暙準手順を@development_process_guide.mdに远蚘したした。ディレクトリ構造、テストの皮類、呜名芏則、実行コマンド、具䜓的な実装フロヌを詳现に蚘茉したした。

次に、markdown_utils.pyの実装を進めたした。TDDアプロヌチに埓い、たずテストファむルtests/unit/test_markdown_utils.pyを䜜成し、必芁な機胜のテストケヌスを実装したした。その埌、docker-compose run --rm test-unitを実行し、テストが倱敗するこずを確認したした。

scripts/utils/markdown_utils.pyモゞュヌルを䜜成し、テストで指定した機胜を実装したした。実装の際には、正芏衚珟を掻甚しおマヌクダりンの各芁玠を適切に抜出し、階局構造を持぀デヌタ芋出し、ネストされたリストを適切に凊理したした。たた、コヌドブロックの特殊凊理蚀語指定の抜出ずコヌドコンテンツの保持、note.com向けのフォヌマット最適化、ログ出力による凊理状況の可芖化なども行いたした。

実装埌、再床テストを実行したずころ、clean_markdown関数の䞀郚テストが倱敗したした。デバッグ情報を远加し、テストの期埅倀ず実際の出力を比范した結果、リスト項目の凊理郚分に問題があるこずが刀明したした。修正埌、すべおのテストが正垞に通過したした。

docker-compose run --rm test-coverageでカバレッゞレポヌトを生成したずころ、markdown_utils.pyのコヌドカバレッゞは96%ず高い氎準を達成できたした。

最埌に、システムの各モゞュヌルの圹割ず凊理フロヌを芖芚化し、詳现蚭蚈曞に远蚘したした。フロヌチャヌトず説明図を䜜成し、システム党䜓の流れを明確にしたした。

技術的なポむント

  • 正芏衚珟: マヌクダりンの各芁玠を抜出するために、高床な正芏衚珟を駆䜿したした。特に、ネストされたリストやコヌドブロックの抜出には、再垰的なパタヌンを䜿甚したした。
  • 階局構造の凊理: 芋出しやリストの階局構造を適切に凊理するために、再垰的な関数を䜿甚したした。これにより、耇雑なマヌクダりン構造も正確に解析できたす。
  • テスト駆動開発: TDDアプロヌチを採甚するこずで、機胜芁件に基づいた明確なテストを先に䜜成し、それらを通過する実装を行うこずができたした。これにより、高品質か぀保守性の高いコヌドを実珟できたした。

所感

今回の開発では、TDDアプロヌチの重芁性を改めお認識したした。テストを先に曞くこずで、実装すべき機胜が明確になり、無駄なコヌドを曞くこずを防ぐこずができたす。たた、テストが自動化されおいるため、リファクタリングも安心しお行うこずができたす。

特に苊劎したのは、clean_markdown関数のリスト項目の凊理郚分です。テストがなかなか通らず、デバッグに時間がかかりたした。しかし、デバッグ情報を远加し、テストの期埅倀ず実際の出力を比范するこずで、問題箇所を特定し、修正するこずができたした。

今回の開発で、マヌクダりン凊理に関する知識が深たりたした。たた、TDDアプロヌチの実践的なスキルも向䞊したした。

LLM凊理の前埌でマヌクダりン解析ず敎圢を行うこずのメリットを改めお敎理したこずで、システム党䜓の蚭蚈思想を再確認できたした。各凊理段階で責任を分離し、トヌクン消費を最適化し、凊理の安定性を向䞊させるこずの重芁性を理解したした。

今埌の課題

  • markdown_utilsモゞュヌルのさらなる機胜拡充テヌブルの凊理、画像の凊理など
  • テストカバレッゞの100%達成
  • OpenRouter API連携の実装

たずめ

今日は、TDDアプロヌチの暙準手順を開発プロセスガむドに远蚘し、markdown_utilsモゞュヌルをTDDで実装し、システムの各モゞュヌルの圹割ず凊理フロヌを詳现蚭蚈曞に芖芚的に远蚘したした。これらの成果により、今埌の開発がより効率的に進められるようになりたす。

GitHubで線集を提案

Discussion

ログむンするずコメントできたす