iPod touch 買いました

今日、予約していた iPod touch が届きました。

今まで携帯音楽プレーヤは初代の iPod nano を使っていたのですが、右しか鳴らなくなってしまいました。イヤホンのプラグを挿してある方向に力を加えると聞こえるようになるので、多分イヤホンジャックのハンダクラックだと思います。

その nano が壊れたのが、ちょうど新型 iPod touch が発表される前日・・・偶然にしては出来すぎのような・・・。

新型 iPod nano もよかったのですが、Zaurus 以来 Netwalker 位しか最近のガジェットを買っていなかったので、時代についていくために iPod touch にしてみました。

9/15に上海から配送されて、今日届きました。

iPod touch 到着
iPod touch 到着

ダンボール箱に梱包されています。

ケースはこんな感じ
ケースはこんな感じ

ケースは最近の iPod と同じく、透明なプラスチックのケースでした。


表面はピカピカです

当然ですが、開けたてなので指紋もなくてピカピカです。


裏面もピカピカ

裏面も鏡面仕上げでピカピカです。ケース買わないとすぐ傷だらけになりそう・・・。

 

iPhone も iPod touch も持っていなかったので、iPhone OS(?) はちゃんと使うのは初めてです。

さっそく使ってみた第一印象は、「画面がとにかく綺麗」でした。

解像度が高いためだと思いますが、フォントがクッキリハッキリしていてとても見やすいです。

qgmap のライバル(?) GoogleMaps も使ってみました。

・・・・。

