弁護士ドットコム株式会社 Creators’ blog

弁護士ドットコムがエンジニア・デザイナーのサービス開発事例やデザイン活動を発信する公式ブログです。

スプレッドシートとGoogle Apps Scriptでtextlintの辞書ファイルを生成する

この記事は弁護士ドットコム Advent Calendar 2023の4日目の記事です。

前日は @saku_238 さんの「部屋とTシャツと私 〜Tシャツから2023年を振り返る〜」でした。


こんにちは、弁護士ドットコム本部 デザイナーの細貝です。

一昨年のアドベントカレンダーで、弁護士ドットコムのtextlintのプリセットルールとBotをつくった記事を書きました。

note.com

(気づいたらもう2年前なことに震えてしまいますが)いまでも凛さんBotは社内でちょこちょこ活用されています。

プルリクエストを送っていただいたり、ルール追加の相談をいただいたり…と、辞書に載せている用語も少しずつ増えてきています。

辞書ファイルをもっと気軽につくったり更新できるようにしたい

textlintはYAML(ヤムル)ファイルで自作の辞書ファイルを作成できる便利な仕組みを用意してくれています。

YAMLは下記のように人間も読み書きしやすく、コンピュータにも理解しやすい形で情報を整理できるフォーマットです。

groceries:
  - item: Apples
    price: 120
  - item: Bread
    price: 200
  - item: Milk
    price: 150

ただ、辞書の元になるルールを集めたり整理する段階ではスプレッドシートやFigJam(またはMiroなど)を使っている人も多いのではないでしょうか。

社内でもスプレッドシートはよく使われており「スプレッドシートからtextlintの辞書ファイルに変換できたらいいな」という話題が出たので、今回のアドベントカレンダーのお題として試してみることにしました。

利用したもの

  • Googleスプレッドシート
  • スプレッドシートに紐づいたGoogle Apps Script(GAS)
  • js-yaml

つくったもの

以下のリンクでサンプルのスプレッドシート(GAS)を公開しています。

🔗 サンプル: spreadsheet-to-yaml

スプレッドシートをご自身のGoogleドライブに複製すると、実際に操作をしたりGASのスクリプトエディタの閲覧・編集ができます。

3つの機能をつくってみたので、それぞれかんたんに解説していきます。

シートに辞書ファイルのテンプレートを適用する

空のシートに、辞書ファイルに必要な項目や簡単なスタイルを適用できるようにしました。 textlintの辞書ファイルの項目は、大きく5つに分かれています。

  • expected: 文中で使用したい正しい表現
  • pattern: 検出したい誤った表現(正規表現可)
  • prh: エラー時に表示されるメッセージ
  • specFrom: 動作チェックに使う変換前のオリジナルテキスト
  • specTo: 動作チェックに使う変換後の正しいテキスト

すでに用語リストや誤った表現をスプレッドシートに書き溜めていれば、少し整形するだけで辞書の元がつくれるようになりました!

シートに辞書ファイルのテンプレートを適用する操作

スプレッドシートから辞書ファイルを生成する

辞書ファイルの元ができたら、辞書ファイル(YAMLファイル)に書き出します。

サンプルのスプレッドシートをお使いの場合は、下記のように変更してから試してみてください。

  1. スプレッドシートのスクリプトエディタを開いてexport.gs を探す
  2. OUTPUT_FOLDER_ID を自分のGoogleドライブのフォルダIDに変更する

GoogleドライブのURLから分かるフォルダIDを設定し、特定のフォルダにYAMLファイルが出力されるようにしています。

// 自分の出力フォルダのIDに書き換える
// https://drive.google.com/drive/folders/{OUTPUT_FOLDER_ID}

const OUTPUT_FOLDER_ID = 'xxxxxxxxxxxxxxxxxxxx';

スプレッドシートから辞書ファイルを生成する操作

作成済みの辞書ファイル(YAMLファイル)をスプレッドシートに読み込む

当初のリクエストだった「スプレッドシートから辞書ファイルをつくる」は最初の2つで達成しました。

しかし、すでに持っている辞書ファイル(YAMLファイル)を整理したいときに手動でスプレッドシートに取り込むのは時間もかかるし面倒ですよね。

Googleドライブ上にYAMLファイルをアップロードし、ファイルIDを入力するとインポートができる機能もつけてみました。

これで、既存の辞書ファイルの棚卸しがしたくなったときにも安心です。

// ファイルの共有URLからファイルIDを調べる
https://drive.google.com/file/d/{ファイルID}/view?usp=sharing` 

作成済みの辞書ファイルをスプレッドシートに取り込む操作

実際につくってみて感じたメリット・デメリット

今回はあくまでも検証の範囲で実務には導入していませんが、以下のようなメリット・デメリットがあるかなと感じました。

メリット

  • プログラミングスキルが無くても誰でも使える手軽さ
  • 新しい辞書ファイルをかんたんに作成できる柔軟性

デメリット

  • バージョン管理のような概念はないので、大きな更新があったときに変更履歴を辿るのが大変になる
  • (運用で多少のカバーはできるものの)Gitの方が情報の一元管理には優れている
  • フォーマットや構成を大きく改修するには、Google Apps Scriptの知識が必要になる

手持ちの資産を活用して良い辞書ライフを

個人的にはYAMLファイルは好きですし、最終的なデータの管理はGit上で行うのが情報の一貫性や正確性を保つのに大事だと思っています。

しかし、スプレッドシートからの辞書生成をやってみて「あのシートにまとめていたデータが使えるかもしれないな」「個人用の辞書ファイルもつくってみようかな」とアイデアが広がり、手持ちの資産がすぐに使える環境を用意するのはやっぱり大事なんだな…と改めて気づくことができました。

これを機にtextlintを使ってみようと思ってもらったり、辞書づくりに参加してくれる人が増えたら最高ですね!

デザイナーの間でもデザインシステムのライティングガイドラインを整備しているところなので、じゃんじゃん活用していこうと思います!


弁護士ドットコム Advent Calendar 2023の明日の担当は @ytacky さんの「弁護士ドットコムサマーインターンシップ2023の狙いと技術要素」です。 今年の夏にたくさん学生さんがいらしているな〜と横目で見ていたので、どんなことをされていたのか読めるのがとても楽しみです🛷