So-net無料ブログ作成
プログラム ブログトップ

Android 潮汐表アプリ「しおどき」 [プログラム]

Android の潮汐表アプリ「しおどき」を GooglePlay で正式公開 しました。

以前から野良で適当に公開していたのですが、所詮は野良だしなー、と放ったらかしにしていました。ですが、それではいかんなーと思い直して、夏休みに入ったのを契機に自由研究として再構築してみました。機能をごっそりと削ってなw


ただ、それだけだとすぐに飽きるので GooglePlay に公開して野良脱却も。デベロッパ登録をしてお金も払っちゃったらもったいないよ、やるしかないよ!と言う感じです。あと、いままで、お仕事では開発したアプリはお客様にアップロードしていただいていたのですが、開発者としてはやり方くらいは知っておかないとな、と勉強で。

機能を削る

考えていた機能をまるっと実装するのには社会人の夏休みは短すぎる!と言うことで、その他で遊んでいる時間も含めて3日でまとめられる範囲の機能を考えました。

いつでも各地の潮汐を確認できるようなウィジェットが複数配置できて、アプリを起動すると前後の潮汐が確認できればいいんじゃね?と。元々が潮汐を確認するのに…

アプリを起動することも面倒くせえー

が、このアプリを作ってみようかなー?と思った原点だったものでしてw

device-2012-08-11-202403.png
本体のウィジェット(デスクトップ長押しから「しおどき」を選択)

ちょっぴりこだわってみる

初回バージョンのコンセプトとして、がっつりと機能が削られているので、デザインや操作性くらいはなんとかしたかったところでした。

標準コントロールが許されるのは小学生までよね、キャ…

色調は、最初は、モノクロカラーベースで作っていたのですが、しぶすぎるんっすよ。ちょっと何かのアイコンを配置しようとかするとしぶさが邪魔をしてきます。ぼくにはモノクロカラーはまとめ切れない、と断念して青基調に変更しました。

まあ、海関係のアプリだしね。青ならば同系色の色を使って映えるしね、補色の黄色や基本色の白や黒も使いやすいしね。こんな理由。あー、あと個人的に青色が好き。

device-2012-08-11-215316.png

あとは、標準コントロール色のほぼ完全撤廃ですね。素敵なデザインのアプリでも細かい部分が疎かになっていてポロっと標準コントロールが表示されると萎える。ここまでやっていてここは標準かよ!とことさら萎える。魂は細部に宿るですね。

ちなみに「ほぼ完全撤廃」の「ほぼ」ってところは、今回は、スクロールオーバーシュート時の影です。やめること自体は簡単なんだけれど、デザインを置き換えることについては Android のソースをひっくり返してみてやめました。EdgeEffect さんをリフレクションでごにょごにょすればいけそうですけど。

タイドグラフの無限スクロール

メインとなる画面で画面切り替え的なものはイヤだ!特に日々の潮汐グラフ毎の画面の切り替えだけは御免こうむると言いたい!ならば、無限に自由スクロールさせるしかないでしょう?(高速化には苦労させられましたが)

device-2012-08-11-211126.png
ドラッグやフリックで高速に無限に自由スクロールする潮汐表

左右ドラッグやフリックで裏画面表示

潮汐地点の切り替えをパパッ!とやりたい。最初はタブを実装してみていたのですが、タブは削除や並び替えを実装したくなる、面倒。まあ、選択画面でいいかな、ただし、ダイアログだけは断る。と言うことで、タイトルバーをフリックしてみると…

device-2012-08-11-211735.png
画面の裏には港の選択画面がありんす

device-2012-08-11-213427.png
逆側は設定画面が隠れていますよ

ちなみにこの操作性はお仕事で実装していたので自宅で再現するのは一時間も掛かったかなー?くらいでした。当然のことながら、よりシンプルな構造になってます。

あー、さて…

今後は既知のバグ潰し。一部の地域で干満時間の吹き出し表示が重なってしまう、ってやつですね。まあ、大体は直ったんですけど、それだけでリリースってのも…ね。

device-2012-08-11-223548.png
これは開発バージョンの画面です

あとは、釣り人は仲間同士で写真を見せ合いっこして自慢したいはずだ!と言う仮説って言うか真実?wのもとに写真とタイドグラフとの融合を企んでいます。

では、よろしければ、ダウンロードして試してみて くださいね。

こんにちは世界 [プログラム]

Android で Hello World してみましたー。