ライバルなんて言ってごめんなさい (^^; 足元にも及んでないですね。


SL-A300 (qgmap) と iPod touch (GoogleMaps)

せっかくなので SL-A300 と並べてみました。

ちょっとせつない気持ちになりますが、7年前に発売された端末にしては、結構頑張ってるのではないでしょうか。

iPod touch と比べてみても、Zaurus って機能的には技術の進歩によるレベルの差こそあれ、あまり変わらないような気がします。

音楽も聞けるし、動画も見れる。Webブラウザもあって、メールも読み書きできるし、アプリも追加できる。目の付け所はよかったんだと思います。

一番の違いはAppleならではの UI, User Experienceへのこだわりでしょうか。あとはビジネス向けか一般向けかの違いとか。

時代の流れや、技術の進歩もあるとは思いますが、早く生まれすぎたような気がします。 もう少し違っていればまだまだ Zaurus も生き残っていたかも知れません。

 

iPod touch を色々いじっていると、ふと液晶と金属のボディの間に何かが挟まっているのを見つけてしまいました。


何か挟まってる!

どうも接着剤のようです。こいつのせいでその周辺に数cmに渡ってスキマがあいてしまっています。ホコリとか詰まったりしそう・・・。

他にも開封直後なのに画面のガラスと金属ボディの間にある黒い樹脂が削れているところがありました。(3枚目の写真の本体の右の長辺の真ん中やや上にある白い部分がそれです)

一番最初の写真に写っている、クリアケースの回りをくるんでいた白いビニールシートも、梱包する際無理やり入れたのか、端がクシャクシャになっていました。

Apple らしくないような気もしますが、Assembled in China だから仕方ないのでしょうか。

ちょっと残念です。

qgmap-0.2.3 リリース

先日の 2 周年記念のブログエントリには多くの方から暖かい言葉をいただきました!ありがとうございました。

「ぼくがんばったよ!ほめてほめて!」みたいな小学生レベルの自己満エントリで今思うとちょっと恥ずかしいですが、大人な皆様が空気を読んで褒めてくださったので(笑)、読みながら照れ照れニマニマしてしまいました笑顔

皆様からご褒美をいただいたので、お返しといっては何ですが、qgmap の 0.2.3 をリリースします。  →ダウンロードページ

0.2.3 での修正点は以下のとおりです。

  • SL-A300に対応
  • POI検索結果に現在地からの距離を追加

今回はSL-A300 対応がメインです。SL-A300をお持ちでない方にはほとんど変化ありません (^^;

SL-A300対応はダイアログのサイズを固定値で設定していたので思いのほか手間がかかってしまいました。

qgmap が SL-A300 に対応!!
SL-A300に対応!!

ほとんどの機能は SL-C シリーズと同じように使えますが、一部機能は動かないものもあると思います。特に GPS, PHS 関係は動かない可能性が高いです。

スライダとか SL-A300 では操作しづらいので UI はまだまだ改良の余地ありですね。ブースカさんのアイデアの画面下部に大きなボタンを配置するというのもまだ手をつけられていません。

また、SL-A300で使用する際の注意点が3つあります。

  1. iso や rom イメージを使う場合はモジュールのインストールが必要
  2. 他のアプリの高速起動を切ること 
  3. SDカードを挿入していること

まず、SL-A300 で iso や rom イメージを使う場合は、tera さんの実用工房このエントリから miscfs-modules_a300_arm.ipk をダウンロードしてインストールする必要があります。

SL-Cシリーズでは iso はカーネルに組み込まれているんですが、SL-A300は組み込まれていないため、後からインストールする必要があります。

2つ目は qgmap が結構メモリ食いなため、他のアプリの高速起動が有効になっていると、「メモリが足りません」といったメッセージが表示されてしまいます。一応、地図画像のキャッシュサイズなどを減らしたのですが、付け焼き刃で全然効果がありませんでした。省メモリ化は今後の課題ですね。

3つ目はPOIのDBファイルを /mnt/card/qgmap-poi.db 決め打ちで置いてしまっているため、SDカードが必須になっています。SL-A300 はバックパックをつけない限り SD カードしか地図を置く場所がないので、大丈夫だとは思いますが、SL-C シリーズとは挙動が違うところです。

 

SL-A300対応の他のもう1つの変更点は、POIの検索結果に現在地からの距離を表示する機能を追加したことです。

POI検索の結果に距離を追加
現在地からの距離を表示

せっかくなので SL-A300 でスクリーンショットをとりました笑顔

緯度経度から2点間の距離を求めるのエントリで書いた公式で距離を求めています。また、初期状態で距離の近い順に表示されるようになっています。

矢印は「地図上の方向」を示しています。「方角」を示しているわけではないので注意してください。例えば、日本から真東に進むと赤道に交わり、いずれ南半球に到達しますが、上記検索結果の真東は同一緯度を表します。まぁ、qgmap を持って太平洋を横断とかしない限り気にする必要はありませんがあっかんべー

 

いままで一応メモリ使用量を気にして開発してきたんですが、 SL-A300 は SL-Cシリーズよりもさらに空きメモリが少ないんで、かなりキツキツギリギリですね。メモリ関係を見直す必要がありますね。

ただ、qgmap on SL-A300 は SL-C シリーズよりも表示が早く、キビキビ動作するので気持ちいいです。画面がQVGAと 1/4 なのと、回転処理がないので描画の負担が軽いためでしょう。このままでは私の SL-A300 は本当に地図専用デバイスになってしまいそうです笑う

ぷちのいず 2nd Anniversary!!!

えー、突然ですが、おかげさまで "ぷちのいず" も今日で2周年を迎えました!(パチパチ)

おめでとう!ありがとう!笑顔

何事もあまり長く続かない私が2年もの間、休み休みですが続けてこれたのも、ひとえに皆様の応援のおかげです。 ありがとうございます。そしてこれからもよろしくお願いします。

サイトを立ち上げて、しばらくは Google で 「ぷちのいず」で検索すると「ぷち/の/いず」と分割されて検索されていましたが、今ではサブページ(?) まで表示されるに至りました。

Googleの検索結果
Google での検索結果

なんかサブページのチョイスがいまいちですが、こんなへなちょこサイトではもったいないくらいの好待遇です。

さて、サイトを立ち上げて2年。公私共に(?)いろいろありました。

ちょっと独りよがり的に振り返ってみましょう。初めに謝っておきますが、今日のブログは私が思い出に浸るエントリーです。すいません。

次の図はGoogleAnalytics でとったセッション数をグラフにした物です。


セッション数の推移

図中のアルファベットはイベントを表しています。各イベントの内容は次の通りです。

イベント一覧

A 2008/09/13 qgmap-0.0-aplha1 公開
B 2008/10/14 qgmap-0.1.0 公開
C 2008/11/06  GW-CF54Gドライバ公開
D 2008/12/12  GW-CF54G WPA対応
E 2009/01/24  qgmap-0.1.4 公開 (GPS対応)
F 2009/03/19 WifiConnect 公開
G 2009/05/23 qgmap-0.1.8 公開
H 2010/01/02 qgmap-0.2.0 公開
I 2010/01/24 4GB SDHCドライバ公開
J 2010/02/06  32GB対応 SDHCドライバ公開
K 2010/02/15 3桁機用SDHCドライバ公開
L 2010/03/23 SL-A300用SDHCドライバ公開
M 2010/08/15 qgmap-0.2.2 公開

うーん。懐かしい。

グラフの 2 つの大きなピークは、GW-CF54G ドライバの WPA 対応と SDHC ドライバの公開ですね。この2つは確かに気合い入れてましたね。帰りの電車の中で SD ドライバのアセンブラを解析したり。これができたら世界初!と思いながら頑張ってました。大変だったけど楽しかったです。WPAの接続ができた時も、SDHC 8GB が認識した時も鳥肌がたったのを覚えてます。

また、この様に出来事を並べると、WifiConnect がちょっとかわいそうですねぇ。未完のまま放置されちゃってます。まだ需要があるなら開発しないとですね。もう忘れかけてるのでキャッチアップに時間がかかりそうです。

qgmap に注目すると、記憶では初公開から 0.1.0 公開まで結構間があったような気がするんですが、1ヶ月程度だったんですね。その中で 7, 8 回リリースしているなんて、今から考えると尋常じゃありません。よほど暇だったんでしょうねあっかんべー

まぁ、そんな働きぶりだったせい(?)か、"冬の時代"を迎えてしまいます。会社が無くなってぷーたろーです。今思えばいい経験になりましたが、当時はちょっと心穏やかじゃなかったですね。幸い今の会社に拾われたので助かりましたが、リーマンショック真っ只中だったので、就職できてなかったらと思うとゾッとします。

このブログも入社の審査の際にプラスポイントだったようで、「ぷちのいず」に人生救われました。エンジニアなら技術系のブログなりソフトなりを書いて Output しているとアピールになるようです。

と2年間を振り返ってみましたが、 なんかサイトを立ち上げたのはずーっと前のような、でも早かったような不思議な感じです。

これからも細々とまったりと無理せず続けていこうと思います。よろしくお願いします。

Emacs テクニックバイブル

今回は最近買った本の紹介です。

私は開発する際のエディタに主に emacs を使用しています。emacs はクセが強いため、慣れるまでは大変ですが、強力にカスタマイズできるため慣れると手放せなくなるという中毒性の高いエディタです。特に仕事柄、コードを読むことが多いのですが、emacs + gtags.el がないとコードを読む気になりません。

ただ、基本的な操作は不自由なく使えているのですが、あまりの多機能+奥深さぶりに私はほとんどの機能を使いこなせてません。多分 emacs の実力の 10% も使えていないと思います。あっかんべー

emacs lisp (emacs を拡張するためのマクロの言語)を分かっていないせいか、カスタマイズとかスクリプトの導入が面倒なんですよね。。。

そんな私が欲しかった本が最近発売されました。「Emacsテクニックバイブル ~作業効率をカイゼンする200の技~」という本です。

Emacs テクニックバイブル買いました
Emacs テクニックバイブル買いました

まだ途中までしか読んでいないのですが、実用的なスクリプトが多数載っていて、インストール方法や設定方法も書かれているので lisp が苦手な私でも簡単にカスタマイズできそうです。

というか、スクリプトを自動でインストールする仕組み (M-x install-elisp-from-emacswki) があることすら知りませんでした。こんなに簡単にインストールできるなんて・・・。

開発に実際に役立ちそうな物があるので1つ1つ試して行きたいと思います。

特に開発系で気になった物 (or 実際に使っているもの) は以下です。

  • 13.2 summarye.el バッファのサマリを表示する
    → ファイル内の関数一覧表示は便利そう
  • 13.5 M-x ediff-files, 13.6 M-x ediff-merge-files
    → これはたまにお世話になってます。マージの時便利
  • 13.10 M-x which-func-mode 現在の関数名を常に表示する
    → 便利そう。使ってみよう
  • 13.12 ipa.el ファイルに直接書き込まずにメモをする
    → コードリーディングの時に重宝しそう。メモ間でジャンプできるのもいいな。
  • 13.15 gtags.el
    → これなしでは生きていけません
  • 13.16 fold-dwim.el 複数の折畳み・展開コマンドに統一的なインターフェースを提供する
    → hideif.el とかアウトラインモードとか使ってみたけどキーストロークが覚えきれなかった私にはピッタリかも。

うーん。emacs は奥が深いなぁ。

もっとカスタマイズして効率的に開発できるようにしたいな。 そうすれば qgmap のリリースも早くなる・・・かも? (^^;

緯度経度から2点間の距離を求める

久しぶりに開発途中のネタです。

POI の最寄検索や、検索結果表示で現在値からの距離を表示させたくて、任意2点の緯度経度から距離を計算する方法を調べてみました。

地球が球体なら何となく頭をひねれば分かるかもしれませんが、楕円体の緯度経度から距離を求めるのは私には見当もつきません。

ということでググってみると、楕円体を考慮していて、世界中の緯度経度で通用しそうな計算式が2つ見つかりました。

何となく航海で使用する下の公式のほうが正確な気はしますが、上のヒュベニの公式の方が演算が簡単そうな気がします。

また、qgmapでは多少の誤差も許容できるので数%程度(?)の精度で十分です。そこで近似式も候補に入れてみます。

これらの計算式がどの程度の正確さなのか、ランダムに選んだ緯度経度で計算して誤差と計算速度を検証してみました。

とはいえ、検証しようにも正解がわからないので、とりあえず国土地理院のサイトで2点間の距離を計算できるようですので、そのサイトとの誤差を調べました。つまり、実際に正確かどうかの検証ではなくて、国土地理院のサイトの公式に近いかどうかの検証です (^^;

で、結果は以下のとおり。

アルゴリズムの違いによる国土地理院サイトとの誤差
アルゴリズムの違いによる国土地理院サイトとの誤差

縦軸は国土地理院サイトで計算した距離(a)と、公式で計算した値(b)の誤差の割合(|a-b|/a) で、横軸が2点間の距離を示しています。

さすが航海算法と呼ばれるだけありLambert-Andoyerの公式は距離によらず 10^-5 以下の誤差率になっています。

ヒュベニの公式は50km以下ではLambert-Andoyerの公式と同等ですが、距離が離れるほど誤差が大きくなっていくようです。

簡易近似式は1000km以下では誤差0.1%前後で、1000kmを越えるとヒュベニの公式と同様誤差が増えていきます。

また、それぞれの公式を Zaurus で計算させた時の時間も測定しました。ちなみに、スペシャルカーネルを使っているので、浮動小数演算が高速化される FastFPE パッチが適用されています。

測地線航海算法のHPにはLambert-Andoyer と式的には同じですが、計算量が少し少ない小野の公式というものも載っていたので、こちらも計測しました。

各公式の計算時間

公式
1万回の計算時間
近似式 0.2838 sec
ヒュベニの公式  0.5043 sec
Lambert-Andoyerの公式  2.8202 sec
小野の公式  2.6518 sec

やはり近似式は演算量が少ないので高速ですね。1万回の計算が0.3秒なら充分実用的です。

ヒュベニの公式は近似式に比べ 1.8倍、Lambert-Andoyerの公式が10倍、小野の公式が9.5倍の時間がかかりました。

やはり精度が高い下の2つの公式は三角関数の演算などが多いため遅いですね。ただ、同じ結果が得られる小野の公式は少し早いようです。

結論

近似式が思いのほか精度が高かったので近似式を使おうと思います。

もともと精度も1%程度あれば十分かなと思っていたので、qgmap には充分ですね。

開発は案外こういう自己満足的な調査が楽しかったりするんですよねー。笑顔