僕は発展途上技術者

公衆無線LANサービスの検索に便利な「モバイルマップ」リリース

「日経パソコン」のオンラインサイト「PC Online」のリニューアルに伴い、開発を担当した「モバイルマップ」がリリースされました。


» モバイルマップ|PC Online ビジネスパーソンのパソコン活用情報サイト


FREESPOT、BBモバイルポイント、FON(含livedoor Wireless) 、Mzone、フレッツ・スポット、ホットスポットの各種無線LANサービスのアクセスポイントを検索できるので、ノートパソコンを持ち歩き外出先が仕事場だ、という方には便利なサービスだと思います。


忙しいビジネスマンをイメージし、サッと使えるよう、使い勝手の良さを意識しました。


選択項目に応じてすぐに更新されるリストや、スルスルッとスクロールするところなどキャプチャ画像だけだと伝わりにくい部分もあるので、Jing というキャプチャソフトを使って動画を撮ってみました。


Mobile Map


Mash up Award 3rd が縁で知り合った ONGMAP の直鳥さん(7ns.jp)と一緒に開発を進めたので、Google Maps API まわりではいろいろとノウハウを教えていただきました。


また、これまた Mash up Award つながりで、開発環境に関して Sun Microsystems の渡辺様・河原様にアドバイスをいただき支援していただきました。ありがとうございました。


開発には Ruby on Rails を使用しています。ユーザーが触れるページは1ページだけですが、裏では各サービスから提供していただいた異なる形式のデータをインポート・変換したり、表示項目を変更できる一種のコンテンツ管理システムが動いています。管理側の画面についても使い勝手を重視し、編集部の方に実際に使っていただきながら、システムを改善していきました。Rails を使うことで、柔軟に要望に対応できたと思います。


7ns.jp 企画で、ONGMAP でも使用されている Ext JS を使った製品データベースも同時リリースなので、よろしかったらこちらもどうぞ。


» 日経BP社「PC Online」、モバイルマップ、商品検索DB


富士の見える席

今日は良い席が取れました。


photo.jpg


剣術修行のために江戸へ向かう途中、富士山を見て坂本龍馬が言う。



「しかし一瞬でもこの絶景をみて心のうちがわくわくする人間と、そうでない人間とは違う」


「龍馬がゆく(1)」(司馬遼太郎)


龍馬のように「日本一の男になりたい」などと大それたことは思いませんが、「頑張っていいWebサービス作ろう」程度は思うのでした。



竜馬がゆく〈1〉 (文春文庫)



司馬 遼太郎
文藝春秋
売り上げランキング: 588


おすすめ度の平均: 5.0

5 柔軟な思考と先見の明を兼ね備えた偉大な人物
5 新年に最高
5 政治とは何か、人が生きるのは何のためなのか
5 バイブル
5 ☆5つ






Firefox から Safari へ移行する方法

Safari 3.1 が速くて快適という話をあちこちで聞くので、この機会に移行しました。


Mac に移行しても Firefox を使い続けていたのは、Add-on や様々な便利機能と同等なことが Safari でもできるのかしら、と思っていたからです。


Firefox で愛用し、Safari に移行しても最低限欲しいと思っていた機能は以下の通り。



  1. マウスジェスチャー

  2. QuickSilverからのブックマーク呼び出し

  3. Greasemonkey、とくに AutoPagerize と、自作し愛用している

    » Amazonに調布市立図書館の蔵書検索リンクを追加するGreasemonkeyスクリプト : 僕は発展途上技術者


  4. Google はじめ Amazon など様々なサイトを呼び出せる検索バー


Firefox から Safari に移行し、これらの機能を Safari でも使えるようにする方法を紹介します。


0. ブックマークの移行


» 林檎はいかがですか? | FirefoxからSafariへのブックマーク移行方法<追記>


で解説されている方法で移行できました。


1. マウスジェスチャー


Firefox では


» All-in-One Gestures :: Firefox Add-ons


を使っていました。


Safari にマウスジェスチャー機能を追加する


» CocoaSuite


があり、一時はインストールすることを考えたのですが、よく考えたら僕が使うのは、「次のページへ進む」か「前のページへ戻る」ジェスチャーだけ。


MacBook Air ではタッチパッド上に指三本を置き、右にあるいは左にサッと払う swipe という動作で「進む」と「戻る」ができ、これで十分です。


2. QuickSilverからのブックマーク呼び出し


Mac のランチャーソフト QuickSilver を愛用しています。


