mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

IE8のアクセラレータを作ってみた

久しぶりにエンジニアブログ登場のmilanoです。
こんにちは。

さて、先週のことですが、mixiをさらにオープン化するためのさまざまな施策がリリースされましたね。
その中でも、個人的に気になるSimplePostに注目してみました。

突然ですが、エンジニアブログ読者のみなさまはFirefoxとかChromeとかが大好きだと思います。Internet Explorerを使っている人は少ないのかもしれません。
でも、私はInternet Explorerが大好きなのです。
そんなIEなんですが、IE8から追加された機能に「アクセラレータ」というものがあります。
IE8で文字を選択したりするとaccel-icon←こういうやつが出てきますが、これのことです。
こいつをクリックするだけで、選択した文字をGoogle検索したり翻訳したりすることができるものです。
Microsoftによる紹介ドラマはこちら

今回、SimplePostを使って、選択した文字列を引用してmixi日記を書くことができるアクセラレータを作ってみました。
 
 

Internet Explorer 8の「mixiで日記を書く」アクセラレータを利用するには

1. 下のリンクをクリックします。
アクセラレータのインストール

2. ダイアログが表示されるので、「このアクセラレータ区分の既定ブロバイダーに設定する」にチェックを入れて「追加」ボタンをクリックします。
accel-dialog

3. 日記に引用したい文章があったら、ドラッグで選択します。accel-iconが表示されたらそれをクリックして「mixiで日記を書く」を選択します。
accel-context

4. mixiの日記を書く画面が表示されるので、日記を書きます。
accel-add_diary
※GETメソッドの制限から、あまり長い文字列は引用できません。すみません。
 
 

アクセラレータの作り方

アクセラレータはXMLで挙動を定義するのです。
「mixiで日記を書く」アクセラレータのXMLの中はこのようになっています。

<?xml version="1.0" encoding="UTF-8" ?>
<openServiceDescription
  xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0">
 <homepageUrl>http://mixi.jp/</homepageUrl>
 <display>
  <name>mixiで日記を書く</name>
  <icon>http://mixi.jp/favicon.ico</icon>
 </display>
 <activity category="Blog">
  <activityAction context="selection">
   <execute method="get" action="http://mixi.jp/simplepost/diary?title={documentTitle?}&&body={documentTitle}%0A{documentUrl}%0A%0A{selection}" />
  </activityAction>
  <activityAction context="document">
   <execute method="get" action="http://mixi.jp/simplepost/diary?title={documentTitle?}&body={documentTitle}%0A{documentUrl}" />
  </activityAction>
  <activityAction context="link">
   <execute method="post" action="http://mixi.jp/simplepost/diary?title={linkText}&body={linkText}%0A{link}" />
  </activityAction>
 </activity>
</openServiceDescription>

displayの中でアクセラレータの名前とアイコンを定義。
activityActionの中で、挙動を定義します。
context="selection"だと、文字列を選択したときの動作、
context="document"だと、ページの何もないところを右クリックしたときの動作
context="link"だと、リンクを右クリックしたときの動作を定義できます。

で、実際にアクセラレータを選択すると、execute action=で指定されたURLに飛びます。
クリックしたときのexecute以外に、選択したときのpreviewというのもありますが、今回のアクセラレータでは使いようがなかったので使っていません。

さらに詳しい仕様についてはMSDNのOpenService Accelerators Developer Guideのページが参考になります。
 
 

まとめ

こんな感じでアクセラレータも簡単に作れますが、SimplePostはもっと簡単です。
SimplePostをうまく活用すれば、mixiカレンダーに予定を追加するボタンを自分のブログに載せるとか、いろいろと楽しいことができるはずです。
そして、SimplePostで物足りなくなってきたら、mixi Graph APIを使ってもっと高度なことを実現してみてください。
みなさまの素敵なアイデアをぜひ形にしてください!

ということで、やっぱりコードは書かなかったmilanoでした。