週末、無性に The Black ○nyx をやりたくなったので、昔を思い出しながら 3D 迷路を Android で作成してみました。ランダム作成の迷路を徘徊することができます。

device-2012-06-24-232247.png


操作方法は、左の迷路の上部タップで前進、下部タップで振り返り、左右タップ、または、ドラッグ&フリックでそちらの方向を向きます。とりあえず、ただ、徘徊するだけですが、まあ、日曜のおあそびとしてはこのくらいかなーと。

バリバリの計算をしている…わけではありません。中学生の時に何の知識もなくアセンブラで作ったものに毛が生えた程度のものですね。キャッシュ等の描画最適化は全くしていないので端末によっては重いかも。

なお、肉付けしていってゲームにするかは気分次第ですね。今日のところは「迷路を徘徊したかった」と言う目的を果たして満足しているものでw

デザインも少しはまとまってきたかも [プログラム]

ゆいゆい潮汐の現状のスナップショット。

tide_land_20110526.png

載せたい機能は色々とあるのですが、まあ、ぼちぼちと使えそうな感じにはなってきたような気がします。バグフィクスもいくつか入れているので、使えない機能にはふたをして、適当なタイミングでリリースしたいところっすね。

ゆいゆい潮汐アプリサイド途中 [プログラム]

アプリサイドも作り始めました。

先週、ウィジェットのデータが更新されないかも!バグかも!と思っていたのですが、インストールしているタスクキラーの除外リストに本アプリを入れていなかったため、更新用のサービスが殺されていたと言うオチ。やっぱり、バカだよなー orz

tide_land_20110522.png

まあ、それは置いておいて、アプリサイドも作り始めたのですが、いまのところ、画面レイアウトはこんな感じ。もちろん、縦画面にも対応ですが、縦でも横でも情報量は変わらないと言う。果たして、誰がわざわざ端末を横に傾けるだろうか?

タイドグラフは、ドラッグ、フリック、どちらでも無限スクロールできるように作っていますが、日が切り替わるところで動作が引っかかるのが難点です。大元の潮汐計算は先読み&キャッシュ化してあるため、問題はグラフの描画周りかな。

ちなみに、この曲線、二十分毎の潮位を直線で結んで曲線に見えるようにしています。当然、この間隔を広げれば、描画回数、演算量も減って速くはなりますが、曲線がガタガタになって泣きそうになります。まー、地道に高速化はしますが厳しいかも。

太い連続直線と線の末端処理

課題でも挙げていたのですが、グラフの描画が汚いなー、の件、改善しました。

cap.png

上段が改善前で下段が改善後です。

Canvas.setStrokeCap(Cap.ROUND) で線の末端を重ね合せることで回避しました。こんなことをせずとも、Canvas.drawLines() サンならば解決してくれる、そう思っていた時期もありました。ですが、drawLines() はあくまで連続で直線を描画する関数であって連続直線を描画する関数ではないようでした(なにか別のあるのかな?)

float の配列を作る必要がある分、drawLine() をループするのと、drawLines() はどちらが速いのだろうか?drawLines() の中で drawLine() をループしているだけだったら笑えるが(あとでソースを見てみよう)

ゆいゆい潮汐リリースしますた [プログラム]

いちおう開発者っぽいものを。

ここ最近は、会社では Android アプリの開発をしています。個人でもいくつかぽちぽちアプリを作成していたのですが、なにを思ったか、ちょこっと手を加えて公開することにしました、まずは野良で。

アプリ公開用にドメインも取得しました。実は数年前から某ドメインは持ってはいたのですが、最近、失効させまして、それはドメイン転売会社に取得されてしまいましたので新しいものを。初期費用、および、二年目以降の維持費に毎年四千円弱かかります。まあ、お遊びに使うにはお手頃ですかね。

ということで、第一弾は「ゆいゆい潮汐」と言うタイドグラフウィジェットです。基本的にはお魚釣りの時合をチェックするものです。あとはー、サーフィンとかにも使えるかも。船舶関係には使わないでください、全く保証できないので。

ちなみに、もうちょっとアプリ名を何とかしろ、と言われても知りませんよって。

ダウンロード

 fd.pngゆいゆい潮汐 version 0.01(Android 1.6↑)

使い方

本アプリはウィジェットですので、ホーム画面に貼り付けてください。複数ウィジェットには対応していませんので、二個以上貼り付けてもあまり意味はありません。

yuitide_today.png

貼り付けるとデフォルトで北海道函館の潮汐が表示されます。