» Blacktree


よりダウンロードできます


補完がきくので、たとえば Safari なら「sa」まで入力すると起動できたりするのですが、Firefox のブックマークも直接呼び出せて便利。


Safari のブックマークもバンドル済みのプラグインを有効にすることで使えるようになります。


3. Greasemonkey


Safari でも Greasemonkey 用ユーザースクリプトが使える


» GreaseKit - User Scripting for all WebKit applications


をインストールします。


これなしのブラウジングが考えられない AutoPagerize が動かず一瞬あせりましたが、代わりに


» Safari3 * GreaseKit1.4 でoAutoPagerize - 0x集積蔵


をインストールすればまったく問題なしです。


4. 検索バーの代わり Keywurl


Safari の検索バーは Google 検索しかできず、不満でしたが、


Keywurl


で代用できます。


以下のように定義済みのキーワードを Amazon -> a のように短くしたり、はてなブックマークを検索できるようにして使っています。


keywurl.png


Ruby Waves を Mac OS X Leopard 上で動かしてみた

昨日Railsワークショップ@新橋に参加しました。


Ruby の新しいフレームワークで Rails よりも軽くて早いという Waves を、チュートリアルに沿いながら動かそうとしてみたのですが、いきなり大いにはまりました。しかし「乗りかけた船」だったので、頑張ってなんとか動かすところまではこぎつけました。


» Ruby Waves: Home

» Ruby Waves: Tutorial, Part 1


インストールは簡単。


% sudo gem install waves


で入りますが、ずらずらっと10以上の依存しているパッケージがインストールされました。


で、しょっぱなの


% rake schema:migration name=initial_schema


のところで


Could not load mysql adapter:

no such file to load -- mysql


というエラーが出て、いきなりつまずきました。


調べたら、どうやら gem の mysql パッケージがインストールされていることが前提であることがわかりました。


ところが、Mac OS X Leopard だと、


% sudo gem install mysql


とやっても


ERROR: While executing gem ... (Gem::Installer::ExtensionBuildError)

ERROR: Failed to build gem native extension.


というエラーが表示され、インストールできないのです。


しばしはまるのですが、結局


» Nullcreations | Installing ruby mysql gem in OSX 10.5 (Leopard)


にあった解決法でうまくいきました。


% sudo su

% ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-dir=/usr/local/mysql

% install_name_tool -change /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib /usr/local/mysql/lib/libmysqlclient.15.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle


これで無事マイグレーションファイルを作成することができ、その後は順調にチュートリアルを進めることができました。


以下チュートリアルをやってみた感想です。



  • Controller と Model のコードをなかなかいじらない。つまり何も書かなくてもある程度のことができてしまうところが Rails と違う。

  • generator が Rake タスクであるところが、なんとなく美しいと思った。こういうタスクっぽいものは Rake から、と覚えておけば済むので、覚えることが少ない。

  • REST の概念に慣れてないととっつきにくいかも。

  • view がわかりにくい。チュートリアルでは Markaby というテンプレートを使用しているが、うーん、僕はちょっととっつきにくいかな、と感じました。これはデザイナとの協業に苦労しそう。

  • チュートリアル3の最後の方、@comments.map{ |c| c }.sort_by( &:created_on ).each do |comment| の .map{ |c| c } の部分が汚い、というかよくわからない。Sequel’s MySQL adapter の Limitation らしい。

  • エラーが発生したときに表示されるデバッグ用画面が Rails より綺麗。

  • チュートリアルでは jQuery を使っている。Rails のような Prototype.js との密な連携がまだ見られないが、連携するとしたらたぶん jQuery だろうことが予想される。jQuery はまだあまり詳しくはないのだけど、まわりの評判は Prototype.js よりも良いので、まあこれはいいことなのであろう。


まだできたてホヤホヤ。当然 Rails の方がはるかに完成されたフレームワークなので、いますぐ移行しようとは思わない。しかし、こうして新しいフレームワークに触れてみると、いままで「Rails すばらし過ぎる。Rails 以上のフレームワークなんて作るの無理だろう。欠点なんてみつけられない」と少なからず思っていたのが、「いやいやそうでもない。Rails にもまだまだ改善できそうな点がある」という、まあこれが正常な状態だと思いますが、そういう思考に戻されました。


気になるパフォーマンスですが、apache 付属のベンチマーク測定ツール apache bench を使って Rails の方は mongrel と比較してみました。Rails の方は Waves のチュートリアルで作ったものとほぼ同じようなテストアプリを作成して比較しています。


