Pages

2009-10-30

NASA が公式 iPhone アプリを出した

NASA が公式の iPhone アプリを出した。アプリの名前は「NASA app for iPhone」。

機能は 4 つ。

  1. NASA Mission の紹介
  2. 最新写真の公開
  3. 最新ビデオの公開
  4. NASA 公式 Twitter のつぶやき表示

Mission の紹介からは、各ミッションへの「写真」や「ビデオ」、「Twitter」へのリンクも張られている。

また、最新の写真・ビデオはそれら全ミッションの写真・ビデオを並べたものだけれども、検索機能を使って絞り込みが可能。ロケットの発射写真やクルーの写真、ビデオにはロケット発射準備やインタビューなんてマイナーなものもある。

ただ星が好きなだけ? それなら、「Images」から「APOD」を選択しやう。NASA が撮った奇麗な宇宙の写真を堪能できる。現在、5238 Photos。これならすぐには飽きないね。

宇宙に興味を持ったことのある人なら、一つ入れておいていいアプリじゃないかしらん。

蛇足

NASA の Twitter は英語で呟やかれる。英語が苦手な人は、こちらがおすすめ。

日本で最も素晴らしい宇宙開発ニュース・サイトの Twitter。NASA のアプリも、sorae_jp の呟きで知った。

AMN の HT-03A モニター・キャンページ期間が終わる

約一か月半前。DoCoMo HT-03A のモニターに当選した。以来、Android の記事を書き続けてきた。10 本以上は書いたんじゃないかと思う。

特に、最後の一週間がすごかった。

もう、これでもかと盛り上がった。

そして現実が待っていた。

左手に持った「HT-03A モニターキャンペーンスケジュール」を見てみやう。モニター期間「9 月 12 日 (土) 〜 10 月 30 日 (金)」。

はい。モニター期間は今日が最後です。

せっかく 1.6 にバージョン・アップしたのに... Latitude が使えるやうになったと嬉んだのに。今日でモニター終了。

Android 端末はこれからどんどん市場に出てくるさうだし、そのうちの一台は買う。ただ、それまでの間、少し Android とは距離を置く。ただそれだけのこと。ハァ。

Android 版 Google Latitude は素晴らしい

Android では、裏で GPS 情報を常に監視することができる。そのため、GPS をオンにしておくと、定期的に Google Latitude に自分の居場所を通知してくれる。定期的にというのは、だいたい 3 分〜 10 分といったところで、もしかしたら移動量によって通知回数を減らすアルゴリズムでも入っているのかもしれない。GPS や通信はバッテリーを喰うからね。そして、GPS のオン・オフに関して言えば、電源管理ウィジェットを使うとホーム画面からタップ一回で切り替えられる。

一方、日本で Google Latitude を使えるもう一つの (そしてつい最近までは唯一の) スマートフォンである iPhone の場合はどうだったか? iPhone 版の Google Latitude はアプリではなくウェブ・ページとして公開されている。iPhone は GPS を持っているけれど、Latitude が GPS 情報を取得してサーバーに通知するのは、ユーザーが Latitude のウェブ・ページを開いたタイミングに限られる。

先日、こんなことがあった。秋のシルバーウィークのこと、ぼくは実家の新潟に帰省した。親には、iGoogle から Latitude でぼくの居場所を知られるやうにしていたので、ぼくが何時家を出たのかとか、新潟駅に着く時間の予測立てが出来るようになっていた。そして東京駅。さすがにシルバーウィーク開始日の昼とあって、列の終わりが見あたらない程ホームはごった返していた。指定席はおろか、グリーン席も満員。電話でさういふ状況を説明した。ところが、30 分もしないうちにちゃっかりと一席自由席に座れてしまった。疲れていたので、席についたとたん爆睡。iPhone には一度も触らなかった。驚いたのは親の方。「混んでいる」と電話があって Latitude を見れば 2 時間経っても、ぼくは東京駅から動かない。よほど席が取れないのかと覚悟していれば、いきなり「新潟駅に着いたよ。迎えに来て」とぼくから電話が鳴る。Latitude のページを開かないと「居場所」が更新されない iPhone の悪い所が出た。この時ほど、自動通知してくれる Android 版の Google Latitude を羨ましく思ったことはない。

自動通知以外の Android 版にしかない機能

Android 版 Google Latitude の良さは、iPhone と違って、Google Maps アプリの一部になっていること。Latitude で友達の位置を表示しながら、ローカル検索やルート検索 (車・電車・徒歩の 3 種類) が両方とも同じだけど、インターフェースの統合具合が違う。iPhone 版は無理やり「メニュー」を突っ込んだ感があるけれど、Android は普通に「MENU」キーから検索が行なえてとても自然。

また、Android 版では次の機能が使える

  • 地図を長押しすると Google Street ビュー
  • 「ステータス」を設定可能
  • 「友人」の詳細情報ページで「Google トークでチャット」という項目が追加されている

ステータスについて一言。これは Twitter のやうな機能。さういふと Twitter を使えばいいじゃないか? という声もあるかもしれない。けれど、Latitude のステータスは基本「自分の位置」と呟きがセットになっている。しかも、自位置を「現在地」「現在地を表示しない」「近所の目印的な場所 (保育園とかローソンとか)」と細やかに設定できる。また、Twitter の direct message よろしく、特定の個人にだけステータスを送ることが出来る。

あとがき

とにかく、自動通知してくれる Google Latitude の存在が楽しくてしょうがない。iPhone で Latitude をやっている人は、最近、Latitude のページを開かなくなってしまい、最後の場所通知が 3 日前なんてざらになってしまった。一方、HT-03A を持ってる人の居場所はほぼリアル・タイムで更新され、活気づいている。

HT-03A が Google Latitude に対応して初めて、日本で Latitude の楽しさが分かるやうになったと思う。

2009-10-29

Android 2.0 のウェブ・ブラウザーは HTML5 に大幅対応

Android 1.6 (donut) が昨日、ぼくの HT-03A に届いた。その日 (2009-10-29)、Google は Android 2.0 (eclair) のアナウンスを行なった。2.0 用の SDK が公開され、開発者は新機能に対応したアプリを作れるやうになった。

さて、Android 2.0 の Highlight ページを見てみませう。

魅力的な機能が並ぶけど、ぼくが一番ショックを受けたのは「Browser」の項目。特に HTML5 のサポートが強化されたという文言。サポートするのは次の 4 つ:

  1. Database API
  2. Application Cache
  3. Geolocation API
  4. video 要素のフルスクリーン・サポート

特に上の 3 つが素晴らしい。Database API はローカルで DB を作れる API。Application Cache はローカルに HTML・画像・JavaScript 等をダウンロードできる機能 (この 2 つを組み合わせると、オフライン・アプリが作れる!)。Geolocation API は、自分の居場所を Web の API からサービスに教える仕組み。ローカル検索等で便利に使える。一番の好アプリは Google Latitude でせう。

次バージョン・アップのパワーアップぶりを見ると、せっかく届いた 1.5 が霞む。ちょっと涙目。

Android 1.6 の電源管理ウィジェットは便利

Android 1.6 (donut) になって、新ウィジェットも追加された。その中で目を見張るのは「電源管理ウィジェット」。

インストール

ホーム画面を長押しして「ホーム画面に追加」をポップアップさせる。そして「ウィジェット」を選んで、一覧の一番下にある「電源管理」をタップ。これだけ

何がいいのか?

