twitter を眺めてたら、昔自分が作った Color Illusion Generator を外国の人が取り上げてくれていた。
発信源をたどってみると、110 万人ものフォロワーを持つ認証済みアカウントの有名人さんが紹介してくれていたようだった。
この @peeweeherman さんはアメリカのコメディアン「ポール・ルーベンス」氏のようだ。Wikipedia によると、1990 年ごろに子ども向けテレビ番組で「ピーウィー・ハーマン」というキャラクターで人気になったらしい。日本でも和光証券(現みずほ証券)の CM にも出演していたようだ。
日本だと、ガチャピンさん(@GachapinBlog)が子ども向け番組で人気だったし、フォロワーも 114 万人いるので、立ち位置がかなり近い。
つまり、今回の件は日本人に分かりやすくいうと
「ガチャピンが twitter で自分のサイトを紹介してくれたらどうなるか」
という話なのである。
さて、100万人のフォロワーを持つアカウントからリンクされるとどうなるんだろう。
アクセスログを分析して 5 分ごとのアクセス数をグラフにしてみた。

紹介直前まではアクセス数 0 だったのに、紹介後約10分でいきなり 1,000 アクセスを達成。そこをピークに一気にアクセス数は下がり始め、1時間後には 5分あたり 100アクセス弱に落ち着いた。
その後、第2の山がくることはなく、順調にアクセスは減り続けた。その日の終わりには 1 時間に 60 アクセスほどに落ち込んでいた(といっても、いままでは 1 日に 10 アクセスもないようなコンテンツだったので、それでも異常事態には変わりない)。
結局この日の総アクセス数は 6,300 件。うち twitter 経由は 2,200件、facebook 経由は 3,000 件だった。twitter 経由でのアクセスよりも、facebook からのアクセスが多いのが興味深い。twitter で紹介されたこともあり、初動は twitter が大きかったものの、そこから先は facebook 経由でのアクセスのほうが 1.2〜2.0 倍で推移していった。
そして、twitter、facebook のいずれも、潮が引くのが早い。著名なブログなどで取り上げられたときなどは、少なくとも半日ぐらいはアクセス数を維持してくれた記憶があるが、twitter や facebook ではそうはいかない。真の意味でバズるには、単発の爆発だけでは全く役に立たない。多くの人がリツイートしたくなるような魅力的なコンテンツでなければならない。
紹介してもらった日からの日別アクセス数は、6,300 → 536 → 187 → 96 → 63。いまでは元通りの平穏なアクセス数に落ち着いてしまった。
日本のフォロワー数ランキングは
となっており、100万人を超えるのは2人のみだった。
世界1位はレディーガガさん(@ladygaga)。フォロワーはなんと 1,800 万人。格が違いすぎる。100 万人のフォロワーがいる人は、世界に 600 人ぐらいいる。世界は広い。
ちなみに自分(@nitoyon)のフォロワーさんは 2,300 人。100万人と比べるとゴミのようである。。。
(参考)
今回の件を3行でまとめる。
今年もよろしくおねがいします。今年最初のエントリはうちの年賀状です。

