まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

タグ:facebook

facebook を使っていると、「今日は○○○さんの誕生日です!」というお知らせが届きますよね:
2017062101


ある程度以上の繋がりがあると、体感的にはほぼ毎日のようにこの機能を目にすることになります。もちろんちゃんと心の籠もったメッセージを作って、思い出の画像も用意して、・・・という人もいますが、中には「メッセージ考えるのも面倒くさい、そんなにお世話になってるわけでもないし、ってかこいつ誰だっけ?どんなメッセージを送るのがいいのかなあ」と頭を悩ませることもあります。そんなあなたの大切な時間を節約する Chrome プラグインを作ってみました。

このプラグインを Chrome にインストールして有効にすると、facebook の誕生日ページに移動して、そこに今日が誕生日でまだバースデーメッセージを送っていない人がいると、自動的に(あらかじめ用意した)メッセージを入力してくれます(自動投稿まではしません)。そのままで良ければ後は投稿するだけ、「この人にはちゃんとメッセージを書きたいなあ」という場合はそこから編集することもできます:
2017062100

(↑こんな感じ。自動的にバースデーメッセージが入力された状態になります)


プラグイン自体は github 上に公開しておきました:
https://github.com/dotnsf/fb_birthday_extension


上記ページから git clone するかダウンロード&展開して、ローカルシステム上に以下の3つのファイルが存在しているディレクトリを用意します:
2017062102


この中の script.js というファイルが拡張機能の本体となる部分です。中身は結構シンプルにこんな感じ:
var birthday_msg = 'ハッピーハッピーバースデー♪';

$(function(){
 $("#events_birthday_view div:eq(0) ul li ._42ef ._6a ._6b:eq(1) div div:eq(1) textarea").each(function(){
  var textarea = $(this);
  textarea.val( birthday_msg );
 });
});

1行目の birthday_msg 変数がバースデーメッセージです。必要に応じてこの内容を書き換えて使ってください。


では実際にインストールしてみます。Chrome を起動して拡張機能の画面(右上のメニューから「その他のツール」-「拡張機能」)に移動します:
2017062106


現在インストール済みの Chrome 拡張の一覧が表示されます。ここで「デベロッパーモード」が有効になっていることを確認し、「パッケージ化されていない拡張機能を読み込む」をクリックします:
2017062103


先程ダウンロードした3つの拡張用ファイルがあるディレクトリを指定します:
2017062104


すると "FB Birthdah" という名前の、この拡張機能が導入されます。「有効」にチェックを入れると、実際に facebook の誕生日ページで動くようになります。なお、導入後に script.js の中身を書き換えた場合は、この画面内の「リロード」をクリックすると、変更が反映されるようになります:
2017062105


これで上記で紹介したような心の籠もっていないバースデーメッセージを自動作成することができるようになっている、はず:
2017062101


※このプラグインはあくまで誕生日ページを参照した時に動作するもので、↓こんな感じのダイアログで出た場合は動いてくれません、あしからず:
20170621


「Facebook 上でよく使う言葉を調べるサービス、が個人情報を抜かれて危険だ」という書き込みを見たので、アプリ開発者としての自分の意見を書いておこうかと思いました。

まず、今回のアプリだけに限った話ではないのですが、基本的には全て自己責任という原則の中で行動すべきだと思っています。クリックするのも、アプリを実行するのも、ユーザー名とパスワードを入力するのも、それが正しいサイトかどうかを判断するのも、全部自己責任です。このアプリに限らず、過去もこれからも、です。



さて今年の問題のアプリの話ですが、「個人情報を集めて何に使われるか分からない規定になっているから」という理由で叩かれている気がします。それは事実だと思うし、それが嫌で使いたくないなら使わないのがいいと思います(繰り返しますが、今までの同様の facebook アプリにも言えることです)。 ただデベロッパー目線で話させていただけるならば、正直それをやられるとアプリを作る側は結構大変です。自分は仲間内のスケジュール確認的な facebook アプリを作っているのですが、ちゃんとしたプライバシーポリシーを僕個人が作って運用しているかというと、正直そこまで考えて作ってません。そこまでちゃんとしないと公開しちゃまずいかな?? という印象です。facebook アプリは良くも悪くもその辺りよく考えられていて、公開するにはプライバシーポリシーを明確にする必要があるのですが、個人デベロッパーでその辺りまで常に対応しないと公開できない、というのはちと厳しい(というか、他と比較して気軽に作って公開できない)、という印象も持っています。