ウィジェットには 5 つのボタンが並んでいる。このボタンをタップするだけで省電力に関わる「機能」のオン・オフを手軽に出来る。今まで、「設定」画面の奥に入っていかないと変更できなかった項目を、ホーム画面からワンタッチで変更できる。

変更できる項目は次の通り:

  1. Wi-Fi
  2. Bluetooth
  3. GPS
  4. 同期
  5. 照度 (バックライトの明るさ: 最低・普通?・最大の 3 段階で変化させられる)

Android 端末 (スマートフォン) は電源喰いなので、細かにバッテリーを使うデバイス (機能) を ON・OFF できるのは嬉しい。iPhone にも欲しい。

Android 1.6 最大のウリは「検索」機能か?

先日、ようやくぼくの HT-03A にも Android 1.6 (donut) がやって来た。

見た目に大きな変化はなく、バージョン番号を確認しないと違いが分からない程度。

そんな中で大きく使い勝手を増したのが、「Android Market」アプリと「クイック検索ボックス」。旧 Android Market は有料アプリも使えず、正直アプリを探すのも一苦労だったけれど、今回のバージョン・アップで iPhone の App Store と同等レベルまで使い易くなった。けして App Store を越えたわけではないので、この話はここまで。

クイック検索ボックス

それよりも検索機能。この進化が素晴らしい。いわゆる「クイック検索ボックス」と呼ばれるもの。

検索履歴・予測検索・端末内検索を一つにまとめた検索機能を提供する。

このクイック検索ボックスが見つけてくれるものを列挙してみやう:

  • アプリケーション (起動が可能。インストールしたけど、深くに埋もれたアプリを探すのに便利)
  • 連絡帳 (メアドや電話番号など)
  • ウェブ検索 (入力したキーワードをウェブ検索)
  • ローカル検索 (入力したキーワードを地図で検索)
  • お気に入り検索 (お気に入りに入れたウェブ・サイトを検索)
  • ウェブ履歴の検索 (一度行ったことのあるウェブ・サイトも履歴から見つけてくれるっぽい)
  • 予測検索 (「eva」と入力したら、検索候補に「evangelion」「エヴァンゲリオン 新劇場版 破」「エヴァ」... が並んだ)

カレンダーや Gmail、画像検索・YouTube 検索はしないみたい。もっとも、良い検索語を入力していないだけかもしれないけれど...

ともかく、検索するなら、このクイック検索ボックスにキーワードを入力すればいい、っぽい雰囲気になっている。よく出来てる。

クイック検索ボックスへのアクセスは、ホーム画面の検索ウィジェットをタップするか、ホームで「MENU」キーを押して「検索」を選ぶ。

あと、これは HT-03A だけのアドバンテージだけど「検索」キー (虫眼鏡みたいなキーね) を押すことでもクイック検索ボックスを起動できる。ただ、この「検索」キーはいつでもクイック検索ボックスにアクセスできるわけではない。でもいろんなシーンで使えるので、とりあえず押してみるのが吉でせう。

2009-10-27

年の第一週を決めている国際規格 ISO8601

年の第一週は、「1 月 4 日を含む週」なんださうな。

これを決めているのが国際規格 ISO8601。日付と時刻の表記に関する国際規格で、正式名称は Data elements and interchange formats。「週」を決めているのは、この規格の一部にすぎない。Wikipedia に解説があったので、引用しませう。

年と週と曜日: YYYY-Www-D と表記する。ww は年内の暦週の番号で、年の第1週は 01、最終週は 52 または 53 となる。第1週は事実上1月4日を含む週に等しい。D は曜日を表し、月曜日が 1、日曜日は 7 である。

ISO 8601 - Wikipedia より引用

きっかけ

先日から、Google Calendar が週数を表示するやうになった。

ところが、2009-01-01 は 2008 年の第 1 週と表示されるのに、2010-01-01 は 2009 年の第 53 週と表示されてしまう。これはどういふことか?

悩んでいたら、sasuket 氏がコメントをくれた。ISO8601 なんじゃないか? と。

調べてみると、2009-01-04 は日曜日。ISO8601 では、曜日は月曜から始まるとされているから、2009 年は 1/1 から 1/4 までが第一週。1/5 以降が第二週になる。一方、2010-01-04 は月曜日。したがって、2010 年は 2010-01-04 を含む週を第一週とする。1/1〜1/3 は第 0 週になるのかな?

少し分からないことはあるけれど、Google Calendar がやろうとしていることは分かった。sasuket さん、ありがとう。

(注): 2009-01-01 を 2008 年の第 1 週にするのは、やっぱり Google Calendar のバグだよね?

DoCoMo HT-03A は静電式タッチパネル!

DoCoMo の HT-03A を、てっきり感圧式タッチパネルだと思っていた!!

ところが、先日、「静電式ですよ」というコメントを頂いた [Thanks: kokko さん]。

DoCoMo のページに確認しに行ってみると、確かに静電式と書いてある。

3.2インチの大型TFT液晶に、静電式タッチパネルで快適操作を実現しました。

docomo PRO series HT-03A : HT-03Aの特長 | 製品 | NTTドコモ より引用

このブログの中で、何度も、色んな場所で HT-03A は「感圧式」と書いて来たと思う。ぼくの大間違いだった。HT-03A は静電式。どうぞ、皆さんも、「感圧式」という (このブログで得たであらう) 間違った情報は忘れて頂きたく、よろしくお願いします。

実際のところは?

HT-03A のタッチパネル。実際のところはどうか?

これは思い込みもあると思うのだけど、iPhone と比べると同じ静電式とは思えず、感圧式の TouchDiamond と比べると格段の進化を遂げていた。HT-03A と TouchDiamond は同じ HTC 社が製造していて、以前 TouchDiamond のモニターをした時に「感圧式」の悪さにひどく悩まされた。そのせいで、HTC 社が静電式のタッチパネルを作ってくるという頭がなかった。ただ、「感圧式」にしては異常に進化したなぁ、と思ったのも確か。まあ、正体が静電式だったので、それは不思議ではなかったわけだけど...

あと、iPhone に比べて画面が小さいので、同じ静電式でも「ボタン」が小さめに表示されて押しにくい。これは、iPhone が手にスッポリ入る大きさに納まっていない点とトレード・オフになっている気がする。

最後に HT-03A の最大の欠点。画面の端に行くと反応が悪くなる。キーボードでいうと、「a」とか「q」という文字の入力でボタンを押せてなかったことが何度かある。ここは擁護のしようもないほど、明確な不具合なので、次機種 (?: 次バージョン・アップ?) では直して欲しいところ。

2009-10-23

NTT DoCoMo の HT-03A、Android バージョンを 1.6 へ!

NTT DoCoMo の HT-03A の Android 携帯電話がバージョン・アップする。旧バージョンは 1.5。新バージョンは 1.6。

更新開始日は 2009-10-23。つまり今日。

HT-03Aバージョンアップ手順ページによると、バージョンアップ・ファイルは自動的にダウンロードされる。あとは、ユーザーの意思でインストールするか、インストールを後で行なうか選べるらしい。バージョンアップ・ファイルのサイズは 16 MB。

あとがき

このニュースを、昨夜知って、ワクテカで朝まで待っていたのだけど、ぼくの HT-03A にはまだバージョンアップ・ファイルが降ってこない。Android 1.6 の新機能等は、バージョン・アップしたら別記事にしてお伝えしませう。

Google Calendar に、年日数・週数表示機能

一昨日の バースデー・カレンダーの記事を書いてて気付いたんだけど、Google Calendar は interesting calendars として、年日数や週数を表示するカレンダーもサポートしていた。これらは別々のカレンダーとして提供されている。年日数だけ表示することも可能なら、週数だけを表示することも可能。

