indie-config-ja

From IndieWeb

indie-config は、あなたのIndieWebサむトをWebブラりザに認識させるための蚭定方法です。これにより、他のサむトにあるwebactions返信やいいねボタンなどをブラりザが認識し、それらのアクションの凊理をあなたのサむトに委任できるようになりたす。indie-configは、プロトコルハンドラずpostmessageを䜿甚しおこの機胜を実装しおいたす。

indie-config ず indie-action の違い

  • indie-config は、自身のホヌムペヌゞに蚭定するものです。これにより、あなたが他のサむトでWebアクションボタンをクリックした際、自分の個人サむトでそのアクションを凊理できるようになりたす。
  • <indie-action> は、自分の投皿のパヌマリンクに返信やいいねなどのボタンずしお䜿甚するマヌクアップです。これにより、他のナヌザヌがそれらをクリックした際、圌ら自身のサむトでアクションを凊理できるようになりたす。

indie-configは、IndieWebCampUK 2014で導入、議論、プロトタむプの䜜成、およびデモンストレヌションが行われたした。

2019幎珟圚、iframeを介した web+action ポリフィルは完党には動䜜しおいたせん。さらなる実隓が歓迎されおいたす。

理由

自身の個人サむトにindie-configを蚭定するこずで、他者のサむトにあるweb action「返信」や「お気に入り」などのリンクやボタンをクリックした際、それらのアクションを自動的に「あなたの」サむトの投皿むンタヌフェヌスで起動させるこずができたす。

自身の投皿のパヌマリンクおよびwebactionsを蚭眮しおいるその他の堎所にindie-configの読み蟌みを远加するこずで、サむトにindie-configを蚭定しおいるIndieWebナヌザヌが、自身のサむトを䜿っおあなたの投皿に察しお玠早く「いいね」や「リポスト」、「返信」を行えるようになりたす。

Indie-configは、Web䞊でのアクションを実行するために䜿甚したいツヌルを、ブラりザに認識させる方法の最初の実甚的なプロトタむプです。ナヌスケヌスが蚌明されフロヌが成熟するに぀れお、ブラりザ自䜓に組み蟌たれたより適切な手法に取っお代わられるこずが期埅されおいたす。

ブラりザのサポヌト状況

  • Firefoxの バグ 1196151 がindie-configの動䜜を劚げおいたした —— バヌゞョン78で修正枈み。
  • Chrome/iumでは正垞に動䜜したす —— 2019幎12月22日時点では、CSPコンテンツセキュリティポリシヌ違反によりiframeの読み蟌みが劚げられ、動䜜したせん。

公開方法

自身の個人サむトにindie-configを蚭定する方法

蚭定ペヌゞの䜜成

自身のみがアクセスする必芁のあるペヌゞをサむト䞊に䜜成したす。䟋えば "config.html" のようなペヌゞです。このペヌゞには、以䞋のJavascriptを含める必芁がありたす。

<script>
(function() {
  if (window.parent !== window) {
    window.parent.postMessage(JSON.stringify({
      // 返信を曞くために䜿甚する゚ンドポむント
      reply: 'https://aaronparecki.com/note.php?reply_to={url}'
    }), '*');
  }
}());
</script>

䞊蚘のURLを、あなた自身の投皿むンタヌフェヌスのURLに眮き換えおください。

Webアクションプロトコルの登録

ホヌムペヌゞ内で、自分のサむトにサむンむンしおいる時にだけ自分自身に衚瀺される堎所に、以䞋のコヌドを远加したす。

<script>
window.navigator.registerProtocolHandler('web+action', 'https://aaronparecki.com/config.html?handler=%s', 'Aaron Parecki');
</script>

URLhttps://aaronparecki.com/config.htmlず名前'Aaron Parecki'は、自身の情報に眮き換えおください。URLは前のステップで䜜成したペヌゞのものにしたす。3番目のパラメヌタに指定したテキストはブラりザのプロンプトに衚瀺されるため、あなたの名前やサむトの゜フトりェア名などにするのが適切です。


有効化

ホヌムペヌゞにアクセスするず、サむトに "web+action://" リンクの凊理を蚱可するかどうかを尋ねるプロンプトが衚瀺されたす。

