ラベル トラノマキ の投稿を表示しています。 すべての投稿を表示
ラベル トラノマキ の投稿を表示しています。 すべての投稿を表示

2012/05/17

トラノマキ その7

コンテンツの追加/編集をどのように行うか。仕様を決めかねています。

初めの構想ではWindows系アプリでしたが、ユーザーの立場を考えると『誰がわざわざアプリをダウンロードしてまで(しかも自宅で)手順書メンテせなアカンねん』って話になりますよね。

開発が楽そうって理由で思いついたのですが、こういう視点では誰も受け入れてくれなさそうです。

手順書をメンテしたいと思うであろう瞬間を想像するとやはり仕事中。そうすると、(1)Webアプリをスマホで操作、(2)トラノマキアプリに機能を組み込むかの2択。

いや、文字入力や画像作成の事も考慮すると、(3)多目的Pにアプリ組み込んで一時的なファイル作成→スマホでアップロード→サーバー側で組み込み処理、という手もありでしょうか。

多目的Pが完全にネットにつながっていれば一番楽なんですけどね。いや待て、そもそも、課専用のちゃんとしたサーバー/ネットワークがあってWifiで個人用スマホをつないでやれば…ああ、言い出すときりがない。


この際、開発におけるハードルの高さは問わないものとして…あとは操作性、手軽さを優先すると(2)案か…?

うーん本当に難しい。

2012/05/13

トラノマキ その6

独自に作ったライセンス認証が通らない原因がやっと分かりました(結局SSL通信自体は上手くいってました)。

社内の人にテストしてもらった結果Android2.3端末だけNGだった為、同エミュレータを使って確認してみると、あるデータを複合化する際にjavax.crypto.BadPaddingException が発生している事がわかりました。この例外の説明を読んでも意味不明なのですが、早い話『こんな鍵つかえねーよ』って所でしょうか?

2012/05/11

トラノマキ その5

テストバージョンをリリースしました …が、早くもバグをいくつか発見。

  • 圏外の時に更新処理をすると落ちる(タイムアウト処理の書き忘れ)
  • ラインセンス認証が出来ない(致命的)

1つめは分かるからいいとして、問題はライセンス認証。よく解らないままSSL通信やってるから、まぁありえる話ですが…。いまだ疑問に思ってる証明書がどうたらって話、きっとそれ関わってる感じがします。

でもどうして自分の端末では上手くいったんだろう??

これは苦労しそうな予感…

2012/05/07

トラノマキ その4

大分完成が近づいてきました(ただしクライアント側の話)。

OutOgMemoryErrorの対策