年日数は、1/1 を 1 日目として数えるだけなので難しいことはない。

問題は週数。ぼくは月曜始まりのカレンダーにしていて、週数は「月曜日」のところに表示される。2009 年 1 月 1 日は木曜日で、その週の月曜日は 2008-12-29。マウスをホバーすると現れる表示は「Week 1 of 2008」。一方、2010 年 1 月 1 日は金曜日で、その週の月曜日は 2009-12-28。こちらの表示は「Week 53 of 2009」。そして、2010 年の第一週は 2010-01-04 から始まることになっている。週数計算にバグがある?

まあ、Google のことだから近いうちに直してくるでせう (それともぼくの週数の考え方が間違ってる?)。

インストール方法

  1. 「Settings」リンクをクリック
  2. 「Calendars」タブをクリック
  3. 「Other Calendars」セクションの右横に「Browse interesting calendars」というリンクがあるのでクリック
  4. 「More」タブをクリック
  5. 「Day of the Year」「Week Numbers」で Subscribe をクリックする

2009-10-22

Android の Open Wnn フリック対応版を入れてみた

Google Chrome 一周年記念パーティーにて、同じく HT-03A を持ってる方と歓談する機会を得て、「Android の OpenWnn フリック対応版が神アプリなんですよ」と猛プッシュされた。それなら、ぼくがエントリー書きますよ... と言って少々時間が空いてしまったけれども。まずはインストール方法から

インストール方法

  1. Home 画面で「Menu」キーを押して「設定」をタップ
  2. 「地域 > 設定/言語&字文入力」から「JapaneseIME」を ON に設定する

IME の変更方法

  1. テキストボックスで長押しすると、「テキストを編集」というダイアログ・ボックスが現れる
  2. 「入力方法」をタップ
  3. 「Japanese IME」を選択する

iPhone ユーザー的な設定

ここいらをチェックしておくと、iPhone っぽい動作になって、iPhone ユーザーは移行しやすいと思われる。

以下、設定のポイント:

  • トグル入力機能にチェック
  • 「英字 QWERTY キーボード」を「常に自動切り替え」に選択
  • 「数字 QWERTY キーボード」を「常に自動切り替え」に選択

iPhone との比較

フリック単体としての動きは、iPhone とそっくり。iPhone 使いのぼくとしては、HT-03A のデフォールトの入力方式には戻れないと思った。

OpenWnn 版の素晴らしい点を列挙しやう

  • 入力がスムーズ (iPhone 3G はもたつく。3GS はどうか知らないけど)
  • 変換候補の出がはやい (2〜3 文字入力するだけで、すぐに変換候補が現れる: iPhone はもう少し入力しないと候補が現れないことが多い)
  • 変換候補が多い (iPhone が一行しか変換候補を出さないのに対して、OpenWnn 版は 2 行で候補を出す)

とにかく入力がスムーズになるのが大きい。

iPhone ユーザーが一番苦しむのは、「変換候補」の表示位置が iPhone と OpenWnn 版で違うところ位いではないかな?

最後に iPhone 版の良い点も書いておく:

  • 画面が大きい
  • 静電式でタッチが軽くても反応する
  • キーボードの見せ方がスマート (色使いとか、アニメーションとかね)

もし、HT-03A の購入を「フリック入力がないから」というだけでためらっているのなら、「OpenWnn フリック対応版で解決だよ」、と強く主張できる。それ程に質が高い。

2009-10-21

Google Calendar の「お誕生日」カレンダーがバースデー・ケーキを表示し始めた

Google Calendar には、友達のお誕生日をカレンダーに表示する機能 (拡張カレンダー?) がある。これを設定しておくと、友達の誕生日が分かって便利。表示は至ってシンプルなもので、「○○'s birthday」といふものだった。

ところが、昨日あたりからこの「お誕生日」カレンダーが進化した。

Google Calendar - Birthday Cake 「バースデー・ケーキ」のアイコンも表示するやうになったのね。何気にこれが目立つ。

「誕生日」情報って、思い出すのに便利なんだけど、いつも表示されてるとうざくなって、いつも表示されてないと気付けない。なんて矛盾を持つ。これなら、カレンダーの色を目立たない系にしておいて、それでいて目につきやすくなるんじゃないかな? とてもいい機能だと思う。

あとは、Google が調子に乗って、いろんなアイコン集を沢山出してカレンダーを混乱させないことを願うのみ。数が少なくて限定的だから、分かり易くていいんだからね。

お誕生日カレンダーの設定

  1. 「Settings」リンクをクリック
  2. 「Calendars」タブをクリック
  3. 「Other Calendars」セクションの右横に「Browse interesting calendars」というリンクがあるのでクリック
  4. 「More」タブをクリック
  5. 「Contacts' birthdays and events」で Subscribe をクリックする

これでお終い。

Contacts の誕生日情報は、次の 2 か所から取得される。

  1. Gmail の Contacts で設定した「Birthday」
  2. Google Profile で友達が設定している誕生日

Google Profile で誕生日が設定されている場合、カレンダーからその誕生日の詳細情報を開くと、Google Profile へのリンクが表示される。

Android の「降水確率ステータスバー」が便利

Android アプリ「降水確率ステータスバー」をインストールした。

このアプリ、アンドロイド (HT-03A) のステータス・バー (というか Notification Bar) に延々と降水確立を表示するだけという機能。その表示も味気ないもので、「10%」とか数字が並ぶだけ。このシンプルさがいい。邪魔でなく、最小限にして最も必要とする情報を教えてくれる。Android を開いた時、時間を知るのと同じ感覚で「降水確立」が分かるというのは、とても良い。

詳細

ステータス・バーを下に引っ張ると、もう少し詳しい情報が表示される。といっても二行分。こんな感じ:

10% 横浜の天気予報
晴のみ曇 降水確率 10%        09/10/20

天気が分かる程度ね。

更にステータス・バーの情報部分をタッチすると、詳細情報が表示される。

  • 今日の天気
  • 今日の降水確率
  • 明日の天気
  • 明日の最低気温
  • 明日の最高気温
  • 明日の降水確率
  • 天気予報の発表日時

設定は、この詳細情報画面で「MENU」キーを押してメニュー・パネルを表示し、その中から「設定」ボタンを選んで行なう。

設定できる場所は一か所のみで、その地域設定も粗め。天気予報情報の自動更新機能も ON/OFF できる。「ステータスバーに降水確率を表示する」というチェックもあるけれど、このアプリを入れておいて、このチェックを外したらアプリの価値はないに等しい。

iPhone との比較

iPhone には、このやうに、ユーザーに常に情報を通知する手段がない。

今回の天気予報アプリは、Push 通知を受け取るタイプではないけれど、ステータス・バー (通知バー) の魅力を十分伝えるものだと思う。最近は、Android が iPhone に勝っている一番の部分は、この「ステータス・バー」なのではないかとすら思っている。

Lamy2000 壊れる

6 日前、愛用の多色ボールペン Lamy 2000 が壊れてしまった。

Broken Lamy 2000

iPhone で写真を撮ったのでよく見えないかもしれない。Lamy は軸の真ん中あたりがクルクルっと回って、リフィルを交替できるやうになっている。壊れたのは、このネジのつけ根。

普通に書いてて、何かグラグラするなぁ、と思ったらボールペンが折れるやうに形が変わっちゃった。何かと思って、軸を回してみたら、この通り。

