4月
25
2009
2

Twitter ダイレクトメッセージ誤配送の原因を推測してみた

Twitterの最新のバグ: "ダイレクトメッセージの誤配達"」という記事があって、Twitter のダイレクトメッセージ (DM) に超重要な情報を流すような人は、セキュリティ意識が足りてないよね~、なんて事を思っていた矢先、自分のアカウントにどうも「誤フォロー」では無いかと思われるお知らせメールが届きました。

フォローしてきたのは外人さんなんですが、TL みても普通の人だし、フレンズ数も普通。その後何度か見てもフレンズがばんばん増えているわけでもなく、ボットやスパムのたぐいではなさそう。
じゃあ、本当に興味を持ってフォローしてくれたのかというと、そんな要素は欠片も感じません。

唯一特徴的な点があるとすれば、たかだか 1 時間前の発言がその人の最初の発言で、「twitter twitter twitter! I finally joined :d」となっている事でした。どうも、すごい最近 Twitter を始めた人のようです。
そこで、このフォローが誤フォローだったとすると、DM の誤配信と同じ原因ではないかと気づきました。その原因を推測してみます。

Twitter のアカウントを特定する ID として公開されているものに数字の ID と文字列の ID があります。
文字列の ID も全体で唯一のものなので、API の呼び出し時に指定したりもできるのですが、元々本来のプライマリーキーは数字の方であると思われます。
そしてその数字が 32bit で管理されていた場合に、その数値を使い切ってしまったのでは無いでしょうか?*1

Twitter の利用者数はまだまだ 1 億にも届かないですし、32bit あれば約 43 億まで扱えるので不思議に思うかも知れませんが、実際に利用されているアカウントだけではなく、ボットやスパマによって日々作られ、消されているアカウントがそれこそ膨大な数存在するはずです。

プライマリキーを使い切ってしまうと何が起こるかというと、またゼロに戻ってカウントし直しとかになり、プライマリーキーの重複が発生してしまいます。
根本的にはこれが DM 誤配送や、誤フォローの原因になったのではないかと思われます。

もちろん、Twtiter 側もただ手をこまねいていたわけではないでしょうから、DB やカラムを追加するなり、文字列 ID を活用するなりして、対処したのだと思いますが、修正に漏れがあってプライマリーキーだけで判断する古い処理が残ってしまい、それが原因になったというわけです。

さらに言うのであれば、プログラミング的なミスではないと思います。
さすがにそれは相当頑張ってテストをしてからリリースしているはずなので、むしろ本番サーバへのリリース時にミスがあったのではないでしょうか?

Twitter を運用しているサーバが全部で何台あるのかは知りませんが、相当な台数のサーバで平行してプログラムが稼働していると思われます。
前述の修正プログラムを適用する時に、適用が漏れてしまったサーバ、適用に失敗した事に気づいていなかったサーバが存在したとすると、”一部に” 誤配送があった事にも説明がつくのです。

最初の誤フォローの話に戻ってみると、そのアカウントはかなり新しいものでした。
すなわち上記の推測が正しいとすると、最近友達何人かで Twitter を始める事になってお互いをフォローしあったんだけれども、最近の新しいアカウントはプライマリーキーが一周した後のアカウントだったため、同一のプライマリーキーを持った別アカウントをフォローしてしまった、というストーリーが考えられるわけです。

本当の原因は全然違うかも知れませんが、Twitter 側が「問題の原因は“弊社のサービスにおける基本的データの不整合性”にある」と言っている事からも、上記の推測もあながち外れていないように思うのです。

もし上記の推測が当たっていて、誤フォローが本当に発生したとすると、Twitter の発表とは裏腹に、まだ不具合が残っているかも知れません。
そもそも、公開を前提とした Twitter と、例えば Gmail のような非公開を前提としたサービスでは、設計思想からして異なっていて当然です。
今回の件に限らず、Twitter の DM が漏れる可能性は常にあると考えるべきです。
Twitter の DM 機能はあくまでオマケ機能として捉え、本当に重要な情報を Twitter でやり取りするのは控えた方が良いですね。

*1
実際の数値を見るとまだせいぜい 3000 万台がいいところなので、全然関係ないように見えるかも知れません。ですが、真のプライマリーキーは表に見せないのが普通なので、表に見ている数字の ID 自体、真のプライマリーキーから、アカウント作成時にエラーで弾かれたレコードを除いた総数なのだろうと考えています。
その場合であっても、真のプライマリキー自体はエラーで弾かれるたびに 1 つずつインクリメントされると思われるので、同様の論法が成り立ちます。

Written by Otchy in: Technology | タグ:
3月
23
2009
2