% ab -c 10 -n 1000 http://127.0.0.1:3000/entries


waves の結果が


Requests per second: 23.97 [#/sec] (mean)

Time per request: 417.104 [ms] (mean)

Time per request: 41.710 [ms] (mean, across all concurrent requests)

Transfer rate: 21.27 [Kbytes/sec] received


mongrel が


Requests per second: 8.70 [#/sec] (mean)

Time per request: 1148.924 [ms] (mean)

Time per request: 114.892 [ms] (mean, across all concurrent requests)

Transfer rate: 11.65 [Kbytes/sec] received


でした。


Requests per second が約 2.7 倍。


サーバーを動かしている同じマシンから測定しているのでちゃんと測定とは言えないですし、非常に簡単な構成ですから一概には言えないと思いますが、実際にブラウザで操作している感触でも、確かに waves の方がサクサク動く感じがしました。


せっかくなので、もう一つはまりどころを情報共有しておきます。


ベンチマークを計るときに waves server をデーモンで起動しようと、


% waves-server -d


と実行したところ、


/Library/Ruby/Gems/1.8/gems/waves-0.7.2/lib/runtime/server.rb:32:in `daemonize': uninitialized constant Waves::Server::Daemonize (NameError)


というエラーが出ました。


mongrel のデーモン起動のところの似たような処理の部分を参考にして、/Library/Ruby/Gems/1.8/gems/waves-0.7.2/lib/runtime/server.rb の31行目に以下の通り require 文を追加。




30 def daemonize
31 require 'daemons/daemonize' #この部分を追加
32 pwd = Dir.pwd
33 Daemonize.daemonize( Waves::Logger.output )


あと、アプリケーションのトップフォルダ直下に


% mkdir log


で log ディレクトリを作っておきます。


これで無事デーモンで起動できるようになりました。


rake のオブション

すぐ忘れてしまうのでメモ。


rake のタスクの一覧を表示するには、


rake -T


これはいいのだ、覚えてる。


このとき、各タスクの詳細説明が一行しか表示されない。


特定のタスクの詳細をもっとみたい場合は、


rake -D [タスク名]


これ、いつも忘れてしまうけど、ブログに書いたのでもう大丈夫。


つくるぶガイドブログ: 失敗しない Rails が動かせるホスティングサービス選びと環境構築

» つくるぶガイドブログ: 失敗しない Rails が動かせるホスティングサービス選びと環境構築


を書きました。


ソーシャル「OSを入れた後にインストールする10のアプリケーション」(仮) を作る過程をレポートしてきましたが、10回目の今回をもって終わりとさせていただきます。


最後は、いよいよリリースしようという段階で必要な、ホスティングサービス選びと環境構築について書きたいと思います。


自分の勉強にもなったのでやって非常に良かったですが、実況中継ブログは大変でした。


ホスティングサービス Slicehost のドキュメントがすばらしい

自分のサービスの一部をSlicehostというホスティングサービスに移行し始めている。


知っているアメリカ人のRailsエンジニアにすすめられ、Webで調べると評判が良かったので使い始めてみた。サインアップや管理画面のインターフェースがシンプルで使いやすく、使いはじめから好感触だった。


Ubuntu LTS で環境構築中なのだが、ApacheやPHP、Ruby on Railsなどのインストールを説明した環境構築のためのドキュメントが非常に充実していてすばらしい。


たとえば、


» Slicehost Articles: Ubuntu LTS setup - page 1(英語)


では、セキュアな ssh 環境の構築方法がシンプルにわかりやすく書かれている。


このドキュメントをみつける前に ssh 環境の構築方法について書かれた日本語の情報がないかと、結構検索してみてまわったのだが、これほど的確に必要十分な情報を提供している記事はみつからなかった。


Debian や CentOS などほかにサポートしている OS のためのガイドも用意されている。別に Slicehost を使わなくても、そうした OS のサーバー構築のための良質なドキュメントとして参照できる。


» Slicehost VPS tutorials and articles


よくわかっている人が書くドキュメントは説明が的確で、読んでいてフラストレーションがたまらない。これまでどっちかというとサーバー構築はあまり好きなほうではなかったのだけれど、もしかしたらそれは良質な情報に触れていなかったからなのかもしれない。Slicehost のドキュメントを読んでいると正しい知識が身についていく感触が気持ちよく、楽しんでサーバー構築ができる。


まだ使い始めで実際にサービスを運営してみないとわからない部分もあるが、いまのところは好感触。ホスティング先として VPS を考えている方におすすめしておきます。(もちろん、英語に抵抗なければですが)


» Slicehost


悪意あるコメントに傷つかない方法 -「BEST SOFTWARE WRITING」を読んで

Joel on Softwareで有名なJoel氏によるBEST SOFTWARE WRITINGを読んでいる。


Joel on Softwareはさすが名著と言われるだけあってすばらしかったのだけれど、タイミングを逸してブログに感想を書かなかった。


BEST SOFTWARE WRITINGの感想も読み終わるまで待っていると、もしかしたら書かないかもしれないので、まだ読んでいる途中なのだけれど、いまのうちにメモしておこう。


本書は、Joel氏がソフトウェア開発に関係する「これは読む価値がある!!」と思った様々な文章を集めてきたエッセイ集だ。


アダム・ボズワーズ「ICSOC04講演」の章、RSSの長所を説明しているくだりにこうある。


RSSとウェブログ(ブログ)で最も注目に値することは、Webにおける最大の悲劇のひとつである「議論の無礼さ」を解決しはじめたやり方だ。

(中略)

Webは、人々が他の人の考えに対する意見を、自分のウェブログへの投稿を通じてコメントする巨大な場となった。そのようにすることは、コメントに対して自分の評判を懸けることになる。それは決して安いものではなく、匿名でもない。


ブログを書いていて、幸い僕は悪意あるコメントに傷ついたり嫌な思いをしたことはほとんどないけれども、それでもちょっと気になったり、すこしむかついたことはある。はてなブックマークのコメントを見るのが怖い、という人の話も聞いたことがある。


そんなとき、これからは上で引用した言葉を思い出せばいい。


僕は僕の評判を懸けてブログを書いている。それに対して誰が書いたかわからない悪意あるコメントなんてこれっぽっちも価値がないんだから、そんなコメントを気に留めたり傷つくことは馬鹿げている。


スラッシュドットでは匿名の投稿者のことをAnonymous Cowardと呼ぶ。直訳すれば「匿名の臆病者」だ。


スラッシュドットジャパンでは匿名をAnonymous Cowardとそのまま表記しているのだけれど、これじゃあ真意は伝わっていないと思う。「Anonymous Cowardってどういう意味だろう?なんかかっこいい響きだなあ」と思っているユーザーもいるかもしれず、そもそも意味も通じていない可能性がある。


しかし、本家英語版のslashdot.orgに表示されるAnonymous Cowardは違う。カウボーイの国で使われるCowardには、「臆病者が!」という強烈な侮蔑がこめられている印象を僕は持つ。slashdot.orgのコメントとスラッシュドットジャパンのコメントとを見比べると、slashdot.orgの方が圧倒的にAnonymous Cowardのコメントが少ないのもうなずける。


みなさんも悪意ある匿名コメントにもし傷つきそうになったら、「この臆病者が!」と心の中でつぶやきましょう。きっとすっきりすると思います。



BEST SOFTWARE WRITING


BEST SOFTWARE WRITING
posted with amazlet on 08.03.12


Joel Spolsky 青木 靖
翔泳社 (2008/02/21)
売り上げランキング: 1536





Windows から Mac に乗り換えるときに知っておいたほうがいいこと

Mac一ヶ月になりました。


まわりでもMacにしようかなと考えている人が増えています。少しは参考になるかもしれないので、ずっとWindowsを使ってきた僕がMacに乗り換えてはまったこと、「これは知っておいたほうがいい」ということを列挙しておきます。



  1. きっと長年Macを使ってきた人にとっては常識なのでしょう。でも僕にとってショートカットキーの表示がまったくもって意味不明でした。Command キーには左上に (うお、「コマンド」で変換できるのですね)Mac 以外では表示されないのですね。なんというか僕にはサイコロの5にみえるマークですというマークがあるからいいのですが、上矢印が Shift を意味するとか知りませんでした。

    他のキーについては、


    »Dan Rodney - Mac OS X Keyboard Shortcuts


    にまとめがあります。


  2. 話には聞いていましたが、Mac を使いはじめてすぐ、ターミナルを立ち上げ、

    # rails -v


    とやって、はじめから rails がインストールされていることにすごく感動しました。


    ruby も rails も apache も php も perl も入ってるのだから、たぶんなんでもはじめから使えるのね、という誤解が生まれたんだと思います。make と C コンパイラが入っていない事実に気づくまでにかなり無駄な時間を費やしました。


    make と C コンパイラは製品購入時についてくる DVD に Xcode として入っているんですね(常識ですか?しかしこれに気づくのに僕は2時間くらいかかりました)。


    で、「DVDからインストールするのね、あれ、でも Macbook Air には DVD 入れるところないんですけどー」となります。


    ほかの PC の DVD ドライブを借りる Remote Disc 機能?うーん、僕にはあまりスマートなやり方には思えません。


    » Tools - Xcode


    からダウンロードできるのでした。(ADCにユーザー登録(無料)が必要ですが。。。)



  3. オンラインから銀行振込しようとして気づきました。半角カナが入れられない!!

    なんとなんとデフォルトで半角カナ入力はオフなんです。


    オンにする方法はこちら↓を参考にしました。


    » たなごころ: macで半角カナ


    パソコンにあまり詳しくはない世の中の90%以上の人はここで挫折する気がします。


    親や親戚に Mac にしたいと思うんだけどどうかな?って聞かれたとします。「まだやめたほうがいいよ」と言っておこうかなあ、と僕に思わせる十分大きな理由です。


  4. Linux(おっと、Unix の間違いですね)だから使いたいツールががんがん入れられるぞ!centos の yum、ubuntu の apt-get のようにコマンド一発でいれられるんでしょ」と思いきや、デフォルトではそういう仕組みが用意されていません。

    ネットで調べてすぐ


    » The MacPorts Project -- Home


    をインストールして使うのが常識っぽいことがわかりました。


    でもこのくらいのこと、デフォルトでできるようにしておいて欲しい。(というのはあまりに開発者よりの意見なのかな?)


  5. Mac 使いの先輩に教えてもらいました。

    Macbook Air をパタンと閉じたとき、実は Windows でいう Sleep 状態であって、Hibernate(休止)状態ではなかったのですね。


    すごい静かだし、電気もどこもついていないので気づきませんでした。


    Sleep 状態だと、すこしずつですが徐々に電池がなくなってしまいます。


    設定を変更すれば、閉じたときに Hibernate 状態にすることもできるのだそうですが、教えてもらったのは自分で明示的に休止状態にする方法。


    » Deep Sleep


    というガジェットを使います。



以上、ちょっと皮肉や苦言も入ってしまいましたが、おおむね Mac には満足しています。


Rails の開発をするとき、これまでは VMWare 上の Ubuntu を使っていたのが、ネイティブの環境でできるようになった、という一点だけとってもかなり効率アップでうれしいです。


加えてUIや細かな部分がいちいちかっこいいので使ってて楽しいし、画面キャプチャができる「グラブ」や画像の縮小や形式の変換くらいなら余裕でできる「プレビュー」など、Windows ならシェアウェアやフリーウェアをいちいち入れなくてはいけないところを、デフォルトで入っているアプリケーションで結構まかなえてしまうところがいいです。


Macbook Air の見た目もかっこいいことだし、中身もスマートな印象が強いからこそ、たとえば「半角カナがデフォルトでいれられない」ところなんかは、「あれれ?」と思ってしまうのでしょう。


つくるぶガイドブログ: ひとりサービスをリリースするまでやっておくこと10個

» つくるぶガイドブログ: ひとりサービスをリリースするまでやっておくこと10個


を書きました。



今回は、開発はひとやすみにして、サービスをリリースする前にやっておくべき細々としたことを紹介したいと思います。


これらは筆者がひとりサービスをリリースするときに、毎回なんとなく思い出しながらやってきたことで、サービスによっては忘れてしまっているものもあります。


ですから、次からはこれをチェックリスト代わりに使おうと思っています。


以下、書いたあとに思い出したもの。



  1. ntp で時刻をあわせておく

  2. trackfeed を使い、サイトにリンクされたブログをチェックできるようにしておく

  3. コンタクトフォームを用意しておく

  4. 最近、というか今日知った AddClips のタグをはっておいて、ユーザーが簡単にブックマークできるようにしておく

  5. head タグ内 keywords と description を忘れず書いておく

  6. JSの難読化と圧縮。AJAXの戻りの圧縮

  7. .htaccess にアクセスできないようにする http://q.hatena.ne.jp/1166068589

  8. (Rails限定)Mongrel で運用している場合、/public/displatch.(rb|cgi|fcgi) は不要なので削除しておく


プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

オンラインコンテンツ: 大人のためのScratch

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