Lamy の魅力は、静かなノッキング・システム。手に馴染むこと。そして、安物のやうにすぐに壊れないこと、と思っていたのだけど、三つ目の魅力はなくなったと思っていいのかなぁ。というのも、この Lamy 2000 は 2009-08-20 に買ったばかり (実はお盆の帰省の際に、一本失くしてしまったの)。まだ、2 か月と持ってない。これじゃあ、100 円ボールペンと変わらない。

最近、忙しくて販売店にも顔を出せていなかったけど、時間を見つけて交換を要求してみるつもり。保証書とか手元にないから、無理かもしれないけどね。

2009-10-16

Beatles Mono Box is shipped from Amazon

昨日、9/30 頃に注文した Beatles Mono Box [Remasterd] を発送したよ、とのメールを頂いた。メールの送信元は Amazon 本来 Mono Box は 9/9 発売だったのだけど、予約だけで完売し、発売日ギリギリ前に予約した人は、受け取れない状況だった。初回限定発売という事もあって、もう買えないのでは? との声もあったけど、Amazon はやってくれた。 入荷困難となった時点で、10 月中に再入荷があるとのメールが届き、その後も入荷のさらなる遅れに対して、フォローのメールが続いた。 そして、ようやくの発送。きっと明日の午前中には受け取れるんじゃないかと、わくわくしてる。 - Posted using BlogPress from my iPhone

MsysGit で ssh のパスフレーズがパーミッション・エラーで使えない不具合

MsysGit 付属の GIT BASH で、過去記事の通りパスフレーズの設定を行ない ssh $host したら、次のやうなエラーが出て困った (ワーニングは下記の参照元をコピペした)。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/Users/xxx/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/xxx/.ssh/id_rsa
Permission denied (publickey,gssapi-with-mic).

.ssh/id_rsa ファイルのパーミッションが 600 になっていない。危険なので ssh 接続は行なわなかったよ。という警告。

GIT GUI 付属の chmod でパーミッションを変更しやうにも、パーミッション値が変わらない。

git-bash$ cd .ssh
git-bash$ ls -l id_rsa
-rw-r--r-- 1 masayuki ataka 2 2009-09-16 06:20 .ssh/id_rsa
git-bash$ chmod 600 id_rsa
git-bash$ ls -l id_rsa
-rw-r--r-- 1 masayuki ataka 2 2009-09-16 06:21 .ssh/id_rsa

Cygwin 付属の chmod ならパーミッションを変更できた、やうに見えるけど

cygwin-bash$ git-bash$ cd .ssh
git-bash$ ls -l id_rsa
-rw-r--r-- 1 masayuki ataka 2 2009-09-16 06:22 .ssh/id_rsa
git-bash$ chmod 600 id_rsa
git-bash$ ls -l id_rsa
-rw------- 1 masayuki ataka 2 2009-09-16 06:23 .ssh/id_rsa

GIT GUI 付属の ls で確認するとパーミッションが元に戻ってる。

git-bash$ ls -l id_rsa
-rw-r--r-- 1 masayuki ataka 2 2009-09-16 06:21 .ssh/id_rsa

そのせいか、GIT BASH 経由で ssh 接続にパスフレーズが使えない。

困った

解決方法

原因を一つに絞り込めていないのだけど、次の作業を行なったら不具合が解決した。

  1. Windows の環境変数「CYGWIN」を削除した
  2. Windows の環境変数「HOME」を削除した

両方の環境変数を削っても、Cygwin 及び MsysGit を使う上で特に問題は起きていない。

時間がなくて調べ切れてない。もしかしたら「HOME」を削除しなくても良いかもしれない。あと、環境変数「CYGWIN」には「ntsec」という値が設定されていたのだけど、その値の意味も調べてない。他の値に変更するだけでも動いたのかもしれない。詳しい方、コメント下さい。

MsysGit の Git GUI でパスフレーズ入力省略

Windows 用 Git 環境「MsysGit」をインストールすると、「Git GUI」というコマンド・ライン用アイコンと、「Git GUI」という GUI 版の Git (Linux でいうところの git-gui そのもの) が起動する。

ssh プロトコルで接続

Git repository が ssh プロトコルで公開されていると、git clone や fetch や push の度にパスワードを求められて困る。そこでコマンド・ライン派の人達におススメなのが、ssh の passphrase を使って、ssh-agent & ssh-add によりパスフレーズ入力を省略する方法。

Git Bash でそれを行なう場合、やり方は Unix と同じ。

GIT GUI でも、パスフレーズ入力を省略したい

GIT GUI は、Tcl/Tk で書かれたスクリプト (MsysGit には Tcl の実行コマンド wish も入っている!)。なので、GIT BASH で ssh-agent & ssh-add した後に続けて、GIT GUI に相当するコマンドを実行してやればいい。さうすると、コマンドラインから起動した GIT BASH ではパスフレーズ入力が不用になる。

実際の手順はこの通り:

$ ssh-agent bash
bash-3.1$ ssh-add
bash-3.1$ wish /c/Program\ Files/Git/libexec/git-core/git-gui

いささかコマンド・ラインが長い。.bashrc を作っておくと便利。

# .bashrc
alias git-gui='wish /c/Program Files/Git/libexec/git-core/git-gui'

使い方は、分かるよね。一応、書いとくと:

$ ssh-agent bash
bash-3.1$ ssh-add
bash-3.1$ git-gui

もう、Git GUI のアイコンは要らないね。全部 GIT BASH を使ってしまえばいい。

2009-10-15

SSH の passphrase 入力を省略する

ssh でログインしたり、scp コマンドでファイルを転送したり。こんな時、面倒なのが Password/Passphrase の入力。ただし、Passphrase を作っている場合に限り、このパスフレーズ入力をセッション中省略することができるやうになる。

Passphrase の設定方法は過去記事を参照してもらうことにして:

ssh-agent と ssh-add

使うコマンドは 2 つ。ssh-agent と ssh-add。

前者の引数で、パスフレーズを省略する「コマンド」を指定する。

後者のコマンドを実行すると、Passphrase の入力を促され、その後「ssh-agent」で起動したコマンドが終了するまでの間、Passphrase 入力を省略できる。

例えば次のやうにすると、

$ ssh-agent emacs &
$ ssh-add

Emacs の中から svn+ssh したりする時にパスフレーズの入力を求められなくなる。

まあ、ほとんどの人は、bash を ssh-agent の引数に渡すでせう。

$ ssh-agent bash
$ ssh-add

これで、ssh も scp もパスフレーズ要らずになるし、bash から起動する GUI 系アプリも (パスフレーズを要求されるのであれば) パスフレーズを省略できる。

ただし、bash を ssh-agent の引数に与えると、セキュリティー的には弱くなってしまうことには留意されたし。

MsysGit -- Windows 用 Git クライアント

Windows で git したい人には、2 つの選択肢がある。

一つは Cygwin についている git コマンドで、git-core パッケージからインストールする。これはほぼ完璧な Git のコマンドで、Linux 上で git を使うのとほぼ同じやうに使うことが出来る。問題は、Cygwin のパッケージ自体が大き過ぎること。git 一つだけ使うのに Cygwin インストールをためらう人は多いかもしれない。

そこでもう一つの選択肢。MsysGit。Git を使うための Minimam な SYStem をインストールしてくれる。

Minimum なシステムとは、git だけでなく、bash, cp, mv, rm, mkdir, rmdir を当然として ssh, perl, wish (Tcl) 等を含む。

インストール

