SNSへシェアするボタンの作り方
このブログにBlueskyへシェアするためのボタンを実装してみました。
この記事ではSNSへの共有ボタンを実装するのに必要な「調査の方法」「その実例」を備忘録として残しておきます。
完成物から
見た目はこんな感じです。
クリックすると、Blueskyへ「タイトル」と「URL」を含む投稿の作成画面が表示されます。
Blueskyの共有ボタン実装の流れ
実装の仕方は使っているフレームワークによって異なるため、「調査過程」「本ブログの例」の順で解説します。
調査過程
他のSNSが大きくなった時にも参考にできるように、共有ボタンを実装する際の調査方法を解説します。
実装方法が公式であるか?
まずは公式ドキュメントを漁り、シェアボタンの実装が無いか探します。
たいていの場合、「このURLにアクセスすると投稿画面が出ます」とか「このHTMLタグをそのまま埋め込めばボタンが設置できます」といった情報が書いてあります。
Blueskyでは、公式ドキュメントにURLについて書いてありました。https://bsky.app/intent/compose?text=ああああ
のようにtext
パラメータに文字列を指定してあげればよさそうです。
メディアキットを探す
ボタンのアイコンとして使える画像をメディアキットから探しましょう。
メディアキットとは、メディア向けに「この画像を使ってください」とロゴやアイコンなどをまとめた資料のことです。
Blueskyにもメディアキットが用意されています。
SVGもあります。Bluesky for Journalistsの”Do you have a media kit?”の欄にリンクがあります。
さまざまなアイコンをまとめているFont AwesomeやSimple Iconsにも用意されています。手っ取り早く使いたい人はこちらから探してみましょう。
筆者がよく使っているIconifyの検索結果も載せておきます。
Iconify “bluesky”
IconifyはSVGだけではなく、「React」「Svelte」「Vue」「Astro」「Tailwind CSS」などなどいろんな形で使えるようにコピペできるため重宝しています。
本ブログの例
筆者はAstroWindというブログテンプレートを元に、Astro、Tailwind CSS、daisyUIを使って作りました。
具体的に参考になっているのはBasicScripts.astroとSocialShare.astroです。URLやタイトルの受け渡しについてはそちらを参照してください。
クリックイベントについても載せておきます。
元になったAstroWindではFacebookやLinkedInなどもありましたが本ブログでは使っていません。代わりに「はてなブックマーク」を設置しています。
いっそのことコピーボタンも作る
全SNSへの共有ボタンを設置するのは不可能であるため、記事のタイトルとURLをコピーできるボタンも合わせて設置することにしました。
画像の茶色のボタンです。
daisyUIを使い、コピー時にツールチップで「コピーしました!」と表示させます。
cn
はshadcn/uiなどにも書いてあるヘルパー関数です。children
は子コンポーネントで、ここにアイコンを渡します。
クリックした時の処理だけにフォーカスしてみましょう。
やっていることは次の3つです。
- クリップボードへの書き込み
- ツールチップでコピーを知らせる
- 数秒後にツールチップをもとに戻す
Twitter(X)の共有ボタン
前述のとおり今回はAstroWindを使ったため、Xの共有ボタンはほとんど自分で実装していません。
しかし、公式ドキュメントは漁ってメモしていたため、備忘録として残しておきます。
- Overview | Docs | Twitter Developer Platform
https://twitter.com/intent
の解説
- Guides | Docs | Twitter Developer Platform
Tweet button
の実装の解説
- Twitter Publish
- ポチポチするだけでTwitter(X)に関するさまざまなボタンをコピペできる
上記のドキュメント、旧名TwitterとXがすごく混ざっています(どっちで書けばいいんだ?)。
はてなブックマークの共有ボタン
はてなブックマークについては、公式でコピペで使えるものが用意されています。
ただ、筆者は読み込むscriptを減らしたかったため、次の記事を参考にhttps://b.hatena.ne.jp/add?mode=confirm&url=${url}
を使って実装しました。
記事ページのSNSシェアボタン設定 – はてなブログMediaヘルプセンター
以上、シェアボタンの実装の調査記録と実例の備忘録でした。