TinyURL を利用する危険性とその解決策

TinyURL を利用する危険性なんていうのは、おそらく色々と論じられていると思いますが、改めて書いてみます。

大きく分けて、2つの危険性があると思われます。
まず 1 つめは、短縮 URL からはどこに飛ばされるか分からないため、変なサイトにいきなり飛ばされてしまうんじゃないかというもの。
そしてもう 1 つは、TinyURL がサービスを終了してしまった場合に、すべてのリンクが無効になってしまうというもの。

1 つめの遷移先が分からないという問題については、実は TinyURL 自身が 2 種類の解決方法を提示しています。

まず、http://tinyurl.com/XXXXXX という URL に対して、http://preview.tinyurl.com/XXXXXX という URL にアクセスするようにすれば、いきなり遷移せずプレビューが表示されるという機能があります。
自作ツールに TinyURL を仕込む際、セキュリティが不安であればこちらを利用するのがよいでしょう。

次は、http://tinyurl.com/preview.php にアクセスして、プレビュー機能を有効にするというもの。
こちらであれば、クッキーに設定が保存されるので、設定したブラウザで開く http://tinyurl.com/XXXXXX はすべてプレビューされる事になります。
個人的にはこちらを推奨したいです。

いずれの場合であってもリテラシの低い人が引っかかってしまう予防にはなってないですが、そもそも TinyURL だからといって警戒しないような層は、そのドメインがどんなものであっても警戒しないような気がするので、関係ない気がします。

もう 1 つの TinyURL が終了してしまうリスクはどうでしょうか?

これに関しては実はあまり心配ないと思っています。
仮に経営が行き詰まってこれ以上続ける事が出来ない状況になったとしても、経営層がよほど馬鹿でない限り、適切な買い手にサービスを売り渡すと考えられるからです。
現状ほど成長したサービスであれば、サービス自身の売り上げが赤字であったとしても、そのブランドや SEO 的価値を欲しがる企業はいくらでもあるでしょう。

その意味では、短縮 URL サービスを選ぶにあたっては、もっともシェアのあるサービスを選ぶのが安全だと考えられます。
シェアの低いサービスほど、終了された時にそのままデータが失われる可能性が高いからです。

さすがに、天変地異が起きて全てのデータが消えてしまうという状況になったら、短縮 URL から元の URL を取り出せないという事態も起こりえます。ですが、TinyURL ほどのサービスであればディザスタリカバリも恐らく考慮されているでしょうし、そこまで心配するならもう短縮 URL なんか使うな、っていう話なので。

そんなわけで 2 つの危険性について考察してみましたが、1 つめの対策をしっかりとしていれば、さほど心配せずに使い続けてもいいんじゃないかと思います。
逆に TinyURL の後に出てきた新興の短縮 URL サービスなんかは、2 つめの危険性があって、どんなに便利な機能があっても恒久的に表示されるリンクには使う気が起きないですね。

Written by Otchy in: Technology | タグ:
3月
13
2009
2

別の PC のサービスをリモートで再起動する方法

普段仕事中は、2台の PC を使って作業をしています。
Synergy でキーボード共有をしていてウハウハなのですが、時たま調子が悪くなります。そんなときは、2台の PC のSynergy サービスを再起動すればいいんですが、そのためだけにわざわざサブ PC のキーボードを取り出すのはスマートじゃありません。

そこで、メイン PC から直接サブ PC のサービスを再起動するのですが、リモートでサービスをコントロールする方法が世間では意外と知られていないようなので、紹介してみようと思います。

使うのは mmc.exe というプログラムです。Win2k から標準搭載されています。

まず、Win+R (ファイル名を指定して実行) を呼び出し、mmc とタイプして Enter。mmc を立ち上げます。
次に、Ctrl+M (ファイル→スナップインの追加と削除) を選択し、Alt+D (追加ボタン) を押します。
スナップインの一覧が表示されたらその中から「サービス」を選択し、Alt+A (追加ボタン) を押します。

次がポイントになるのですが、サービスのスナップインを追加しようとする際に、接続先の PC を入力できるようになっています。ここで、Alt+A (別のコンピュータ) を選択し、「\\コンピュータ名」もしくは「\\IP」を入力して、Enter (完了ボタン) を押します。

ここまで出来たら、これまで開いたダイアログを閉じていくと、mmc 上にリモートコンピュータのサービスが参照できるようになっているので、サービスの起動も終了も思いのままになります。
もちろん、メイン PC でログオンしているユーザが、サブ PC の管理者権限を持っている事は必須ですので、その点はご注意を。