msysgit のページから、「Git-1.6.4-preview20090730.exe」をダウンロードしてダブル・クリックするとインストール画面が動く。基本、デフォールトのままで良いと思うけど、一応自分が気になったところをコメントしておく:

  • 「Adjusting your PATH environment」。。。「Run Git from the Windows Command Prompt」を選んだ。
  • 「Choosing the SSH executable」。。。「Use OpenSSH」を選んだ。Plink はどうも使い方が良く分からなくて ^^;
  • 「Choosing CR/LF behavior」。。。「Use Unix style line encoding」を選んだ。改行コードの設定。Unix な人達と一緒に開発してる時は、この設定は必須かと。

使い方

「Git Bash」アイコンをクリックすると、ターミナルが起動する。コマンド・ライン派の git 使いは、こちらを使うと良いでせう。問題は、デフォールトで起動するターミナルが cp943 (Shift_JIS) しか対応していないこと。utf-8 で書いた commit log が git log コマンドで文字化けする。どうしやう...

コピペについては、clmemo@aka: Cygwin の黒いターミナルにクリップボードの中身を貼り付ける を参考にされたし。

ref

Cygwin の黒いターミナルにクリップボードの中身を貼り付ける

Cygwin で bash ターミナルを開くと、Windows のクリップボードの中身を貼り付けられなくて苦労する。

そこで重宝するのが、getclip といふコマンド。

$ getclip
Windows でコピペしたごにょごにょ

Linux コマンドをウェブ・ページからコピペして実行したい? そんな時はこんなコードを .bashrc に埋め込んでおく。

alias p=`getclip`

「p」と入力するだけで、クリップボードの中にコピペしたコマンドを実行できる。

Git Bash にもどうぞ

Cygwin さえ入っていれば、Git Bash (MsysGit より) からでも getclip を呼べて便利。長〜い git clone のための URL をコピペできなくて泣きさうになってた人は嬉ぶはず。

Git Bash と Cygwin 両方入れてる人がどれ程いるかは疑問だけど :p

2009-10-14

Android (HT-03A) は Push 通知が素敵

iPhone と Android の比較。Android は、iPhone に比べて「Push 通知」が素晴らしい。

メールを例に挙げませう。

通知用 LED

Gmail にメールが届くと、スピーカー横の小さな緑 LED が点滅する。ユーザーは、HT-03A の画面を開くことなくメールの到着を知ることができる。

LCD (画面) を灯けると、それだけでバッテリーを消費してしまう。画面を灯けずにメールの到着を知れるこの LED は素敵。

実を言うとこの時点では、本当に「メールが届いた」のか、「カレンダーの予定」がお知らせされたのか、はたまた「Twitter にリプライがあった」のかを区別して知ることは出来ない。ただ、何かの通知があったことだけを知ることができてるだけ。何の「通知」かを知るには、ハード・キーを一回押す必要がある。

通知用バー (Notification Bar)

ハードキーを一回クリックすると、ロック画面が現れる (ここで「MENU」を押すとロックが外れる)。

Android はこのロック画面で、「何の通知が来た」か知ることが出来る。画面上の Notificiation bar (通知用バー) を見てみやう。そこに「@」(アットマーク」の印がついていたら、メールが届いている。「1」(数字の 1) の場合はカレンダー通知。

小さな小さなアイコンだけど、その意味する所は大きい。ロック画面を解除しなくても、「LED」が光っていたのが「メールが届いたから」なのかそうでないのかを知ることができる。

通知用バーを引き下げる

メールが届いていた。内容を確認したい。

Gmail アプリを起動する必要があるだらうか? 実はその必要はない。

まず、MENU ボタンを押してロックを解除したら、通知用バーを引き下げるやうにドラッグする。すると、「通知」内容の詳細が表示される。メールの場合、「新着メール 未読 8 件」という具合。そこで更に「新着メール」と書かれた部分をタップすると、勝手に Gmail アプリが起動する。ぼくらユーザーの側からメール・アプリを起動しに行く必要はない。

これがメールの通知じゃなくて、予定 (カレンダー) の通知だった場合は、カレンダー・アプリが起動して予定の詳細を表示してくれる。

iPhone との比較

iPhone の場合、「Push 通知」は各アプリまちまちで、一か所に集まっていない。何かの通知が入っても、統一感がないのでスマートさがない。

例えば、メールであれば「メール」アプリのアイコンに表示される「未読数」をチェックしないといけない。メール・アプリが画面に表示されてなければ、画面をスクロールして表示する必要がある。とても面倒。

Twitter クライアントの Echofon はもう少しスマート。通知が来たタイミングでポップアップが現れる。

けれど、どの iPhone アプリでもさうだけど、「ロックを解除」しないと通知が来たことする知れない。これは、画面も灯けずに「通知」があることをお知らせしてくれる Android に圧倒的に遅れを取っているところだと思う。

といふわけで、「通知」から「メール確認」までをスムーズに出来るおかげで、Gmail のチェックは専ら Android で行なうことが多くなった今日この頃。モニター期間が終わって、Android を返すのがツラい。

ssh-copy-id -- SSH の public-key を送るコマンド

ssh で passphrase 認証を通すためには、秘密キーと公開キー (public key) の組みを使って、公開キーをホスト PC 側の .ssh/authorized_keys に追加する必要がある。

先日知ったのだけど、ホスト PC 側に公開キーを一発で登録するコマンドがある。それが ssh-copy-id。使い方はこの通り。

$ ssh-copy-id [user@]host-machine

このコマンド一つで

  1. host-machine の ~/.ssh~/.ssh/authorized_keys のパーミッションが設定され
  2. ~/.ssh/id_rsa.pub ファイルの中身が [user@]host-machine:~/.ssh/authorized_keys に追記される

もし、デフォールトの ~/.ssh/id_rsa.pub 以外をホスト PC に送りたい場合は、-i オプションを使う。

$ ssh-copy-id -i ~/.ssh/id_foo.pub [user@]host-machine

ssh-copy-id を使うためには、ホスト PC へログインする権限が必要。なので、ほとんどいつでも使えそう。authorized_keys なんて typo しそうなファイル名をタイプしないだけで、このコマンドをありがたく感じる。

2009-10-09

Google Chrome で FaviconizeTab

Firefox の拡張の一つに FaviconizeTab がある。「タブ」を favicon だけ残して小さくしてしまう拡張機能。タブが多くなると重宝する。

この FaviconizeTab 機能を Google Chrome の Extentions で作れないものかと思っていたのだけど、先日の Google Chrome 一周年記念パーティーで恐ろしいことを聞いた。既にこの機能は Chrome の一部に入っている!

Pin

Google Chrome - Pin

Google Chrome の FaviconizeTab 機能は「Pin」と呼ばれている。やり方は二通り。

  1. タブを右クリックして「Pin Tab」を選ぶ (赤丸で囲んだところ)
  2. タブを左の方に動かして、ウィンドウから離れるかどうかの位置に持っていく (緑の四角で囲んだところ)

解除は逆にする。タブを右クリックして「Pin Tab」のチェックを外してもいいし、タブを動かすだけでも解除される。

どのバージョンから使えるやうになってるか知らないけれど、少くとも Linux 版の Google Chrome 4.0.213.1 で動作することは確認した。

あとがき

あとは本家の FaviconizeTab のやうに、自動 Faviconize 機能が付いてくれると嬉しい。と、昨日のパーティーでさりげなく中の人に言っておいた。

Google Chrome 一周年記念パーティーに参加した

Google Chrome の誕生一周年を記念して、東京は青山にてパーティーが開かれた。

概要はこんな感じ

  • 日時: 2009-10-08 (木) 19:30-21:15
  • 場所: スタジアムプレイス青山 Hall A
  • 参加人数: 150 人

まずは、及川氏の挨拶で幕を開け、ショート・プレゼンを挟みながら懇親会。最後にジャンケン大会 (全敗 :p) をして締めの挨拶であった。

10/8 の朝は台風がやって来たとあって、イベント開催そのものを心配したけれど、夜になってみれば台風一過。朝の混乱は何だったの? というほど普通にイベントが開かれた (準備する側は大変だったかも)

今回のイベントの感想を列挙式に並べてみる。

  • 全体として、Artist Theme リリースをメインに置いたイベントだったかな? でも、150 人もいると、ショート・プレゼンの多くはよほどでないと声が聞こえなくて、周りの人との歓談になってしまった。
  • 女性が多い! とにかく多い。1/4 は女性だったのでは? しかし、話をした女性は受付の人だけ。まあ現実そんなものさ。
  • 知った顔が多い! Going My Way の Kengo さん、Android の会の安生さん、HTML5 でチューターをなさった白石さんと羽田野さん。その他、AMN ブログで見かける主催者側の顔も参加者側の顔も見ることが出来た。逆に「顔見知り」発動で、知らない人に声を掛けることが出来なかったのは反省すべき点かな。
  • Google の中の人と話すと楽しい。HTML5 で知り合いになった CSS3 関連のお仕事をなさっている方をきっかけに、Chrome 回りの開発者計 3 人と話しをした。開発の舞台裏とか、Firefox の拡張で手離せない話とか、Emacs エディター大好きとか。色々脱線したけれど、新しい顔を知れて楽しかった。「Stuff」バッチを付けてる人に積極的に話しかけていくべきだったかと反省。

Google Chrome は、今年の頭にOut of Beta Party をしたかと思えば、今はもうバージョン 3 がリリース中。まだ、誕生一年しか経っていないのが嘘のよう。これからも、嵐のやうな開発が続くことを願う。そして、ウェブの世界をどんどん変えていって欲しい ;)