龍で子どもといえば、まんが日本昔ばなし以外には考えられなくなったので、原作をベースに作成しました。
自分が龍に扮装し、妻子を背中に乗せております。実生活でも同じように家族を支えられるよう希望を込めて…。
昔、1年前の自分を知りたくて 全自動ブックマーク棚卸し というものを作りました。最近だと、1年前の twitter や facebook の書き込みがメールで送られてくる timehop というサービスもあるようです。
娘が生まれて、自分の親との会話も増えてきました。そんな中、「自分が子どもの頃はどうだったのか」を聞く機会も多く、娘の成長と一緒に自分の人生を最初から振り返っているような感覚があります。
以上、1年前を振り返るだけでは物足りなくなっていたら、いつのまにか30年前を振り返るツールができあがっていた、という話でした。
C++ の定番ライブラリ Boost はいまや不動の地位を得ていますが、機能が多岐にわたりすぎていて、何から使い始めていいのか分からずにとっつきにくい印象がありました。
Boost 関連の情報を探していて、Boostを使用しているプロジェクト - boostjp というページを見つけました。このページでは、Boost 公式ページ上の
にリンクしています。この3ページでは、様々な製品やプロジェクトで利用されている Boost のコンポーネントが紹介されています。
せっかくなので、利用数ランキングを集計してみました。多くのプロジェクトで利用されているコンポーネント=定番機能、という単純な発想です。
早速1位から10位を紹介!!
| 順位 | コンポーネント名 | 利用数 |
|---|---|---|
| 1 | Boost.SmartPointers | 24 |
| 1 | Boost.Bind | 24 |
| 3 | Boost.Regex | 20 |
| 4 | Boost.Function | 17 |
| 5 | Boost.StringAlgorithms | 14 |
| 5 | Boost.Thread | 14 |
| 7 | Boost.TypeTraits | 12 |
| 7 | Boost.DateTime | 12 |
| 7 | Boost.Tuple | 12 |
| 7 | Boost.FileSystem | 12 |
| 7 | Boost.Iterator | 12 |
上位に入っている多くの機能が、C++0x では標準ライブラリに取り込まれるようです。
ちなみに10位以下は次のようになっています。
プログラマブルなコマンドライン ランチャー CraftLaunch 3 が楽しい で CraftLaunch 3.Xを紹介しました。
いままで自作プラグインとして、
を公開しましたが、そのあと、さらに6つ作って便利に使っているので紹介しておきます。
ソースは全て https://github.com/nitoyon/clnch3_extensions に置いています。
CraftLaunch から特定の URL を開くのが便利になります。本体の機能でも特定の URL を開く機能はありますが、「コマンド名;パラメータ」の形で入力する必要があって不便なので、; を不要にしてみました。
入力例:
@nitoyon と入力して Enter を押すと http://twitter.com/nitoyon を開くrfc822 と入力して Enter を押すと http://www.ietf.org/rfc/rfc822.txt を開く登録は、config.py に次のようにして正規表現で定義します。
# config.py の configure() 関数に次のように記載します import url_alias #reload(url_alias) url_alias.register(window, { 'regex': re.compile('^rfc(\d+)$', re.IGNORECASE), 'url': 'http://www.ietf.org/rfc/rfc%param%.txt' }, { 'regex': re.compile('^@(\w+)$'), 'url': 'http://twitter.com/%param%' }, )
BTS やメーリングリストの番号をブラウザで開けるようにするとお仕事でも便利!
コントロールパネルや管理ツールのアイテムを開けます。
コントロールパネルや管理ツールの各アイテムは日本語版 Windows ではキーボードでアクセスしにくいので、キーボード派の人には便利じゃないでしょうか。
Windows 8 開発者プレビューでの開発を試していたところ、非同期プログラミングを簡単に書ける await キーワードが面白かったので紹介します。
Windows 8 用に Metro アプリを開発する場合、WinRT(Windows Runtime)というフレームワークを使ってプログラミングします。
WinRT では、UI 応答速度を上げるための工夫として、少しでも時間がかかる可能性のある処理は、非同期の API のみが提供されています。
なんかめんどくさそうですよね。
いえいえ、そんなことはありません。.NET 5 から導入される async/await キーワードでとても簡単に書けてしまいます。
たとえば、HelloWorld アプリケーションでは次のようなサンプルが紹介されています。
// UI を表示するページのコンストラクタ // UI スレッドで実行される public MainPage() { InitializeComponent(); // RSS/Atom を読み取る GetFeedAsync("http://windowsteamblog.com/windows/b/developers/atom.aspx"); } // 非同期に RSS/Atom を読み取るメソッド // async キーワードがついているので、非同期で // 実行される可能性がある // (メソッドの完了を待たずに、呼び出し元に // 処理を返すことがある) private async Task GetFeedAsync(string feedUriString) { SyndicationClient client = new SyndicationClient(); Uri feedUri = new Uri(feedUriString); try { // 非同期で RSS/Atom を読み取る // await キーワードがあるので、GetFeedAsync() // メソッドは処理の完了を待たずに、いったん // 呼び出し元に return する SyndicationFeed feed = await client.RetrieveFeedAsync(feedUri); // ここから先は、非同期で RSS/Atom を // 読み取り完了時の処理 FeedData feedData = new FeedData(); feedData.Title = feed.Title.Text; foreach (SyndicationItem item in feed.Items) { // RSS の各要素の処理を行う } } catch (Exception ex) { // 非同期での RSS/Atom の読み取りに // 失敗したときの処理 TitleText.Text = ex.Message; } }
コメントで説明してしまいましたが、詳しく見ていきましょう。
標準Adobe AIR完全解説 に共著者として参加しました。