ICカードこれひとつの起動時間について

ICカード乗車券ビューアー「ICカードこれひとつ」は、性能については好評をいただいておりますが、常々起動時間が遅いと言われ続けています。

基本的な機能の実装もそろそろ完了しつつあるため次は便利機能の実装となりますが、大がかりな新機能を作る前に、細かな微調整を兼ねて起動速度の最適化を実施することにしました。

まず不評な起動時間の遅さですが、調査したところ、やはり一番時間掛かっているのはIC読み取り処理でした。
読み取った後、解読して複数のタブを用意して画面を作る箇所もそれなりに時間が掛かりますが、全体としてみると、読み取りに要する時間が圧倒的であるため、まずはここから着手するべきと判断されました。

なぜ遅いのか、について説明し、今後の方針などについてメモをしておきたいと思います。

■FeliCaとは?

FeliCaというICカードは、ただのメモリーカードではありません。
これは、階層構造とファイルシステムを持った多機能なシステムで、一つのチップ内に複数の機能を共存できるように設計されています。
NFC対応のスマートフォンに様々な機能を追加して利用できるのは、このFeliCaというシステムの機能あってこそです。

さて「ICカードこれひとつ」ですが、カード読取り部についてはこの多機能なシステムに完全対応しています。
他のありふれたアプリでは1番目のシステムからしか読み取れないところ、「ICカードこれひとつ」は独自の技術により、全てのシステムからデータを読み取ることが可能となっています。
このため、スマートフォンなど複数の機能が存在するものも読み取って表示することが可能となっています。
このアプリの強みとも言えますが、代償は読み取り時間、つまり起動時間ということに。

簡単に言うと、「性能や処理が悪いから遅い」のではなくて、逆に「性能や処理が良すぎるから代償として遅い」ということになります。

■読み取り処理の大まかな動き

「ICカードこれひとつ」の、カード読み取り処理の大まかな動きは次のようになっています。

①FeliCa内の全てのシステムを確認
②システムを切り替えつつ各システムのサービスを確認
③カードの種類を判断し読むサービスを決める(ダンプモードでは全て読む)
④読み取り
⑤解読

一旦存在するサービスを把握したあと、読むものを決めて実際にサービスを読み取る、いわゆる2パスの処理となっています。
解読した結果は所定の領域に格納され、これを表示する処理へと渡すと、画面に現われる仕組みです。
カードの種類ごとに解読処理が用意されているため、様々なカードに対応し、それを表示できるわけです。
①や②で若干時間が掛かり、④でかなり時間が掛かります。

■時間の計測

Nexus7[2013]とSuicaで確認したところ、ダンプツールOFF時(つまり通常の動作モード)での読み取り処理は、そのものだけで1.5秒程度を要していました。
Suicaの場合3システム(0003、FE00、86A7)あり、特に0003システムは容量が多いため、かなり時間が掛かります。
逆に、容量の少ないシンプルな独自ICカードなら500ミリ秒弱と、比較的高速に読み終えられました。

■今後の方針

おおざっぱな結論として、性能を維持したまま高速化することは極めて難しく、性能と速度は完全にトレードオフの状態となっています。
ですので、速度優先を実現するためには、必要最小限しか読まない機能を実装して切り替えられるようにするしかありません。
読み取るデータ量が増えれば増えるほど比例的に処理速度は増していきます。
処理を変えることでどれだけ速くなるかは試してみないと分かりませんが、少なくとも現状より高速化されることは疑いないでしょう。

「高速モード」(仮称)のコンセプトとしては、
①最初のシステムしか読まない (2番目以降のシステムには対応しない)
②履歴と残額のみしか読まない (改札情報など必要最小限度を超える範囲の情報は読まない)
などを考えています。

全領域を読み取るダンプツールモードとは排他になり、ダンプツールOFFでかつ高速モード時には、高速に読み終える動作になります。このモード用に、「二つ目のカード読み取り処理」を設計し、現状のものと切り替えて使用できるようにする計画です。

2016/02/05(金)14:22 |Comments(0) |Trackback(0)

地域振興 | | コンピュータ | [編集]

▲ページトップ

コメント

コメントの投稿

hanicaの異常動作について ホーム ICカードで新幹線に乗る あれこれ
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR