本記事は、Sansan Advent Calendar 2023の1日目の記事です。
こんにちは。 技術本部研究開発部の高橋寛治です。 毎年恒例のアドベントカレンダーの時期がやってきました。
今回は、技術ブログの執筆を技術で支援するツールを用意したため、その内容を紹介したいと思います。 なお、本記事はそのツールを用いて書かれたものです。
技術ブログを書きやすくしたい
技術に関する知見を共有することは、知見を元にした新しい技術を生むことや、類似の事象の早期解決につながることなど、様々な利点があると私は考えています。 ある知見が新しい知見を呼び、新しい知見が更なる新しい知見を呼ぶ、というように循環するものだと思います。
技術ブログを書きやすくするために、執筆支援を行うことにしました。 今回は、2種類の執筆支援に取り組みます。 一つは草稿作成に向けた技術ネタと草案の作成支援、もう一つは草稿の校正支援です。 これらの支援により必要な労力が小さくなり、技術に関する知見を共有しやすくなると考えています。
GPTsによる執筆支援Bot
GPTsとは、何か特定の目的を実現するためにカスタムされたChatGPTのことです。 カスタムには、プラグインの設定や情報源の挿入、独自プロンプトの設定など様々な手段を取ることができます。 Webブラウザ上で設定が可能です。
技術ブログを書く際に、何をネタにしたらいいかわからないことや、筆が進まないことをしばしば耳にします。 これらの壁に感じていることを無くすことを目的に、GPTsを用いて執筆支援Botを作成します。
上記のスクリーンショットは、執筆支援Botの起動画面です。 このBotは、ネタの考案や記事の草案を出力します。
Instructionsとして、ブログの要件や草案の内容について指示します。
何か作業をしている以上は技術ネタを持っていると仮定します。 そのネタを対話により引き出せると考えています。 意外と質問されないと、ネタを引き出せないものです。
textlintによる校正Bot
textlintとは、自然言語のための静的解析ツールです。 設定したルールに沿っているかどうかの確認や、修正を提案できます。
textlintの導入による効果は様々あると思います。 今回狙ったのは、他者レビューが必要なブログ執筆の体制において、レビューに対する抵抗感を小さくすることと、レビュアーの負荷を軽減することです。
自己レビューできることで、記事の様式がある程度大丈夫だと自信を持てると思います。 そうすることで、レビューに対する抵抗感が小さくできると考えました。
また指摘箇所が減ることで、レビュアーの負荷軽減につながります。 誤字、脱字や表記が揃っていない箇所は、指摘や確認が大変です。 これらが不要になり、内容のレビューに時間や集中力を使うことができるようになると想定しています。
Slack Botとして実装しました。 偶然ですが、以前に自分が書いた記事の延長線上で実現できました。
内部は以下のようになっています。
- Botへのメンションをフックにし、URLを抽出する
- URLをもとにWebページを取得する
- Webページから必要な箇所をBeautifulSoupで抽出する
- HTMLからmarkdownに変換する
- textlintでチェックする
- textlintの結果をSlackで返信する
いくつか、工夫した点の紹介です。
BeautifulSoupでprettifyにより必要箇所のHTMLを抽出しています。
その際にタグの前後に改行が入らないように、preserve_whitespace_tags
を設定しています。
また、textlintの結果をわかりやすくするために、原文を表示するようにしています。
執筆者を圧迫しないように、textlintによる提案にとどめています。まずは、ゆるいルールを設定しました。
使ってみた
本記事は、本記事内で紹介したGPTsとtextlintを用いて書かれました。
ネタと構成はGPTsにより10分ほどで作ることができました。
textlintによる指摘3や指摘4は、レビュアーの体力を削る軽微な指摘だと思います。 こういったものが事前に修正できるのは良いと感じます。
一方で、指摘1や指摘2のように、過剰な検出が見られます。 今後の課題として、ルールの調整をしていくこととなりそうです。
おわりに
技術ブログを書きやすくするための技術的な取り組みとして、GPTsによる執筆支援Botとtextlintによる校正Botを作った取り組みを紹介しました。
現在は、アドベントカレンダーを執筆する人に向けて、利用可能な状態にしています。 まだ効果測定はできていません。 アドベントカレンダー企画の終了後にアンケート調査をするなど、書きやすくなったかどうかは聞いてみようと思います。
執筆者プロフィール
高橋寛治 Sansan株式会社 技術本部 研究開発部 Data Analysisグループ
阿南工業高等専門学校卒業後に、長岡技術科学大学に編入学。 同大学大学院電気電子情報工学専攻修了。 在学中は、自然言語処理の研究に取り組み、解析ツールの開発や機械翻訳に関連する研究を行う。 大学院を卒業後、2017年にSansan株式会社へ入社。 キーワード抽出など自然言語処理を生かした研究に取り組む。
▼執筆者による連載記事はこちら