さてここではサービスを例にしましたが、mmc に追加できるスナップインはサービスだけでなく、他にも色々な事が出来ます。
その最たる例が「コンピュータの管理」スナップインで、これを追加すれば、リモートコンピュータに対して、サービスの再起動は元より、共有フォルダの追加、ローカルユーザの追加、イベントログの参照 etc. の事が出来てしまいます。

また、頻繁に使うようならば、開いたスナップインの状態を *.msc ファイルとして保存する事も出来ます。
*.msc ファイルのデフォルトの保存先はスタートメニューの管理ツール内で、次にそれを選べば関連づけられた mmc がすぐ立ち上がるという親切設計です。

そんなわけで、一度使うと手放せないツール mmc 。複数台の PC を使うならお勧めです。

12月
26
2008
2

Windows が Mac OS X よりも Linux よりも優れているたった 1 つのこと

LinuxがMac OS Xよりも優れている10のこと

全般的には、無理がある (というか一般人のリテラシの低さを侮っている) 論理で、Linux の方が優れていると結論づけられるわけでは無いのだけれども、#10 には大いに同意します。

#10:キーボードの効率性

私がMac OS Xに対して感じている最大の不満の1つは、通常の機能を持ったDelキーがない(訳者注:ワイヤードキーボードにはある)ということである。この機能を使うには、fnキーを押下しながらDelキーを押下しなければならないのだ。これはMac OS Xのキーボードを使用する際の常識であり、バリバリのプログラマーにとっては、サラダが健康に良いというのと同じくらい当たり前のことなのだ。しかも問題は Delキーだけに留まっていない。Endキー(訳者注:ワイヤードキーボードにしかない)も私の期待通りに動作してくれないのだ。カーソルを行末に移動させたい場合、fnキーを押下しながらEndキーを押下しなければならないのだ。
≪中略≫
LinuxのキーボードはMac OS Xのキーボードよりもずっと効率的なのだ。

Mac OS への移行を検討した時に最もネックになったのがキーボードの問題で、それ故に Mac OS へ移行を決断する事はありませんでした。
ただ、この点においては Windows が Linux を遙かに上回ります。というか、これこそが Windows を使い続ける最も大きな理由だったりするのです。

どういう事かというと、つまりはキーボードショートカットの事で、Windows アプリにおいては下記が特筆されます。

  • 標準的なショートカットが大半のアプリで共通
  • 上部のメニューバーへのショートカット (Alt+□) が標準化されている
  • 各種 GUI にフォーカスを当てるショートカット (Alt+□) も標準化されている
  • Windows キーを使うショートカットが充実している

左右の Ctrl/Alt/Shit/Win キーを左右の小指で使い分ける程のショートカットマニアとしては、画面上の様々な場所に、ショートカットだけですぐに到達できる事は、作業効率を上げるうえでとてつもなく重要なのです。

まず、画面上のボタンを押すのに、マウスを手にする事は無いです。
フォーカスの移動だって、逐次入力するようなインターフェースでない限り、 Tab では移動しないですよね。
フォルダの作成?
「Win+R → パスを入力 → Enter (エクスプローラが起動) → Alt+F → W → F → フォルダ名を入力 → Enter」に決まってるじゃないですか。

簡単に言えば「GUI をいかにキーボードだけで操作するか」という事なのですが、この点で Windows は抜きんでていて、それが故に Windows を離れられずにいます。
こういったインターフェースの標準化は、プロエタリな OS の大きなアドバンテージだと思いますし、この点においては Microsoft の姿勢を支持します。

OS では無いですが Microsoft つながりで言うと、一番感動したのが Office 2007 のショートカットです。
上部に配置されたリボンの評判は一般的に悪いですが、Alt で始まるキーボードショートカットが非常によく考えられていて、従来はフォーカスを持って行くのが大変だった、フォントサイズなどもわずか 3 ストロークで到達できます。

さらに驚いたのは、画面上にはメニューが表示されないにもかかわらず、Office 2003 までの Alt キーショートカットがそのまま実装されている事です。
皆さんもよくご存じの、Excel でグループ化するショートカット、「Alt+D→G→G」なども、なんとそのまま使えます。

Windows に関して様々なデメリットがある事は承知していますが、人間としてのパフォーマンスが最大化されるこのたった 1 つのメリットが、全てのデメリットの総和を上回っていると言っても過言ではありません。

今のところ Windows に追いつけそうな OS は見あたらないので、まだまだ当分の間は、サーバは Linux、クライアントは Windows という組み合わせを使い続ける事になりそうです。

Written by Otchy in: Technology | タグ: , , , ,

Powered by WordPress | Aeros Theme | TheBuckmaker.com