2009-10-08

今日、Google Chrome 一周年記念イベント

東京は青山にて。

台風が心配。辿り着けるかしらん。

日本の Amazon で Kindle が買える

今、Amazon.co.jp にアクセスすると、「Kindle が買えるよ〜」というページが表示される。

Kindle Wireless Reading Device (6" Display, U.S. & International Wireless, Latest Generation)

B0015T963C
Amazon.com 2009-10-19
Sales Rank :
Average Review star

See details at Amazon
by G-Tools

Kindle は、Amazon が発売している電子書籍専用リーダー。値段は 279 ドル (約 3 万円) で、2009-10-19 発売。Amazon 内で発売されている電子書籍、約 35 万冊を買って読むことができる。

メリット

  1. 薄くて、かっこいい
  2. 電地長持ち (電子ペーパー採用)
  3. 画面が大きい (6 インチ)
  4. 安い (普通の本を買うより定価は安め)
  5. 早い (注文したら 3G 回線ですぐに入手可。本の配送の手間なし)

デメリット

  • 英語の書籍がメイン
  • 白黒表示 (本にカラーは要らないという話もある)

あと一つ、気になっているのは 3G 回線の回線料はどうなるのか? ってこと。ここもリーズナブル (か端末内に含まれるか) しないと、手を出すのはこわいなぁ。

そんなわけで、とりあえずぼくは「待ち」。皆のレビューを見てから決めることにする。英語の本で、そんなに読みたいと思う本もないしね (あ、でも O'Reilly の技術本は魅力だなぁ。売ってるのかなぁ?)

Amazon, 本に加えて CD、DVD、TV ゲーム、PC ソフトを送料無料に 〜 11/4

2009-09-11 から始まった Amazon の「本の送料無料」キャンペーン。よっぽど効果が大きかったのか? 味をしめたのか? 本だけでなく「CD、DVD、TV ゲーム、PC ソフト」も「送料無料」キャンペーンが始まった。両キャンペーンとも、期限は 2009-11-04 まで。

Amazon は 1500 円以下の商品に対して送料を要求する。なので、Amazon ユーザーは 1500 円を越えるやうに、商品を組み合わせて買う必要があった。特に文庫本とかマンガ本なんて 500 円近辺の商品は、一冊じゃあ注文できなかった。だから、「本」で送料制限が外れるのはとても嬉しい。

一方、CD や DVD といった商品は千円を切る方がマレ。CD のアルバムで 1500 円以下というと、一部のクラシック CD 位いしか思い当たらないのだけど... そんなに買い手があるようにも思わないし。う〜ん、シングルなんかがお買い得になるのかな?

このキャンペーン。気を付けないといけないのは、家電・オフィス製品・ホーム製品・食品・ヘルス・おもちゃ・ファッション・スポーツ・DIY なカテゴリーには適用されないこと。ちょっと 150 円程の消しゴムを。なんて注文しないよう、お気を付けあれ。

本や CD に関しては、せっかくのチャンスなので、気になる商品があればこれをチャンスと買ってみるのも良いかもね。

蛇足

年 3,900 円払って、全商品送料無料の Amazon Prime に入っている身としては、このキャンペーン。ちょっとくやしい気がしないでもない。

2009-10-07

Git リポジトリーを Subversion にリポジトリー追加 (Git-svn の応用)

Git で管理していたプロジェクトを、Google Codes (Subversion) にも突っ込んだ。面倒だったので、ちとメモ。

Git repository の作成

まずは Git repository の作成。lpaldb というプロジェクトを作る。

$ mkdir lpaldb
$ cd lpaldb
$ touch README
$ edit index.html
$ ...
$ git init
$ git add .
$ git commit -m 'first commit'
$ cd ..

Google Codes のレポジトリー

Google Codes の Hackathon 用リポジトリーは、複数のプロジェクトを次のやうに管理している。

/branches
/tags
/trunk
  /Hackathon-Title
  ...
  /gae20090411
  /gae200906
  /html5_20091003
/wiki

trunk 以下のハッカソンごとのプロジェクトを。更にその下の各人のプロジェクトを置く形式。

今回は、/trunk 以下の html5_20091003 の下に自分のプロジェクト lpaldb を突っ込む。

Git Svn

Git Svn を使うと、Git で Svn のリポジトリーを操作できる。

ただ、hackathon-jp はとても大きなリポジトリーなので、全てのリポジトリーをローカルに持って来るのは大変。必要なコードも一部だけなので、それは避けたい。

そこで、/trunk/html5_2009103 以下だけを取って来た。git svn clone に Trunk を指定する -T オプションを使う。

$ git svn clone https://hackathon-jp.googlecode.com/svn/trunk -T html5_20091003 html5

これで html5 というディレクトリーが出来る。

これにさっきの git repository を追加する。

$ cd html5
$ git fetch ../lpaldb master:lpaldb

lpaldb (git) を lpaldb branch として html5 に取り込み。

$ git checkout lpaldb
$ mkdir lpaldb
$ git mv html lpaldb
$ git mv README lpaldb
$ ...
$ git commit -m 'Move lpaldb source into lpaldb dir'

lpaldb branch をきれいにしたら、master ブランチに merge。その後、本家 svn repository へアップする。

$ git checkout master
$ git merge lpaldb
$ git svn dcommit

これでお終い。フゥ、一苦労。もっと楽な方法があったら教えて下さい。

lpaldb -- LP Album DB 開発中

先日の HTML5 Hackathon で何を作ったか書いておく。

HTML5 では Web DB が使えるといふことなので「LP (レコード) 用の DB」を作ってみた。いやさ、作ろうとした。ぼくの技術力不足で、アルバム・タイトルを入力して検索する程度までしか出来てない。アルファ版とも言えないでき。周りの人達が、フレームワークやライブラリーを使い込なしているのを見て、Emacs が書き書きするだけの自分の力不足を感じた。

開発プロジェクト

それはともかく、ソースコードは Github と Google Codes に置いてある。

開発は GitHub で続けていくつもり。Google Code には、同じく Hackathon に参加した人達と一緒にソースコードを共有する意味で置いた (HTML5 のソースを見るなら、ぼくの情けないソースコードより、Google Codes の他の人のソースコードの方が役に立つ!)。

LP Album DB というけれど...

レコードって大変。CD のやうに iTunes に読み込ませたら、アルバム名・曲名が分かるわけじゃない。

そこで、レコードの情報を DB として持っていて共有できる仕組みがあればと考えた。だけど、すぐに開発に入れるわけもなく、無為に時間を過ごしているとやってきたのが HTML5 Hackathon。

Web DB のお題に丁度良いんじゃないか? と思ったわけ。

ところで、こんなアプリを作らうと思ったのは、友人の影響が大きい。彼は大の LP 好き。そして、そろそろ LP の管理に困り始めている。

LP 用の DB なんて、CD 用を少しいじれば... と思っていたけど、それほど単純でもないらしい。A 面と B 面があったり、イギリス盤とアメリカ盤で収録曲がズレてたり、モノラルとステレオでテイクが違っていたり... オリジナル盤に近い方が音が良いとか。Matrix 番号も記録できるといいとか。せっかく友達のために作るアプリなんで、なるたけマニアックな対応をしていきたいと思ってる。

レコード・ファンの皆さんも、何か要望があればコメントをどうぞ。正式版アプリが出るのは 1 年以上先になると思うけど ^^;

2009-10-03

Apple の Mini DVI-VGA アダプターを使ってみた

先日 Amazon に注文した Apple Mini DVI-VGA アダプターが届いたので、早速使ってみた。

Apple Mini DVI-VGAアダプタ

接続したのは、ぼくが何年も使ってる Sony のブラウン管ディスプレー Multiscan G420。19 インチ。解像度 1600x1200。ディスプレーの入力切替 (2 系統) を内蔵しているお優れもの。一方の入力を Linux にして、もう一方を MacBook に繋げる。

繋げ方は簡単。

  1. MacBook の Mini DVI ポートにアダプターの Mini DVI 端子を挿す
  2. ディスプレー側の VGA 端子にアダプターの VGA 端子を挿す
  3. MacBook でディスプレー切替ボタン (ぼくの MacBook では F7 の所にあった) を押す

これだけ。

これで、ディスプレーに MacBook 上の映像と同じものが表示されるやうになった。解像度は Mac 側に合わせて、1280x800 におちている。プレゼンなんかは、このモードでやればよさそう。

デュアル・ディスプレーに挑戦

一台の PC で 2 つのディスプレーを使うという「デュアル・ディスプレー」。マウスが片方のディスプレーからもう片方へと移っていくのが格好良くて憧れていた。

Mini DVI-VGA アダプターがあれば、MacBook でデュアル・ディスプレーが可能になる。

  1. アップル・メニューから「システム環境設定」を開く
  2. 「ディスプレイ」を選択
  3. (ここで「メニューバーにディスプレイを表示」にチェックを入れておくと、あとあと設定変更が楽になる)
  4. 「調整」タブをクリック
  5. 「ディスプレイをミラーリング」のチェックを外す

これで、ディスプレーを MacBook の液晶とは別物として使えるやうになる。マウスをディスプレーの端まで持っていって、更に横に動かすと、もう一方のディスプレーからマウスがニョキっと現れる。楽しいなぁ。

外付けのディスプレー側は、解像度の変更も可能。MacBook の解像度と合わせる必要はない。ぼくは、MacBook を 1280x800 で、外付けディスプレーを 1600x1200 に設定した。

Apple LED Cinema Display

Apple のサイトを見ると、更に Cinema Display (24 インチ!) なんてのもあるそうね。

ディスプレー・サイズも魅力。それ以上にいいのが、MacBook への電源を供給する機能があるってこと。あと、USB ポートが 3 つ付いてるのもいい。ディスプレー側に USB キーボードを挿しとける。そしたら、会議で出かける時に MacBook をディスプレーから外すだけでいい。電源はフルになってるはずだし、USB キーボードを外す必要もない。マウスは無線の Mighty Mouse でいいよね。

ああ、とっても物欲を刺激されちゃう。でも買わないよ。まだ買わないよ。

Apple LED Cinema Display 24 MB382J/A

2009-10-02

HTML5 Tech Talk -- Canvas 編

告知通り HTML5 の Tech Talk に参加した。セッションは二つ。

  • オフライン・ウェブ・アプリケーションを作るための API の説明
  • HTML5 で絵を描くための Canvas の説明

本エントリーは後者の Canvas セッションのメモ書き。

Canvas VS. SVG

ウェブ・ブラウザーで絵を描くといったら、SVG が有名。Canvas は何が違うのか? 相違点を列挙して下さった。

Canvas
  • JavaScript を使って描画
  • 描いた図を個別に認識できない (JavaScript で後からいじれない: 位置をずらすとかね)
  • 描画が高速
  • ピクセル操作が可能
SVG
  • XML 形式のマークアップで図を表現
  • 描いた図を個別に認識できる (JavaScript で後からいじれる)
  • 要素が増えると重くなる
  • ピクセル操作は不可能

結果、Canvas はマンデルグローブ集合のような複雑な図を描くのが得意で、ウィジェットのやうにユーザーが使う UI 部品を作るのが苦手となる。Canvas と SVG は適材適所で使うと良いらしい。

実践編

この後、Canvas で絵を描くための命令を個々に紹介して下さった。その例を見て、絵を描いてみるよ。

「Canvas Test」ってリンクをクリックすると、四角が表示される。

Canvas Test
<script type="text/javascript">
  function draw() {
    var canvas = document.getElementById('canvas-test');
    if (canvas.getContext) {
      var ctx = canvas.getContext('2d');

      // Path
      ctx.moveTo(50,50);
      ctx.lineTo(50,75);
      ctx.lineTo(75,75);
      ctx.lineTo(75,50);
      ctx.closePath();
      ctx.stroke();
    }
  }
</script>
<canvas id="canvas-test" width="100" height="100"></canvas>
<a href="javascript:draw();">Canvas Test</a>

Canvas 要素で描画領域を作って、その要素から getContext が返すインスタンスに対して「JavaScript で描画を行なう」というのが基本。

で、色々と関数を教えてもらった。

beginPath, lineTo, closePath, arc, arcto, bezierCurveTo, strokeStyle, fillStyle, stroke, fill

何か見たことのある命令ばっかり。

PostScript!!!

違うのは、PostScript の四則演算・for 文・if 文を JavaScript で書けること。こりゃ便利。昔の PostScript のコードも移植できるかもしれない。Canvas 楽しいねぇ。誰か Canvas の BlueBook を出さないかしらん。

HTML5 Tech Talk -- API 編

告知通り HTML5 の Tech Talk に参加した。セッションは二つ。

  • オフライン・ウェブ・アプリケーションを作るための API の説明
  • HTML5 で絵を描くための Canvas の説明

本エントリーは前者の API セッションのメモ書き。

HTML5 でオフライン・ウェブ・アプリケーションが作れる

HTML5 では、オフライン・ウェブ・アプリケーションを作る仕組みが整い始めている。その大部分は、Google が Gears で行なっていたもの。ところが、Gears を使ったウェブ・サービスは少ない。数えるほどしかない。

その理由に、「Gears がブラウザーのプラグイン形式」であったことを挙げていた。

HTML という規格自身が、オフライン・ウェブ・アプリケーションの機能を持つメリットとして次の 3 つを挙げていた。

  1. モバイル端末・ネット端末への普及 (特にこれらの機器にはオフライン・アプリのニーズがある)
  2. プラグインという足枷からの解放 (何といってもウェブ・ブラウザー自身がサポートするのだから)
  3. 標準化による開発者の増加 (今はどうしてもノウハウと人材が不足している)

講演はオフライン・ウェブ・アプリケーションを作る 4 つの API の説明と、自作ライブラリーの紹介だった。ただ、自作ライブラリーは今年中の公開予定といふことなので、今回のエントリーでは割合。4 つの API 名は以下の通り。

  1. Application Cache
  2. Web DB
  3. Web Storage
  4. Web Workers

以下、列挙式にメモを書いていく。

Application Cache

  • manifest ファイルに、ローカルに保存するファイル (HTML, JavaScript, CSS, Images, etc.) を書いておく
  • ウェブ・サーバー側で、manifest 用の MIMETYPE を設定する
  • <html manifest="foo.manifest"> のように指定する
  • manifest file がサーバー側とローカル側で一致しないと、キャッシュのやり直しが始まる
  • コメント (バージョン番号) を変えたりするのがコツ? (でも Firefox は最新版でも未対応?)
  • キャッシュ・ファイルを編集してもアップデートはされない (あくまで、manifest ファイルのアップデートがトリガー)
  • Application Cache を ON にしていると、開発しづらい。開発時は使わないか、manifest を自動生成させると良い。
  • JavaScript である程度、Notification の制御も可能

Web DB

  • オフライン・ウェブ・アプリケーションを作る時の核になる
  • JavaScript の中から SQL を叩ける
  • 他ドメインの DB にはアクセスできない
  • ドメインごとに複数の DB、複数の Table を作れる
  • 非同期型と同期型がある
  • ウェブ・サーバーなしでも動く

Web Storage

  • 他ドメインのストレージにはアクセスできない
  • Local Storage (永続的) と Session Storage (ウィンドウごと) の二種類がある。後者は JavaScript のグローバル変数のやうなもの?
  • Webkit は file:// だと使えない
localStorage.setItem("key", "value")
var val = localStorage.getItem("key")

Web Workers

  • バックグラウンドで動作するスレッドのようなもの
  • でも本当のスレッドではない
  • 変数を共有できない
  • window, document にもアクセスできない
  • DOM にもアクセスできない
  • デバッガーで止められない
  • すぐ複雑になる
  • Worker 間の通信には Message を使う (DOM へのアクセスは UI Thread にやってもらうよう Message を送る)

課題

  • ノウハウの蓄積が少なすぎる
  • 差分アップロード/ダウンロードをどうやって実現しよう
  • フェイル・セーフ対策は?
  • 同じデータを他の人が変更してたら Conflict しちゃうよ
  • LocalDB のないブラウザーがある (Fx)

あとがき

ここら辺のメモを少し深く勉強して、明後日の (というかもう明日か) の Hachathon に臨む。ドキドキ。

Amazon が「当日お急ぎ便」スタート

Amazon が「当日お急ぎ便」なるサービスを始めた。これ、名前は似ているけど今までの「お急ぎ便」とは違う。「お急ぎ便」に『当日』が付いてる!!

「当日お急ぎ便」と「お急ぎ便」の違いを表にしてみた。

サービス名内容料金
当日お急ぎ便注文確定の「当日」に商品を届ける500 円
お急ぎ便注文確定の「3 日以内」に商品を届ける300 円

ユーザーはどうやってこのサービスを使い分けるのか? 実は使い分ける必要はない。

お届け先、注文時間帯、商品によって、当日お急ぎ便が表示される場合と、お急ぎ便が表示される場合があります。どちらのお急ぎ便を利用するかは選択できませんのでご了承ください。

Amazon.co.jp: ヘルプ > 配送 >  お急ぎ便 > よくある質問 より引用

かなり思い切った設定だねぇ。

このサービス、Amazon プライムに入ってると「当日お急ぎ便」「お急ぎ便」の区別なくサービス料が無料になる。

その他のメリット

  • 関西でも「当日お急ぎ便」「お急ぎ便」が利用可能になった
  • 東京 23 区内への「当日お急ぎ便」は、注文確定時間が延びた
  • 関東・関西では、「お急ぎ便」で翌日配送
  • 四国・九州では、「お急ぎ便」で翌日配送の商品が増えた

あとがき

注文するまで、「当日お急ぎ便」になるか「お急ぎ便」になるか決められないのは痛いね。ぼくは Amazon Prime に入っているので、そーゆーのを気にしなくて済むけれど、普通の人は気になると思う。あ、でも、そういふ人は「お急ぎ便」自体たのまないのかな。どっちにしても有料だしね。

ぼくは Amazon Prime に入ってる余裕さで、Michael Jackson の CD を 2 枚買っちゃった。いつも Book Off で探すんだけど、Michael だけは安く売ってないから。明日、届くのが楽しみ。

ref

Thriller (25th Anniversary Edition CD/DVD)
Michael Jackson
Thriller (25th Anniversary Edition CD/DVD)
曲名リスト
1. Wanna Be Startin' Somethin'
2. Baby Be Mine
3. The Girl Is Mine (with Paul McCartney)
4. Thriller
5. Beat It
6. Billie Jean
7. Human Nature
8. P.Y.T. (Pretty Young Thing)
9. The Lady In My Life
10. Vincent Price (bonus track)
11. The Girl Is Mine 2008 with will.i.am ( Previously Unreleased Track For 25th Anniversary Edition )
12. P.Y.T. (Pretty Young Thing) 2008 with Michael Jackson and will.i.am ( Previously Unreleased Track For 25th Anniversary Edition )
13. Wanna Be Startin' Somethin' 2008 with Michael Jackson, Akon and will.i.am( Previously Unreleased Track For 25th Anniversary Edition )
14. Beat It 2008 with Fergie( Previously Unreleased Track For 25th Anniversary Edition )
15. Billie Jean 2008 with Kanye West ( Previously Unreleased Track For 25th Anniversary Edition )
16. . For All Time (unreleased track from original Thriller sessions) ( Previously Unreleased Track For 25th Anniversary Edition )

Amazonで詳しく見る
by G-Tools
HIStory: Past, Present and Future, Book I
Michael Jackson
HIStory: Past, Present and Future, Book I
曲名リスト
1. Billie Jean
2. Way You Make Me Feel
3. Black or White
4. Rock with You
5. She's Out of My Life
6. Bad
7. I Just Can't Stop Loving You
8. Man in the Mirror
9. Thriller
10. Beat It
11. Girl Is Mine
12. Remember the Time
13. Don't Stop 'Til You Get Enough
14. Wanna Be Startin' Somethin'
15. Heal the World

1. Scream
2. They Don't Care About Us
3. Stranger in Moscow
4. This Time Around
5. Earth Song
6. D.S.
7. Money
8. Come Together
9. You Are Not Alone
10. Childhood [Theme from "Free Willy 2"]
11. Tabloid Junkie
12. 2 Bad
13. History
14. Little Susie
15. Smile

Amazonで詳しく見る
by G-Tools