ブログ

  • Material Symbolsのアイコンが検索結果に文字化けして表示される問題と対策

    Google の Material Symbols を使ったサイトで、Bing の検索結果に arrow_forward や calendar_month といったテキストがそのまま表示されてしまうケースがありました。

    調べてみると Google の GitHub リポジトリでも Issue #897 として報告されている既知の問題で、対処法もいくつか提案されていました。今回はその中から最もシンプルな方法を採用したので、その内容を共有します。

    何が起きているのか

    Material Symbols は「リガチャ」という仕組みで、HTML に書いたテキストをウェブフォントでアイコンに変換して表示しています。

    Bash
    <span class="material-symbols-outlined">arrow_forward</span>

    ブラウザではフォントが読み込まれるのでアイコンとして表示されますが、検索エンジンのクローラーはフォントを読み込みません。そのため arrow_forward というテキストがそのままインデックスされ、検索結果にこんな感じで出てしまいます。

    call 096-XXX-XXXX location_on ルート 営業時間:10:00~18:00 arrow_downward 店舗情報 arrow_downward スタッフ紹介 …

    これは Google の公式ドキュメントで推奨されている書き方に従った結果なので、実装ミスではありません。

    対策:data 属性方式に切り替える

    Issue #897 で提案されていたワークアラウンドのうち、data 属性を使う方法を採用しました。

    Before

    Bash
    <span class="material-symbols-outlined">arrow_forward</span>

    After

    Bash
    <span class="material-symbols-outlined" data-icon="arrow_forward" aria-hidden="true"></span>

    やっていることはシンプルで、アイコン名をテキストノードではなく data-icon 属性に移しています。テキストノードが空なので、クローラーにインデックスされることはありません。

    CSS 側の対応

    data-icon の値を CSS の content で取り出して擬似要素として表示します。

    Bash
    /* 全スタイル(Outlined / Rounded / Sharp)まとめて対応 */
    [class*="material-symbols-"][data-icon]::before {
      content: attr(data-icon);
    }

    これだけで、ブラウザでの見た目は従来と変わらずアイコンが表示されます。

    補足

    CSS 擬似要素で表示しているアイコンは対象外

    以下のように CSS の content で直接アイコンを出しているケースは、もともと HTML にテキストが出力されないので対策不要です。

    Bash
    .my-select::after {
      font-family: 'Material Symbols Outlined';
      content: 'expand_more';
    }

    aria-hidden だけでは不十分

    aria-hidden="true" は Google のクローラーでは尊重されますが、Bing では効かない場合があるようです。data 属性方式ならテキストノード自体が存在しないので、検索エンジンを問わず確実です。

    参考

  • Ubuntuで最新版のNeovimをインストールする


    Ubuntuで最新のNeovimを利用するときは、インストールの簡便さから、公式パッケージリポジトリ経由ではなくAppImage形式を利用しています。最近のリリース(v0.10.4)では、AppImageのファイル名が従来の「nvim.appimage」から「nvim-linux-x86_64.appimage」に変更されたようです。


    インストール手順:

    1. AppImageのダウンロードおよび実行権限の付与

    Bash
    curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage
    chmod u+x nvim-linux-x86_64.appimage

    2. Neovimの起動

    以下のコマンドを実行することで、Neovimが起動します。

    Bash
    ./nvim-linux-x86_64.appimage

    あとは、PATHの通ったディレクトリに「nvim」とリネームして配置しておけば、システム全体で利用可能になります。

  • コーポレートサイトを公開しました

    2024年5月に個人事業主から法人へと移行してから、しばらく自社サイトすらない状況が続いていましたが、ようやく新しいコーポレートサイトを公開することができました。まだ未完成な部分や改善の余地もたくさんありますが、これから少しずつ手を加えながら、内容を充実させていく予定です。

    プロジェクトの概要

    今回のサイト制作は、技術検証の意味合いも含めて、Next.js と WordPress を組み合わせたヘッドレスCMS構成を採用しました。フロントエンドとコンテンツ管理を分離することで、柔軟な構築・運用を目指しています。

    主な使用技術は以下の通りです:

    • Next.js(App Router) – サイト全体のフロントエンド
    • WordPress(ヘッドレスCMS) – コンテンツ管理とAPI提供
    • Docker / Docker Compose – コンテナ化による開発・運用
    • XSERVER VPS – 本番環境のホスティング
    • Nginx Proxy Manager – サブドメイン管理とHTTPS対応
    • GitHub Actions – mainブランチへのpushで自動デプロイ

    これからやりたいこと

    現状は、ブログの基本機能とコーポレートページの最低限の骨組みが整った段階で、まだ準備中のページも多く残っています。これから少しずつ手を加えながら、内容を充実させていく予定です。また今後はWebGLやThree.js を使った、動きのあるビジュアル表現や、アクセシビリティの向上など、細かな機能追加・ブラッシュアップも進めていきたいと考えています。

    このサイトは、自社の情報発信の場であると同時に、実験的に技術を試す場と考えています。制作の経過や技術的な学びについても、ブログを通して気軽に発信していけたらと思っています。

    更新はゆっくりかもしれませんが、少しずつ積み重ねていけたらと思っています。

    よければ、これからもときどき覗いてみてください。