## 問題 meta-tagsはtitleやdescriptionをSEOに適切な長さまでに切り詰めますが、titleなどの中にスペース文字が含まれていると、スペース文字のところで切り詰めてしまいます。そのため、文章の先頭付近のみにスペース文字がある文章は大幅に切り詰めが行われてしまいます。 例えば、次の文章にあるスペース文字は10文字目のところのみです。 > Microsoft Copilotは、あなたの言葉をパワフルなコンテンツに変えるAIアシスタントです。あなたのニーズに合わせて、文章を生成、要約、編集、変換したり、コードや詩などの創造的なコンテンツを作成したりします。 したがって、80文字に切り詰める設定であっても、この10文字目のところで切り詰められて「Microsoft」となり、80文字に比べ大幅に短い文字数に切り詰められることになってしまいます。 ## 回避策 回避策はいくつかあります。 ### [v2.21.0](https://github.com/kpumuk/meta-tags/releases/tag/v2.21.0)で追加された'truncate_on_natural_separator'の設定を利用する 設定ファイルである`meta_tags.rb`の中で、以下の記述を行うことで、スペース文字のところで切り詰めなくなります。詳細は[meta-tagsの設定](https://github.com/kpumuk/meta-tags/blob/v2.21.0/lib/generators/meta_tags/templates/config/initializers/meta_tags.rb#L19)の`truncate_on_natural_separator`の説明をご覧ください。 ``` config.truncate_on_natural_separator = nil ``` ### アプリケーション側で切り詰めを行う meta-tagsに渡す前に、あらかじめアプリケーション側で切り詰めを行うことでも、この問題は回避できます。なお、[meta-tagsの設定](https://github.com/kpumuk/meta-tags/blob/v2.19.0/lib/generators/meta_tags/templates/config/initializers/meta_tags.rb)によっては、meta-tags側での切り詰めをオフにすることも出来ます。設定方法については[meta-tagsのREADME](https://github.com/kpumuk/meta-tags#configuration)を参照してください。 ## (参考)内部的な原因 meta-tagsはRuby on Railsのtruncateヘルパーメソッドを最終的に呼び出しますが、[このヘルパーメソッドをラップするメソッド](https://github.com/kpumuk/meta-tags/blob/v2.19.0/lib/meta_tags/text_normalizer.rb#L140)を内部に持っています。このラッパーメソッドの引数である[natural_separatorを省略してのメソッド呼び出し](https://github.com/kpumuk/meta-tags/blob/v2.19.0/lib/meta_tags/text_normalizer.rb#L49)がmeta-tags内に存在し、v2.19.0までは、この省略時のnatural_separatorのデフォルト値がスペース文字であるため、スペース文字のところでの切り詰めが発生しています。 [v2.21.0からは、前述の引数natural_separatorが廃止され、ラッパーメソッド内で前述の'truncate_on_natural_separator'の設定値が与えられるようになっています。](https://github.com/kpumuk/meta-tags/blob/v2.21.0/lib/meta_tags/text_normalizer.rb#L145)ですのでこの設定値を変えることで、スペース文字のところで切り詰めなくしたり、任意の文字での切り詰めたりすることが可能になりました。