androidとは、googleが展開するモバイルデバイス向けのオープンなOSとその開発環境の事を言います。
もともと、androidは創始者アンディ・ルービン氏が立ち上げた米ベンチャー企業で、これを2005年にgoogleが買収しました。
当初スマートフォン市場においてiphoneに大きく水をかけられていましたが、
最近はそのオープン性によって、多キャリア、多端末展開が進み、米国の単月での新規登録数ではiphoneを抜き去ったとのニュースもあります。
日本でも2010年4月に発売されたXperiaが人気を呼び、新規登録数でガラパゴス携帯を抑えて1位になるなど、今のandroidには勢いがあります。
また、androidは何も“携帯電話“専用OSではありません。
タブレットPCや、テレビ、その他の組み込み系デバイスでの利用も想定したオープンソースOSです。
オープンソースであるがゆえに、各デバイスに向けたカスタマイズも可能で、
各種家電のソフトウェア部分の大幅なコスト削減が期待されます。
ちなみに、つい先日SONYとgoogleが提携し、androidテレビを今秋に米国で発売するとの発表がありました。
このニュース個人的にはとてもワクワクしています。
だって、テレビ向けのアプリケーションを個人が作れるかもしれないじゃないですか。
まあ、マーケットをどれだけオープンにするのかまだ良く分からないですが、Googleが噛んでいるからにはオープンになると思うんです。
新しいテレビを買えるかどうかはまた別問題ですが。。。
話がそれました。
androidOSはlinuxベースのアーキテクチャで、基本的にJAVA言語でアプリを開発します。
androidSDKは無料配布されており、Eclipse向けプラグイン「ADT(Android Development Tools Plugin for Eclipse IDE)」もあります。
よって、androidアプリ開発は基本的にはEclipseを使って行う事になるでしょう。
それから、androidはオープンソースなので、ソースコードが公開されています。
なので、自分のアプリが上手く動かない原因をソースコードまでさかのぼって検証したりする事も可能です。
数GBあるのでちょっとDLする勇気は必要ですが・・・
ちなみに、クリフはDLしたけど、まだほとんど覗けてません^^;未熟者故。
と、
偉そうに書き連ねましたけど、クリフもまだそれほど深く理解してるわけじゃありません。
それでも、android携帯(HT-03A)を手にとって実際にアプリ開発をしていると、
これがいわゆるガラパゴス携帯とは比較にならないくらい便利で、楽しい代物だって事は分かります。
日本ではまだまだガラパやiphoneが幅を利かせていますが、
クリフはこれからandroid一筋で行こうと思っています。
なので、アプリ開発の技術もどんどん勉強したいし、その情報は皆さんに発信して行きます。
クリフの様な半端な開発者が日本にはたくさんいると思うので、そう言った方達に火を付けてandroidアプリ開発を盛り上げる事がこのサイトの野望です。
次ページ以降はクリフがCliphWeatherを作る過程で学んだ事を中心にandroid開発の手法を解説して行きます。
フリーのブログサイトCMSツール「WordPress」って知ってる?
俺も何となくキーワードは知ってたんだけど、
最近ようやく詳細を知り、Cliph.netに導入して見た。
これ良いわ。
これがただって凄い。
最近、AviaryやらEcllipseやらフリーのツールに驚かされてばっかりだけど、
WordPressも相当使える。
まだ、中身がすっかすかなので恥ずかしいんだけど、
このサイトに導入しました。
PHPのプログラムを中心としたファイル群をWEBサーバー上にコピーして、
ちょいちょいと設定するだけでオリジナルブログが完成!
しかも、デザインテーマがWEB上で流通していて、
世界中の人が作ってくれた素敵なデザインを選び放題。
色んな機能を提供するプラグイン開発もオープンになっていて、
これもWEBから探してインストール出来る。
俺が入れたのはスマートフォンでのアクセスを判別して、
テーマを切り替えてくれるプラグイン!
この2日くらいで導入とデザイン選びをしたんだけど、
サイトの質が5倍位向上した気がする。
これからサイト構築する人はWordPressの活用も考えてみたらどうでしょう?
あ、ただし、
WordPressを動かすにはPHPとmySQLが使える環境が必要ですので、
レンタルサーバを選ぶ際は気をつけて下さいね。
詳しくはここ
WordPress日本語化のサイト
やろうやろうと思ってた事がようやくできました。
もともと、
XMLには8日間分の天気予報が入っていたので、
これを狭い画面でどう見せるかがポイントだったんだけど、
今回はそれを左右にスクロールさせる事で実装して見ました。
実際使ってみると結構良い!て言うか、
なんか、個人的にはちょっと感動的なんですが^^;
どうでしょう?
不具合等あれば教えて下さい!
よろしくお願いします。
ちなみに、昨日のブログで背景色カスタマイズの予告をしてましたが、
次はこれに取り組みます。
では。
よし!
プロセスを適切に終了させる機能実装完了!
結局、
プロセスをKillすればOKだった。
と言う事で最終的に以下の対処を実施。
・バックエンドで動かす更新サービスは別プロセスで起動
・更新Serviceは処理完了後に自らのプロセスをKill
・設定Activityはメニューが2段階になっているので、
1ページ目のonPause()(画面が隠れた時)でプロセスをKillすると
後続のページも表示されないからこれはNG
→onPause()ではfinish()を呼ぶ事にした。
・1ページ目のメニューに「今すぐ終了」を追加。
これは設定のプロセスをKillする。
・「今すぐ終了」を使う事を前提として、後続ページでの選択後、
1ページ目に戻る様、遷移を変更(元はHOMEに戻っていた)
これを実装した上で以下の検証を実施。
・更新実施後Astro File Managerでプロセスを確認
→CliphWeatherのサービスが無い事を確認
・設定画面を開き「今すぐ終了」をクリックしてから、
TaskManagerでタスクを確認。
→CliphWeatherのタスクが表示されない事を確認
・設定画面を開き何もせずにHomeへ戻る。
-TaskManagerにタスクが表示される
→kill出来る。
→AutoKill出来る。
→ignore出来る。
これで多分大丈夫でしょう!!!
何か気付いた方ご連絡ください。
タスク周りでご意見を頂く事が増えたので、
ちょっと改めて勉強しているんだけど、
これまた良くわからん。。。
テキストやリファレンスに書いてあるandroidにおけるタスクって言うのは
「一連のActivityを積み上げる為のスタック」と説明されていて、
単なるフレーム見たいなものに思える。
一方で、Marketには「タスクをKill」するアプリが溢れている。
ところが、どうもAndroidで言う「タスク」をkillするメソッドが見つけられない。。。
プロセスやパッケージ全体を殺すメソッドは見つけたが、
タスクにはそう言うのがなさそう。
って事はだ。
いわゆる「タスクキラー」はAndroidで言うタスクをkillしてるんじゃなくて、
プロセス、もしくはパッケージ全体をkillしてるんじゃないか?
そう言う事であれば、
配慮すべきポイントが比較的クリアになるから嬉しいんだけど、、、
結局こう言う時に教えてくれる人がいないとつらいんだよね。。。
と、言う事で、
本日ついに「日本アンドロイドの会」に参加してしまいました。
別に会合に出席したりするのは恐れ多いから考えていないんだけど、
偉い人たちに質問出来る環境が欲しかったので。
上記の疑問もさっそく投稿して見ました。
これで今後の開発がよりスムーズに進むようになると良いな。
さて、ちょいと気が早いけど、
これが解決出来たら、今度は背景画像の動的生成(背景色の任意設定)
に取り組んで見ようと思います。
できればテクスチャーの選択も出来るようにしたいな。
多分、恐らく、8割方解決したと思う。
昨日から今日にかけての調査と対応の履歴をメモっときます。
昨夜
・メモリリークと言うキーワードでググりまくる。
・contextを引き回す事でactivity全体の参照が残ってメモリリークの原因となる
と言う情報を入手。(と言うか、他に情報を見つけられなかった)
・でもこれって、Activityの話であって、appWidgetとは関係ないんじゃない?
てか、そもそもappWidgetって何なの!?と混乱して思考停止。
今日仕事中
・appWidgetをコントロールするappWidgetProviderはBroadCastReceiverを継承したクラスだと思い出す。
・そして、BroadCastReceiverはonReceiveメソッドを処理し終わると抹殺準備完了なクラスで、
かつ、長時間(10秒以上と本にあった)の処理をさせるとANR(Android Not Responding)ダイアログが出て、
強制終了を迫られる。
→つまり、長時間メモリをリークしてしまう類のクラスじゃない!
・と言う事で、犯人は裏で処理をしているサービスである事が濃厚に。
・ここでふと気付く。
サービス終了させていないんじゃないかと。。。。
帰宅後
・アストロファイルマネージャをインストールして、プロセスをチェック。
・案の定、Cliphweatherのサービスが居座ってた。しかも10MBも使ってる。。。
・想定された問題点は以下。
-明示的なサービス停止処理の欠落。
-サービスをウィジェットと同プロセスで起動している為、プロセスが殺せない?
・これに対し以下の対処を実施。
-更新処理終了時(もしくは異常終了時)にstopSelf()メソッドにてサービスを停止。
-サービスを別プロセスで起動。
・これを実施後にアストロでチェックするときれいにサービスが消えてた!^^
これで一応、応急対処は出来たと思うんだけどどうだろう?
問題があればご連絡お願いします。
うーん。
やっぱアプリ開発って難しいね。。。
またまた、
未熟な事を痛感させられる事態に直面。
先日ユーザーからメモリリークの可能性を指摘されたので、
調べ始めたんだけど、分からん。。。
とりあえずEclipseにMemory Analyzerを入れて、
状況を確認して見たけど、まず見方が良く分からん^^;
その上、appWidgetアプリの場合リソースがどんな形で保持されてるのか
全然理解できていない事に気付いた。
もしかすると、表示している以外の画像やテキストも全部メモリに保持してしまっている?
そもそも、appwidget開発のドキュメントってあんまり無いんだよな~
英語ならありそうだけど。。。
何れにしてもメモリリークしちゃってるんなら、
早急に対処しないと行けないし、頑張って調べます。
おっしゃ~~~~
表記の通り、
android1.6向け天気予報ウィジェット「CliphWeather」の
メジャーバージョンアップをリリースしました!
ああ、長かった。。。
と、言っても、
Experia効果でダウンロード数が劇的に伸びて、
ご指摘いただく事が増えた事で慌てて対処を始めたんだっけ。
じゃあ、正味3週間位でやっつけたんだな。
まあ、頑張ったよね。
毎日2時まで頑張った甲斐があった。
今回のバージョンアップポイントを整理すると以下の通り。
①安定性強化
そもそもappwidgetとして考慮すべき点を無視して実装していたのでこれを改善。
→起動時やhome復帰時のトラブルに対処。
また、http通信失敗の際の例外処理を適切に実装。
→更新時の強制終了事象に対処。
②XMLソースの変更
今までのXMLソースは個人が気象庁のサイトをクロールして取得したグレーな情報で、
地方によっては2日分の天気予報しか取得出来ないものであった為、データソースを変更。
今回採用したのは、ウェザー・サービス社が個人向けに無償公開しているXMLで、
今までのソースに比べて以下の点で優れています。
・正式に提供されている情報である事。
・全国の週間天気予報が提供されている事。
・3日後以降の降水確率情報が提供されている事。
このソースを見つけるまでは、有償データに手を出すしか無いかと悩んでいたので、
物凄い感謝してます。
③デザイン変更
良く天気アイコンが小さい、矢印等の視認性が悪いと言ったご意見を頂いていたので、
思い切って天気アイコンを自作してデザインを一新しました。
これに伴い、右下に出していた都道府県、地域表示は削除しました。
その代わり次の対処を行っています。
④メニューページ改善
メニューページの各項目に現在の設定状況を表示するようにしました。
前項で削除した都道府県、地域表示はここで代替している想定です。
ただ、これはやっぱりトレードオフの関係で、
天気アイコンが大きくなって見やすくなった半面、今表示しているのがどこの天気予報か
忘れてしまう事があります。
次のステップではこれらの表示パターンを選択出来るようにすべきかなと思っています。
それにしても、
ほぼ初心者のクリフが趣味で作り始めたアプリがダウンロード数1万件に届く勢いで、
みなさんからのご要望も多く頂くようになっている現状が未だに現実味が薄いです。
物凄く嬉しい反面、恐ろしくもあります。
所詮、片手間で無料で作っているアプリなので、
十分な検証は出来ていませんし、タイムリーなサポートも出来ません。
良いものを継続してお届けしていく事は本当に大変なことなんだなと、
つくづく思い知らされる今日この頃です。
でも、だからこそ
かつて無いスピードでandroid開発のノウハウが蓄積出来ていて、
これは私の得難い財産だと思っています。
なので、めげずに今後もCliphWeatherを始め色んなアプリを作って行きたいと思います。
利用者のみなさん。
今後ともご指導ご鞭撻のほどよろしくお願い致します。
ぺこり
ふう。
ようやくとりあえずのゴールが見えて来たぞ。
後、雨系のアイコンを作れば完成のはず!!
今週検証して、予定通り今月末リリースかな。
でも、最近ちょっと夜更かししすぎで体調崩したので、
今週はあんまり無理しないようにします。
ウズウズ。。。
それにしても、
今回のアプリ制作で結構色んな事を学んだので、
来月は学んだことのまとめを執筆して行こうかと思います。
俺みたいな、
ちょっとJAVAとか齧ってるけど本格的なアプリ開発は経験無しな人が、
軽い気持ちでandroidアプリ開発を志す際に助けになるコンテンツにしたい。
とか言っちゃって。
またそうやって自分の首を絞める。。。
意外とMだね。