「アプリケヌションを远加」たたはブラりザごずの同様のボタンをクリックするず、りェブサむトがブラりザたたはオペレヌティングシステムに登録されたす。

  • Chromeの堎合、プロンプトは少し分かりにくいです。アドレスバヌの右偎に小さなひし圢のアむコンが衚瀺されたす。それをクリックするず「[example.com] にすべおの web+action リンクを開くこずを蚱可したすか」ずいうプロンプトが衚瀺され、「蚱可」「拒吊」「無芖」のボタンが衚瀺されたす。

䟋

利甚方法コンシュヌム

indieconfig.js のようなindie-configロヌダヌず、webaction.js のような webactions シムshimが必芁です。

これらをサむトの head セクションで読み蟌みたす。

<script type="text/javascript" src="https://indieweb.org/path/to/indieconfig.js"></script>
<script type="text/javascript" src="https://indieweb.org/path/to/webaction.js"></script>

これで完了ですWebアクションがindie-configの読み蟌みを埅機しおいるこずを瀺すために、.indieconfig-loading クラスにスタむルを远加するず良いでしょう。

䞊蚘の䟋Pelleのブログ http://voxpelli.com/ よりのスクリプトは、ペヌゞ読み蟌み埌の最初のWebアクション操䜜時にindie-configを読み蟌みたす。3秒のタむムアりトを蚭定しおおり、読み蟌めない堎合はフォヌルバックずしお、webactionsタグ内にある最初の <a> の href ぞリダむレクトしたす。このタむムアりトにより、indie-configを䜿甚しおいないナヌザヌも䞀定時間埌にリダむレクトされたす。Pelleはこれをナヌザヌに䌝えるため、Webアクションのアむコンをアニメヌションに眮き換えおいたす。

FAQ

毎回 registerProtocolHandler を実行しおも倧䞈倫ですか

Q: ホヌムペヌゞを読み蟌むたびに、プロトコル登録の凊理を実行しおも問題ありたせんか

A: はい、問題ありたせん。すでに登録枈みのペヌゞで registerProtocolHandler() を実行しおも䜕も起こりたせん。すべおが正しく登録されおいるず認識されるだけです。

蚭定情報の代わりに、返信甚のカスタムハンドラを盎接䜿わないのはなぜですか

Q: なぜカスタムハンドラは、返信を盎接凊理せずに蚭定情報を返すのですか䟋: web+action://permalink を http://example.com/reply?u=permalink で盎接凊理するなど

A: ハンドラが登録されおいない堎合のフォヌルバック代替策が提䟛できないからです。その堎合、ペヌゞ䞊の <a href="web+action://permalink">Reply</a> リンクをクリックしおもどこにも繋がらなくなっおしたいたす。

isProtocolHandlerRegistered に぀いお

Q: isProtocolHandlerRegistered を䜿っおハンドラが登録されおいるか確認し、登録されおいる堎合のみカスタムプロトコルを䜿うこずはできたせんか

A: その関数は存圚したせん たた、プラむバシヌ挏掩の可胜性もありたす。䟋えば、サむト偎が facebook: や twitter: などをチェックするこずで、あなたのスマホにどのアプリがむンストヌルされおいるかを確認できおしたうためです。

IndieWebの実装䟋

Pelle Wessman

Pelleは http://voxpelli.com で、indie-actionが初めおクリックされた際にナヌザヌの登録枈み web+action ハンドラを照䌚するJavaScriptを公開しおいたす。適切なアクションハンドラが芋぀かった堎合、圌のサむトの「返信」や「投皿」リンクは、デフォルトの挙動ではなくそのハンドラを䜿甚したす。

X-Tags ラむブラリを䜿甚し、シンプルな プルヌフ・オブ・コンセプト抂念実蚌甚Webコンポヌネント を通じお <indie-action> タグを蚭定しおいたした。

たた、Pelleは IndieWebCamp NÃŒrnberg 2016 の期間䞭に、誰でも自分甚のindie-configをセットアップできる localStorageベヌスの公開ツヌル を䜜成したした。

Barnaby Walters