bmpオブジェクトをリサイクルするだの色々あったのですが、トラノマキではImageViewを1つしか使っていなくて意味が無さそうだったので、画像を縮小して読み込む方向で解決できました。(参考記事:画面に合わせて画像を縮小して読み込む

ライセンス認証もどき

PHPの勉強も兼ねていたし、SSL通信(HTTPS通信)や暗号化など初めて取り組みものばかりなのでかなり苦労しました。その苦労の甲斐あって、なかなかそれっぽい物が出来たんじゃないかと思います。
通信に関しては出来上がってみると通常のHTTP通信とさほど変わりないコードなんですが、未だ謎は多いですね。このあたりに手をだすなら通信技術の知識が必須だと痛感いたしました。


更新処理のパフォーマンス改善

いくつか前のエントリでも書きましたが、更新処理に時間がかかり過ぎていたのでアルゴリズムを大幅に見直しました。

変更前では目次ファイルを走査し、それぞれのファイルに対しサーバー側とSDカード内の更新日を取得し比較を行う、という方式でしたが、この方法だと (1)サーバー上に無いファイルも比較を行ってしまう (2)ファイル毎にHTTP通信によるオーバーヘッドが発生する という2つの問題があります。

そこでサーバー側に『存在しているファイルとその更新日』をリストアップするPHPスクリプトを配置し、Android端末ではそのリストを取得、そしてそれを元にしてSDカード内ファイル更新日と比較を行う、といった方式に変更しました。

この変更によりパフォーマンスは以下のように改善しました(単位はミリ秒)


とまぁ、ドヤ顔でグラフを載せていますが最初に考えた方法が酷すぎるってことですね(このままリリースしなくて本当によかった・・・)。


という事で、あとは多少リファクタリングを進めてそれが終わったら次のステップに入る予定です。

2012/05/05

セキュリティーと効率化

久々に買ってしまいました。AndroidSeccurity とPHPの入門本の計2冊。R248の精文館で買ったのですが、ここは旧店舗時代から引き続きPC書籍の品ぞろえが豊富で、私のお気に入りの本屋です。あんざいゆきセンセのAndroid LayoutCookbookも置いてあったのでついつい買いそうになるが今回は必要ないので我慢。

なぜセキュリティー?

トラノマキリリース後のバグフィクスを視野に入れるとアプリはGooglePlayに置いた方が効率が良いのですが、そうすると可能性は低いながらも関係者以外に使用される恐れがあります。また、データの置いてあるサーバーのパスワードが現在はソースにベタ書きになっているので、いくら内容がアレなアプリでも流石にこの状態はマズイだろうという事で本気で対策する事にしました。

Androidのセキュリティーに関する記事はネット上にもありますが、断片的なのでやはり根本的な事を学ぶには不向きです。

この本は、Androidの仕組みの解説からどんな危険性があるのかを明確にし、どのように対策すべきか、またアプリ作成にあたっての失敗事例等も書かれおり大変勉強になる本です。最近多いとされる安全性に問題のあるアプリを作らない為にも是非手に入れておきたい一冊です。(同時に以下のリンクも参照すると良いでしょう)

書籍「Android Security」の暗号鍵生成方法には課題がある

なぜPHP?

理由は2つ。1つは先述した通り、関係者以外のアプリ使用を防止する為で、独自のライセンス認証を実装するにあたりサーバー側にもちょっと手伝ってもらおうという訳です。

2つ目はデータ更新処理のアルゴリズム見直しの為です。現在はAndroid端末側でサーバーのファイルの更新日を1つずつ見に行く形になっていますが、将来的に更新チェックするファイルが増えた場合、その処理時間も大幅に増える事が予想されます。

その為、更新リクエストがあった際にサーバー側にファイルの更新日をリストアップして返す処理を持たせ、HTTP通信によるオーバーヘッドを軽減させようという狙いです。

この本にはやりたかったファイルIO、XML、データベースのサンプルがあったので即買い。元々Perl使いだった私にとっては、導入部分に加えてこの3つのサンプルがあるだけで合格点!

PHPもなかなか楽しいですね。







←昔愛読したPerlの本。イイ奴だった…。



2012/04/30

トラノマキ その3

細かい部分の作りこみが完了しました。
  1. 通信エラー時のメッセージ表示
  2. 目次の唯一展開オプションの動作実装
  3. 手順書ファイルのプロパティ表示
  4. 他の画像ビューアから戻った時の挙動の修正
4項については、参考画像の拡大表示を他の画像ビューアに委託する処理に関してなのですが、拡大表示させた後にバックキーで戻ると同じ画像が2度表示され、正規の動作とは言え少し違和感を感じる部分でした(手抜きの副作用とも言う)。


呼び出し元のActivityはViewPagerなので、戻った時に手順書が表示されていれば違和感も解消されそうです。

そこで、ギャラリーの呼び出し方法を『startActivity』から『startActivityForResult』にしてコールバックを受け取るようにし、onActivityResultにてViewPager#scrollTo(x,y)を使って手順書のページへ強制的に戻す処理を追加しました。なかなかいい感じです。


忌むべき存在 ”OutOfMemoryError”

今まで真面目にAndroidアプリを作ったという経験は少なく(クソドラムを手掛けた事実は闇に葬る)、メモリ管理に関しては無頓着なまま作り続けてきましたが、今回は比較的大きな画像を扱う事もあって、予想されていたOutOgMemoryErrorがついに発生してしまいました。

『目次から手順書へ画面遷移』の繰り返しで出る同エラーは、System#gcでGCを呼び出す事で回避できました。しかし手順書の『リンクテキスト』で大きな画像を使った手順書へのリンクを繰り替えして落ちてしまう問題は解決できません。

鋭意調査中。


2012/04/25

トラノマキ その2

ファイルを更新する部分がほぼ完成。おかげでテストが随分と楽になりました。あとはコネクションタイムアウト等で更新に失敗した時のメッセージを出したいところですが、この処理はバックグラウンドスレッドで行っているので少し頭を悩ませています…。

ずっと同じ部位にかじりついてると飽きてくるので、手順書の表示部(ListView)を改良してみました。

元々『サブタイトル』『手順』の2つの表現要素しか無かったところに新たな3つの要素を追加しています。

注意を促す『注釈』、補足説明のような内容を表す『ワイドテキスト』(←少し命名に疑問)、他の手順書へリンクする『リンクテキスト』の3つです。特にリンク機能はスマホならではのメリットで、なかなか良いんじゃないかと思います。

改良したとは言え文字ベースの手順+参考画像1枚だけという制約に変わりは無く、表現力はまだまだ乏しいです。

技術力+やる気があれば、紙媒体同様、表現力豊な物を作る事も可能でしょうが、そこまでするならブログにでも手順書をあげたほうが絶対早いと思います。

しかし、そうすると結果的に閲覧時の軽快さやメンテの手軽さが失われてしまいますし、セキュリティー上の問題もあります(例によってどうでも良さそうですが、やはりうるさい人は居るもので…)

実はトラノマキの仕様を検討する際、iPhoneユーザーもカバーしたくて、ブログやEvernote、GoogleDocs 等Webを利用する案も検討していたのですが、先述の理由により断念したという経緯あってのAndroidアプリなのです。

しかし使ってるデータはただのXMLなので、iPhoneアプリを作れる人さえ居れば解決しそうな問題ですが・・・多分企業レベルで動かないと完成しても配布すらできない予感がしますね(未調査)

まぁいずれは何らかの手段で解決したいところではあります。

2012/04/15

トラノマキforAndroid

会社で役立つツールをAndroid端末で作る、という計画はゆっくりと進んでいます。今年の初めに少し、しばらく休止後、4月に入ってまた再開。本当にゆっくりですが、自身のモチベ維持の為に書いてみます。

名前は 『トラノマキ for Android』

基本的には作業手順書なんですが、それを見れば誰でも出来るという物にはせず、あくまで”記憶を助けるツール”という事をコンセプトとしています。また、現存する紙媒体の虎の巻では困難だった情報の共有化というのも一つの狙いです。

アプリケーション自体は単純で、起動すると機種等でカテゴライズされた手順書等のタイトルがあり、それをタッチすると内容が表示されるというものです。手順書画面はViewPagerで構成され、手順を書いたリストと参考画像の画面をスワイプで切り替える、という物になります。



手順書データは端末に無い場合に自動的に取得する仕組みで、一度取得すれば内部のデータを参照します。また、データを編集/追加していく事も必要なのですが、Android端末でその作業は厳しいので別途PCソフトを用意する必要があるかなと考えています。

現在はアプリの枠組みと呼べるものがおおよそ完成した状態です。まだ最新のファイルに更新する仕組みが未実装。データを編集するソフトについては未着手(これが一番大変そう)。コンテンツを充実させる作業もあるし、まだまだ先は長い。

完成したら若者を中心に広げてもらい、末永く業務に役立ててくれたら嬉しいと思います。