グラフの赤い部分が、上げ七分から上げ止まりまで、と、下げ三分から下げ止まりまでの一般的な時合になります。カレイ釣りをしていると、カレイさんは、ほんとうに時間に厳しいことが分かりますよ。

グラフ枠の紫背景の部分が夜間の時間、薄紫が常用薄明時間で釣り人がいちばんワクワクする時間帯です。グラフ枠内左上がタイドグラフが示している年月日、右上が現在の潮位になります。

あとの左側の部分は、タイドグラフを表示している地域、一日の干満時間潮位月の満ち欠け潮回りになります。

yuitide_tomorrow.png

タイドグラフが表示されている右側をタッチすると、明日の潮汐に切り替わり、もう一度押すと今日の潮汐に戻ります。将来的には、アプリ機能も追加して過去と未来の潮汐を確認できるようにしたいのですが、ウィジェットについてはこれで十分かな。

yuitide_ontime.png

なお、時合に突入すると左側にお魚さんの影が出ます。釣れるかは保証しませんがw

表示地域の設定

さて、オレ、北海道に住んでないし、とか言いたいところかと思います。

yuitide_other.png

タイドグラフ以外の左側をタッチするとこんなダイアログがでます。このダイアログに表示されている内容は、見てもらえれば分かると思うので割愛しまして、設定ボタンを押してみてください。

yuitide_config.png

縦に長いですがアプリの設定がでてきますので、潮汐ポイントをタッチします。

yuitide_area.png

都道府県をタッチして開いて、展開された地点をタッチします。ここでは、わたしの出没ポイントの新潟県新潟西を選んでみます。選択すると設定画面に戻るので、さらに戻るキーあたりで設定を終了します。

yuitide_change.png

はい、新潟県西港に変更されました。この設定は保存されているので、次回起動したときにも新潟県西港のままになっています、安心してください。しかし、さすがは日本海の若潮周り、ほとんど潮が動きませんね orz

ちなみに地域選択画面でメニューキーを押すと、GPS 連動で現在地のポイントを検索してくれる!…予定なのですが、バグっていて動きません。…全く話にならねえ。

その他の設定

先ほどの設定画面、色々とできるので説明しておきます。

[タッチ動作]
yuitide_touch.png

ウィジェットの左側をタッチしたときになにを起動するか?を指定できます。他情報を表示は、先ほど設定ボタンのあったダイアログを表示します。設定画面を表示は、それを飛ばして設定画面を直接起動します。今はありませんが、アプリ機能も追加したら、当然、アプリ画面を表示が加わることになります。

[グラフ色]
釣り人ではなく、上げ七分と下げ三分で赤いグラフに切り替わるのが気に入らない場合はチェックを外してください。青のみで線を引きます。

[さかなマーク]
釣り人ではなく、上げ七分と下げ三分でさかなの影が表示されるのが気に入らない場合はチェックを外してください。魚は出現しなくなります。

[ステータスバー表示]
釣り人ではなく、次の上げ七分と下げ三分の開始時間をステータスバーに表示したくない場合はチェックを外してください。

yuitide_notify.png

ちなみにチェックをしているとき、ステータスバーを展開して通知を表示するとこんな文言が表示されています。右側の時刻は通知を登録した時刻なので無視してください。この登録時刻は消したいな、紛らわしいし。

[アラーム]
釣り人ではなく、次の上げ七分と下げ三分の開始時にアラームを鳴らしたくない場合はチェックを外してくだ…って、これはデフォルトでチェックが外れていました。逆にアラームを鳴らしたい場合はチェックしてください、ですね。

[音楽]
アラームをチェックすると選択できます。アラームでは味気ないと思ったら好きな音楽でも流してみましょう。

[アラーム音]
アラームをチェックすると選択できます。いやいや、やっぱり、アラームだろ、と思ったらアラームを鳴り響かせてみましょう。

[強制鳴音]
アラームをチェックすると選択できます。マナーモードだろうが音楽とアラーム音が鳴り響きます。設定したまま電車内等で鳴り響かせないように注意が必要です。

[バイブレーション]
アラームをチェックすると選択できます。震えたいあなたに。

今後の課題

今後の課題は、いろいろとありますが、アプリ機能とGPS連動のバグつぶしをまずはしないとですね。細かいところでは、グラフ表示ロジックがいまいち美しくないとか、なんか表示ずれてね?とか、釣り設定が長すぎなので分割しろ、あたりです。
プログラム ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。