ところで、先程「自己責任」という言い方をしたのですが、今回話題になっているサービスアプリに限って言うと、自分である程度はリスクをコントロールすることもできそうだったことに気付きました。一例として紹介しておきます。

例のアプリを使って診断しようとすると、facebook の OAuth 認証を経由する際にこのような画面が表示されます。ここで OK を押すと診断が開始されますが、その前にこのサービス提供会社にどのような情報が提供される可能性があるのかを確認することができます。「提供する情報を変更」という箇所をクリックしてみます:
2015120901


まさにこれから提供しようとしている(或いは提供されるかもしれない)情報の一覧が表示されます。今回のアプリケーションは自分の過去のタイムラインの内容からよく使っていた言葉を調べて、その結果を facebook に投稿して共有する、というものだと認識しています。ということは、自分の公開プロフィールは必要でしょうし、そのアプリから結果を投稿するための権限も必要になると思っています。ただし一覧には「友達リスト」も含まれています。この情報は提供しなくても動くんじゃないの?という気もしますね(この辺りは叩かれても仕方ないのかも・・・):
2015120910


試しに「友達リスト」の右にあるチェックマークをクリックして外してみました。これで友達リストが提供されることはありません。これで動かなくなる可能性もないとはいえないけど、ものは試し。この状態で OK をクリックします:
2015120911


・・・どうやら問題なく動いたっぽいです。これだと「必要ない情報を抜き出していたのかも」と言われても仕方はないですね:
2015120904


まあ今後、同様の facebook アプリを動かす際に気になるのであれば、こんな自己防衛の方法もあることを覚えておくと役立つ「かも」しれません。


最後に、一度このアクションを実行すると、このアプリには自分のプロフィール情報や投稿権限(そしてチェックを外さずに実行した場合は友達リストへのアクセス権)も与えた状態になっています。知られちゃったものは仕方ないけど、もう一度共有するつもりはないので、投稿権限はもう解除していいはずです。 というわけで、最後にこのアプリを削除する方法を紹介します。

facebook の「アプリ」を選択します:
2015120912


権限を与えたことのあるアプリの一覧が表示されるので、ここで「設定」をクリックします:
2015120906


「Facebook でログイン」タブ内から削除したいアプリを探します。画面に表示されない場合は「全て表示」をクリックします:
2015120907


今回消したいアプリは "vonvon" というアプリだったので、こいつを探して、「削除」をクリックします:
2015120908


削除するかどうかの確認ダイアログが出ます。併せて、vonvon を使って過去に投稿した内容(つまり自分がよく使った言葉の投稿)ごと削除するかどうかの選択ができます。投稿ごと削除したい場合はチェックを入れます。で「削除」をクリック:
2015120909


これで権限ごとアプリは削除されます。ただし、一度提供した情報を彼らが保存していない、という保証はどこにもありません。そこは全て自己責任ということで。


偶然見つけた PC 版 facebook の機能です。

この機能を使うと facebook 画面内で友人が紹介している記事リンクを簡単に自分の投稿のリンクにすることができます。

例えばこんな記事リンク付きのメッセージを見つけたとします(牧さん、勝手に紹介してすみません。でもこのメッセージのおかけでこの機能を偶然発見したのでした)。青線で括った箇所が記事リンクの部分です。
2014092601


この青線の部分をマウスでクリックして、そのまま画面最上部の自分のメッセージを入力するところ(「今どんな気持ち?」と書かれている箇所)までドラッグします。
2014092602

そこまでドラッグするとこんな表示に切り替わります。ここでマウスを話してドロップします。
2014092603


これで自分のメッセージにドラッグ&ドロップした記事リンクが付いちゃいます。後は必要に応じて自分のメッセージを書き加えて投稿するだけ。
2014092604



この機能、実は有名なのかな?僕が知らないだけだったりして??




 

ネットワーク(もしかして Facebook ??)の調子があまりよくない時に気付いた小ネタです。
Facebook を PC のブラウザでページの一番下までスクロールした時の様子。

んー??? こんな感じがしばらく続いて・・・
2014032601

 
で、しばらく待つと中身が入ってこんな感じに(加藤さん、おいしそうな画像使わせていただきました):
2014032602
 

一番下までスクロールして、「次のデータを取りに行こう」とした段階で空のフォームだけは先に描画しちゃってるんですね。で、AJAX とかで中身が取れたら埋める、と。

普段は AJAX で取得するまでが一瞬だと思うので、こんな順序で描画されていることに気付けません。たまたまネットワークの調子が悪かったか Facebook からのリターンが遅れていたことで Facebook 流(?)の方法に気付けました。ラッキー!


 

このページのトップヘ