こんにちは、クラウドソリューション部の花岡です。
この記事はオルターブースアドベントカレンダー2023の23日目の記事です。
だんだんとクリスマス 🎄 が近づいてきました!
街はにぎやかお祭り騒ぎでチキンライスが食べたくなる時期です
はじめに
今回は文章校正ツールである(textlint)https://textlint.github.io/を使ってAzure
のプロダクト名のtypoを検知するルールを作成し公開しました。
AWS
のサービス名のtypoを検知できるルールを作ったクラスメソッドさんのブログを見て、Azure
版もあれば便利だなと思いOSS
で作ってみました。
実装も大いに参考にしています。
NPMパッケージで公開してます。
ソースはこちら、MITライセンスで公開してます。
できること
実行例
以下の文章を用意します。
# test.md - スペースがないパターン - NG: AppService - OK App Service - 接頭辞が間違っているパターン - AzureとMicrosoftを区別します - NG: Microsoft App Service - OK: Azure App Service - 表記揺れパターン - NG: app service - NG: App service - NG: app Service - OK: App Service - 複数形のパターン - NG: Azure Function - OK: Azure Functions - Entra IDも対応 - NG: Azure Entra ID - OK: Microsoft Entra ID
textlint
とtextlint-rule-azure-product-name
をインストールして実行します。
# グローバルでインストール npm i -g textlint textlint-rule-azure-product-name # 実行 textlint --rule azure-product-name test.md
すると次のように検知してくれます。
4:9 ✓ error AppService => App Service textlint-rule-azure-product-name 8:9 ✓ error Microsoft App Service => Azure App Service textlint-rule-azure-product-name 11:9 ✓ error app service => App Service textlint-rule-azure-product-name 12:9 ✓ error App service => App Service textlint-rule-azure-product-name 13:9 ✓ error app Service => App Service textlint-rule-azure-product-name 16:9 ✓ error Azure Function => Azure Functions textlint-rule-azure-product-name 19:9 ✓ error Azure Entra ID => Microsoft Entra ID textlint-rule-azure-product-name ✖ 7 problems (7 errors, 0 warnings) ✓ 7 fixable problems. Try to run: $ textlint --fix [file]
ちなみにログにあるとおり、textlint
の--fix
オプションを使うと自動的に修正してくれます。
4:9 ✔ AppService => App Service textlint-rule-azure-product-name 8:9 ✔ Microsoft App Service => Azure App Service textlint-rule-azure-product-name 11:9 ✔ app service => App Service textlint-rule-azure-product-name 12:9 ✔ App service => App Service textlint-rule-azure-product-name 13:9 ✔ app Service => App Service textlint-rule-azure-product-name 16:9 ✔ Azure Function => Azure Functions textlint-rule-azure-product-name 19:9 ✔ Azure Entra ID => Microsoft Entra ID textlint-rule-azure-product-name ✔ Fixed 7 problems
VS Code
またVS Code
ではtextlint
の拡張機能を使うとリアルタイムで検知してくれます。
ルールについて
自動更新
メンテナンス性を高めるため、プロダクト名は自動更新できるようにしています。
https://azure.microsoft.com/en-us/products/からスクリプトでスクレイピングして取得しています。
実行はGitHub Actions
を使用して、更新があればPull request
を出すようにしています。
マニュアル対応
自動更新のみでは対応できないパターン(Microsoft Entra ID
など)を対応するため、マニュアルでyaml
を書いています。
https://github.com/dora56/textlint-rule-azure-product-name/blob/main/dict/manual-added-rules.yml
もし対応して欲しいパターンがあれば、Issue
を立てるか上記を編集してプルリクエストを出していただければと思います。
おわりに
textlint
はとても便利な校正ツールです。日頃お世話になっているのでこういった形で貢献(Contribute)できたのは、良い経験となりました。
そして、もしこのルールを気に入っていただけたなら、GitHub
のリポジトリにスターやX(Twitter)、その他SNSで共有いただけると嬉しいです。
また、Issue
やプルリクエストも大歓迎です。
最後に、作成したルールでどなたかのテクニカルライティングの品質向上に役立てれば幸いです。最後までお読みいただきありがとうございました。
サービス一覧 www.alterbooth.com cloudpointer.tech www.alterbooth.com