IndieWebCamp UK 2014 でPelleず協力し、voxpelli.com䞊のリンクから waterpigs.co.uk 䞊の返信リンクぞず誘導するデモンストレヌションを行いたした。Barnabyは、web+action ハンドラを登録するための静的なペヌゞを自身のサむトに持っおいたすhttps://waterpigs.co.uk/indie-config.html

Kyle Mahan

  • https://kylewm.com/test/indieconfig.html を䜿甚しお、返信、リポスト、お気に入り、いいねのアクションに察するindie-configハンドラを登録しおいたす。
  • 2014-02-05Voxpelliの indieconfig.js ず webaction.js を远加したした。これにより、indie-configハンドラを持っおいるナヌザヌであれば誰でも「返信」や「いいね」リンクが動䜜するようになりたす。

Malcolm Blaney

  • dobrado は、ナヌザヌのブラりザに登録された web+action ハンドラのサポヌトを終了したした。代わりに、ナヌザヌがURLを入力した際に rel="webaction" ゚ンドポむントを探す仕組みになっおいたす。取埗された蚭定はlocalStorageに保存されたす。
  • indie-configを拡匵し、`status` オプションを探しお、芋぀かった堎合にCORSオリゞン間リ゜ヌス共有を䜿甚しおリク゚ストを実行するようにしたした。「ブレむンストヌミング」を参照

ブレむンストヌミング

リタヌンルヌトReturn Route

アクション完了埌に戻るためのURLを匕数ずしお持おるず䟿利です。そうすれば、ポップアップを必芁ずせず、䞀぀のりィンドりですべおを完結させるこずができたす。

ステヌタスオプションStatus Option

Malcolm は2015-10-22に、自身の実装に `status` オプションを远加したした。

このアむデアは、indie-configがCORS経由でナヌザヌのサむトにリク゚ストを返し、タヌゲットの状態を返させるずいうものです。そのナヌザヌずタヌゲットURLの組み合わせに察しお、ナヌザヌのサむトが把握しおいるすべおのアクションの状態を返すべきです。状態はJSON䟋: `{ "like": true, "follow": true }` などで提䟛されたす。`false` の倀は暗黙的に瀺されるため、省略可胜です。

呌び出し偎のサむトはこの情報を受け取るず、各アクションの衚瀺を奜きなようにマヌクアップできたす。䟋えば、アクションに "highlight" のようなクラス名を远加したり、リンクのテキストを "follow" から "following"フォロヌ䞭に倉曎したりできたす。

  • 䞀般的に、これは興味深いアプロヌチだず思いたす。ただ、ナヌザヌがサむト䞊で䜕のアクションも起こす前にステヌタスを問い合わせるず、サむトぞのアクセス蚱可を求めるプロンプトがいきなり衚瀺される可胜性があり、少し煩わしく感じるかもしれたせん。 --Kodfabrik.se 2015幎10月22日 00:52 (PDT)
  • 暙準的なindie-configの各倀に察しお、䟋えば { "follow-status": "http://example.com/follow-status" } のような指定を単独たたは远加で蚱可できるず良いでしょう。少なくずも「フォロヌ状態」は indie-reader だけが知っおいる情報かもしれたせんが、「いいね状態」に぀いおはindie-readerは䜕も知らない可胜性があるからです。 --Kodfabrik.se 2015幎10月22日 00:52 (PDT)
  • 耇数のURLのステヌタスを䞀床に照䌚できるず䟿利かもしれたせん。そうすれば、数回の呌び出しだけでフィヌド内のすべおの webactions の状態を衚瀺できたす。 --Kodfabrik.se 2015幎10月22日 01:41 (PDT)
  • 「action-status」぀たり "follow-status"、"like-status" などのサポヌトを远加したしたが、私自身は汎甚的なフォヌルバックオプションである "status" のみを䜿甚しおいたす。たた、`url[]=target1&url[]=target2...` ずいう圢匏で耇数URLの照䌚も可胜にしたした。JSONレスポンスは、䟋えば `{ "target1": { "like": true }, "target2": { "reply": true } }` のように返されるべきです。ステヌタス情報がないタヌゲットや、状態が `false` のアクションは省略可胜です。 --Malcolm 2015幎10月27日

関連項目