タグ:android ( 43 ) タグの人気記事

d0252816_22330503.jpg


3月9日〜10日と2日間にわたって開催された、国内のAndroid開発者向け大型カンファレンス「DroidKaigi 2017」の二日目にて、『いまからはじめるAndroid 6.0対応 〜Android 7.0から8.xを見つめて〜』というタイトルで発表しました。

いまからはじめるAndroid 6.0対応 // Speaker Deck
(補足)サブタイトルがないのは、スライドのデザインの都合上です。

脳内のシミュレートでは20分でいい感じと思っていたら、実際は30分ギリギリでした。だいたい脳内シミュの1.5倍かかるという貴重な知見を得ることができました。

発表時にも触れましたが、コードを出した解説は今週中にQiitaの方で公開させていく予定です。いちおう発表後の反応から

1. Runtime Permissionを通常実装する場合とPermission Dispatcherを使った場合
2. Volley+GSONとOkHttp3+GSON、Retrofit+GSON

という順で公開していきます。あとこっちの方で(Qiitaだと技術系記事になってないので)なんであの3つを危ないと触れたのかも書きます。

それと今回の発表でもところどころでエモい感じのトークをしましたが、これには意味があります。

正直なところ、Android 6.0対応に必要な技術的な情報はもうかなりの量が投稿されているという認識があって、「やり方がわからない」で困ってる人はもうほとんどいないんじゃないかというのが自分の認識です。じゃあなんで6.0対応をしていないかというと、その必要性をチームだったり上司だったり、もしくはエンジニア自身が認識できていないのが一番の理由にあるんじゃないかと思ったからです。

今回触れた通信部分の変更とRuntimePermissionの追加は、前者は「ユーザーが変更に気づくことのない変更」ですし、RuntimePermissionは「エンジニアひとりだけでは進めづらい(周りの認識や協力が必要になる)変更」です。こうした変更は個人アプリであれば自身の意志で進められますが、仕事でチーム開発であれば自身からの提案が必要不可欠です。そしてこうした提案は、プロデューサー職やデザイナー職の方からされることはまずありえませんし、必要なことであればそれはきちんとエンジニア側から提案しなければいけないし、そしてこれは必要な提案であるということを伝えたいことで、あんな感じの発表になりました。

それと本当にWantedlyでスカウトメール取得可にしたときは、たくさんの企業からアプローチがありましたし、エンジニアの提案を尊重してくれそうな企業さんもいくつかありました。スライドの最後に「転職しよう」と書いたのは冗談ではなく、そのアプリに本気で人生を賭けるつもりがないのであれば、きちんと提案や相談を受け入れてくれる企業にいって、どんどんそこのアプリを良くしていってもらいたいです。みなさん、いいアプリ、作っていきましょう。

最後になりますが、当日参加した全ての皆様、スタッフのみなさま、おつかれさまでした。

[PR]
D.I.C. - Google Play の Android アプリ

思ったより時間(期間というより工数)がかかってしまった。あと今回気づいたけどストア掲載内容の反映、そしてAPK自体の反映がものすごく早かった。数分レベルで対応終わってた気がする。

前にも書きましたが、droidkaigiのネタとして「結局まだ6.0対応終わってないアプリってどんだけあるんだろ」というチェック目的で作ってました。そして(自分がインストールしてるアプリは)結構対応終わってるみたいですね。どんどん当日への責任感みたいな重さがなくなっていくので嬉しい…。

d0252816_19271871.png


20でのビルドって、Androidいくつになるんですかねえ。

[PR]
d0252816_19163045.png

droidkaigiの発表に合わせて、現行のアプリが果たしてどこまでtargetSdkVersionを上げているのかをチェックするためだけの機能の実装途中。取得はできたので、表示はCardViewとRecyclerViewとCordinatorLayout使うのが最近ぽい感じなんでしょうか。なんかどれも2年前感がすごいので「ホントに?」って感じになる。
とはいえ基本は自分の利用優先なので、まずは最低限のところから。あと実装に使ってるアプリがAPI17ぐらいの時代の産物だったので、ActionbarSherlockとか使ってて懐かしさがすごかった。

ちなみにこの機能はAppCheckerというアプリのリスペクトなわけですが、Android 7.0とかの対応を全然やってくれなくて(unknown表示されてしまう)、更新しないのかなあと思ってよく見たら去年末もなにかアップデートされてた。あくまでも6.0までのチェックだけなのか。男らしすぎません?

[PR]
by yamacraft | 2017-01-19 20:30 | 開発記録
d0252816_23421792.jpg

表題の通りです。DroidKaigiのトーク応募に2件応募して、うち1つが受かりました。

以下、受かった方のトークの詳細(応募当時)


『いまからはじめるAndroid 6.0対応 〜Android 7.0から8.xを見つめて〜』

知ってます知ってます。いまの最新版(droidkaigi開催当時)って7.1であることを。

とはいえAndroid 7.0対応の前にAndroid 6.0の対応が出来てないまま、誤魔化し誤魔化しアップデートを続けているアプリがあるんじゃないでしょうか?

いまはなんとかなっても、いつかはどうにもならず「苦渋の決断」をする日がくるのではないでしょうか?
本セッションでは7.0に向けた復習として、自分が業務で「いやここで対応すべきだ」と決断していくつかのアプリを6.0対応した際に得たノウハウを共有いたします。さあ、みなさんも早いうちに6.0対応を果たし、気持ちよく7.0対応を迎えましょう!

主に話す内容
* Apache廃止に伴う対応(さよならVolley、こんにちはokhttp)
* パーミッション対応と、コード以外に考えること
* その他、Android 7.0に加え、さらにその先のアップデートに備えて気をつけることはなにか


なんか無理やり7.0のワード入ってるけど、この内容って1年ぐらい話すの古くない?と思った方、正解です。 去年のDroidKaigiで応募するつもりだったネタです。

去年のDroidKaigiはちょうどいまの職場にジョインした直後の開催ということもあり、(そもそも入社時期もかなり無理なお願いをしたこともあったので)トーク応募も一般参加も不参加確定していたんですが、どうも去年はこの手の内容がなかったようだったのでせっかくだし応募してみた、という経緯です。なので受かった本人が一番驚いています。

トーク時間も30分で応募しているのでそんなに7.0とか7.1の話はやらず、本当に6.0対応の話ばっかりする予定です。

と、ちょっと採用されて困惑してる的な部分を出しすぎましたが(でも驚いたのは事実)、そもそもこういったレベルの「聞いた時点でマサカリで殴りつけられそう……でもなんとかしたい……つらい……」と悩んでいる人たちの手助けをしたいという思いが以前からあって、今回のdroidkaigiはとても良い機会に恵まれたなと思っています。あと4ヶ月ぐらい先の話ですが、当日参加されるかたはよろしくお願いします。


[PR]
by yamacraft | 2016-11-16 23:30 | いろいろ
d0252816_17391034.jpg

(DとかGIGAのシェア機能って、こうした使われ方も想定してた気がするけどどうだったか覚えてない。いまは一ユーザーなので、怒られたらこのキャプと同じリアクションをとることにします)

タイトルどおりですが、先週水曜日に行われたOtemachi Firebase #1に参加してきました。LT15分枠で、初の15分スピーカーでした。内容自体は先回の神泉Firebaseで発表した内容の修正版です。

Otemachi Firebase #1 - connpass

<資料>
Firebase crash reportの実践的導入 // Speaker Deck

今回は初の15分LTだったんですが、特に急いで発表したわけでもない状態で時間内におさまったので、最近の発表の成果がようやくでてきたなという感じでした。
ちなみに会場は日経ビルだったんですが、トイレがとても広くて素晴らしいと思いました。あとアルコール関連があんなに早く空になる勉強会は初めてでした(母数が少なかったわけではない)。

次回以降の勉強会参加は未定です(開催情報の収集に疎いので)。が、今後も月1〜2での参加を続けていきたいので、何かいい勉強会の情報があれば提供お待ちいたしております。
[PR]
by yamacraft | 2016-07-19 22:00 | 勉強会
表題の通りです。

potatotips #30 (iOS/Android開発Tips共有会) - connpass

<資料>
【プレゼン資料】FirebaseのAuthとは - Qiita

当初はDirectBoot周りを調べて発表する予定だったんですが、この機能エミュレータだと確認できない上に端末にやろうとすると端末リセットが必須らしいので諦めました。内容的にはかなり中途半端感があったので反省しています。
発表自体は8分ぐらい使ってしまったので良くなかった。あとFirebase UIの存在を教えてもらった。(これは下の勉強会でも紹介されてた)

神泉Firebase勉強会 #1 - connpass

<資料>
Firebase crashの実践的導入 // Speaker Deck
Firebase crashの導入Tips(Android編) - Qiita
Firebase crashとParseCrashReportingでduplicate symbolエラーが発生する - Qiita

こっちはじっくり時間使って調べつつ(完全とは言っていない)、余裕をもって資料を作れたのでかなり気が楽にやれた。
時間も「おまけ」までに10分消化したので、ちょうど予測通りにいけたかなという感じ。おまけ部分を含めれば15分ぐらいに抑えられそうな気がする。あとは色々ミス表記があったことに気がついた。

そして今週水曜日開催のFirebase勉強会でもLTするので、お手柔らかにお願いします。内容は神泉Firebaseのやや修正版です。
Otemachi Firebase #1 - connpass

あとHealth Hack Meetupにも(LT枠で)興味があるけど、流石に今月3回の勉強会参加はしんどいのでちょっと考え中。

Health Hack Meetup - connpass
[PR]
by yamacraft | 2016-07-10 22:20 | 勉強会
2016年6月9日に行われた「Android Testing Bootcamp #2」にLT枠で参加してきました。

Android Testing Bootcamp #2 - connpass

「Androidのテスト(+CI)環境からみの話題」ということだったので、個人開発環境の話をしてきました。

<資料>
個人的CIとテスト環境 // Speaker Deck

個人的Androidアプリ開発環境を晒す - Qiita

実は個人開発というか、プライベートなチームで作ってるアプリ開発環境だったりするんですが、実際に設計したりコードに落としこんだりgit触る人間は自分ひとりだけなので間違ってはいない。

LTに関しては「これ絶対に5分で終わらないなー」って思ったら案の定リリース前レポートのところで5分経ってしまったので、よくないなって思いました。

勉強会の会場であるVOYAGE GROUPは広いしタダで借りられるらしいし、ピザも無料提供してくれるらしく素晴らしいなあと思いました。
当初、配置でテーブル+椅子席ではなく椅子席のみに陣取ったところ、ピザが非常に食べに行きづらい状況になって辛い感じになり「辛い」と正直にツイッターで泣き言をつぶやきつつ「ピザ食べたい」とLTで発言したら終了後に余ったピザを持ってきてくれる方々がいて、VOYAGE GROUPありがとう……ありがとう……という感じでした。以上です。

発表内容に関しては「個人でちゃんと構築しててすごい」みたいなことを言われた気がしたんですが、これにはいろいろ理由があるんですけどそのうち書きます(逃げ腰)。

以上です。
[PR]
5月20日(金)に開催されたGotanda.mobile #1にLT参加しました。

Gotanda.mobile #1 in Mobile Factory - connpass

発表資料:
Firesideのcrashを試してみる // Speaker Deck

FirebaseのcrashとanalyticsをAndroidアプリで試してみる - Qiita

ちょうどGoogle IOの期間内に開催されることもあったので、Google IOで発表された内容のどれかをやろうという予定でいました(何もなければokhttpの再入門的な話にする準備もしていた)。

その中でFirebaseが一番興味惹かれそうだし、自分も興味があった部分なので、発表翌日(ただしくは当日)にさっと動作確認をしつつ発表資料をまとめました。時間的にcrashだけでも5分超える気がしていたので、発表資料はcrash、Qiitaにはanalyticsにもちょっと触れる感じの構成に決めました。

時間的には、かなり早口で進めたけどやっぱり1〜2分ほど押してしまったので反省。あと毎回keynoteのプレゼンテーションは終了するたびに経過時間がリセットされるのを忘れてしまうのでよろしくない。

crashはdependenciesに追加するだけで完了と言ってますが、本当にそれであってるか自信が持てなくてドキドキしてましたが、ツッコミもなかったので間違ってはいなかったようです。
ただこれってGoogle Play Service使ってる気がするので、非Google Play Service搭載端末だとどうなるのか気になりました。

そして5月25日(水)に開催されたpotatotips #29にLT参加しました

potatotips #29 (iOS/Android開発Tips共有会) - connpass

資料:
Multi-Window上での「共有」について // Speaker Deck

Multi-Window上で共有機能を使うとどうなるのか実験 - Qiita

こっちは以前から進めていたAndroid N Previewの知見をやろうと思っていました。実はPreview 2時代はエミュレータがWebView関連で落ちるというバグが起きていたので、最終的な調査ができたのは結構ギリギリでした。

内容としては非常にややこしいというか、自分でも資料作っててややこしくなってきたので資料を読んでややこしいと思ってしまうことに間違いはありません。
何が言いたいかというと、「マルチウィンドウは夢も持たせてくれないなんて……」ってことです。

次回は今週(LTに空きが出たら)shibuya.swift、あとAndroid Testing Bootcampに参加予定です。どちらもLT枠です。

ん、そういえばGoogleIOの感想記事書いてない。
[PR]
by yamacraft | 2016-06-05 23:50 | いろいろ
タイトルが長い。

上記の通りです。場所はKOKUYOホール。机に1つ電源がついてて良かった(小学生並の感想)。
リアルタイムでの質問受付のために http://www.sli.do/ というサービスが使われていたけど、とてもよさ気な感じだった。で、サービスの利用価格見てびっくりした。

ちなみに発表資料は後日メールでURLを配信という話でしたがまだ来ていないですね。
そういえばカンファレンス中に「Google Play Game Serviceを使ってる人は…」という質問にたいして、ズンドコキヨシゲームを作ったおかげで挙手できたので良い思い出です。

最初にも触れたんですが、発表資料自体は後々公開される(はず)のと、すでにまとめている人が何人もいらっしゃるので、ここでは個人的な雑感とか温度感みたいなのを書いていきます。

【Overview of Android Beta Program】

いわゆるオープニングトーク。Android Nのロードマップを改めて説明(Preview5までリリースしてからQ3にて正式版をリリース)。
今回は特にユーザーからの要望やバグ報告が送られることを期待しているらしく、この後の話でも積極的な投稿を呼びかけていた。

ちなみに要望による仕様が変わる可能性はPreview 3(次のアップデート)までで、それ以降は基本はバグフィックスがメインになるので、要望は特にいまのうちに少しでも早く出した方が良さそうな感じだった。

【Android Studio 2.0】

以前からこうした時期はどうやってAndroid Studioをアップデートさせていくのかが正解かわからなかったけれど、やっぱり「複数バージョンを共用する」ことが正解っぽい雰囲気だった。
Jack and Jillに関しては「おそらく」1年後に正式採用ということで、社内でもハッキリとした明言はされていないのかなという印象。
そしてまだAndroid Studio2.1でもJackを利用した際の問題がいくつか起きているのは把握している模様。積極的にバグレポートを送って欲しいということも言われていた。

MultiDex部分にもいくつか改修がおきているらしく、特に今回からProguard以外でもシュリンク機能のみを使うことができるようになった。
ただしMultiDex対応すると何故かメソッド数が増えてしまうケースもあるらしく、これは対応中という雰囲気。

なお、ここで少し質疑応答の時間がとられるも、正直回答がどれも歯切れの悪いものばかりで、あまり素直に捉えるのは危険かなという印象だった。

【Android N What's New】

主な追加機能に関するざっくりとした概略。マルチウィンドウ間はウィンドウ間でドラッグアンドドロップもできるらしく、今度確認してみようと思った。
マルチウィンドウ対応は、既存アプリは強制的に「対応済み」と認識されるようで危ない。

通知のグループ化に関しては、既存のGCM利用時のグループID設定?と見た目の違いがよくわからなかった。
Java8部分に関しては、JDK1.8の機能そのままが使えるかはかなり微妙な感じで、サードパーティのライブラリの利用が必要そうな印象だった(あとJack利用が前提になるのと、上記でjackにも問題が残っていることを考えるとかなり利用しづらい)

あと気になった機能としてはデータセイバーと、特定のディレクトリへのアクセス権限確認。後者は正直そこまで言うほどユーザーが既存のストレージアクセス許可に敬遠してたのかなっていう印象がある。

データセイバーはAndroidの利点であるバックグラウンド動作に多大な影響があるし、これをONにすることで明示的に「無駄な通信やめろ」というユーザーの意思がアプリに伝えられることになるので、普段の動作でもデータセイバーONの時の挙動を意識しないと「クソアプリ」と認定されやすくなる危険性をはらんでる感じがある。
ちなみにデフォルトはOFF、というのが良心的だと思った(マルチウィンドウに比べて)。

他にも表示サイズ変更をやんわりと対応して欲しいというオーラみたいなのを感じた。とはいってもsw320dpでも表示に問題がなければよさそうだけど。

【Android NDK / Game / Vulkan Updates】

/system/lib/以下のライブラリ参照(libpng/libcrypto)が禁止になったのは結構NDK利用としては厳しいのかなと思ったけどどうなんだろう。
あとAndroid StudioでのNDKサポートとSDKマネージャでNDK落とせるようになった説明はありつつ、AS利用時の注意点も言われなかったので、もうASでNDKやるときの問題点はなくなったのかなという印象。

Vulkanに関してはモノ自体は良さそうだけど、使える端末自体もそうとう限られているところもあるので、個人的にはUnityでの対応を待った方がいいのかなあという印象でした。
あとCardboardに関する熱意を感じた。

【QAセッション】
印象に残ったものを抜粋

- 開発言語のswiftとかkotlinについて
コアになることはまずない、という力強い言及。kotlinはjavaがベースなのでまあ使って開発するのもいいんじゃないかな……。という、昔ScalaとかGroovyでアプリ開発することへの質問に対する温度感そのままという印象。

- Volleyについて
Google社内でもメンテやろうぜ!みたいな雰囲気がほぼ出てない印象。ささっと別ライブラリを利用したほうがよさ気。

- Bottom Navigationについて
デザインガイドラインは常に様々なフィードバックを受けて更新されていることと、Bottom Navigationもその一つで今後更新されることもあるということ。そしてGoogleのデザイナー曰く「Bottom Navigationはタブの置き換えではない」

- Android Support Library 23.3.0について
実は元々バグフィックス版だった。直前でAppLaunchCheckerが追加されたのでマイナーバージョンアップとなった。
また、getDrawable()の削除があったがこれは一部の端末で機能しないことがわかったためであり、基本機能が削られることはない。

- 音を止める時ってonPauseなの?onStopなの?
スピーカー同士で意見がわかれたので、後日Google Japan Devブログで回答がくるらしい。

- Java 8について
StreamのAPIバックポートの予定なし。サードパーティのライブラリを使うしかない。

- Design Support Libraryについて
Bottom NavigationのSupport Library組み込みは現在「作っていない」ので、要望を送らないと用意されなさそう。
InboxのようなFABを使ったメニューは実装しようとして流れたが、予定はある(調整中)。

- エミュレータ利用時の不満について
どんどん要望を送って

- useLibrary ‘org.apache.http.legacy'のサポート期間について
不明

- 開発環境について
Google内でもLinuxとMacを利用している人がほとんどで、Winは検証もあまりよろしくなければ対応に関する熱意も低めという雰囲気

- OpenCL、RenderScriptについて
RenderScript推進していた中心人物がGoogleを去ったので、今後はVulkanが推進されていく可能性が高い。OpenCLは今後もサポートなどはされなさそう。

- Support Libraryの今後について
もしかしたら年内にAPI4以下が落とされる可能性がある

- フィードバックの送信内容について
スクショなどの添付で補足してくれれば雑な英語でもいい。のでぜひ送ってほしい。

- cardboard SDKについて
社内の熱意は高いのでVulkan対応はいずれやるかも。UnityはUnity側でVR関連のAPIが充実してきたので少しずつこちらのサポートは切るかも。

以上でーす。
[PR]
by yamacraft | 2016-05-01 00:00 | 勉強会
d0252816_22444350.jpg

※ この本、個人開発でもいろいろやってみたいと思ってる人にもオススメですよって思いました(小学生並みの感想)

前回のイベントがとてもおもしろかったよ、という評判を聞いていたのでshinobu.apk #2に参加してきました。

当日の内容は録音データ等々が主催(モデレーター)の方によって公開されているので、詳細はそちらを見てもらうとして、ここでは純粋に素直に感じたことを書きます。
書き終わって感じたんですが、なんか若干辛い感想になってます。

shinobu.apk #2 のパネルディスカッション録音データとShow Notesを公開しました! #shinobuapk - I'm knowledge worker

会場について

会場は六本木ヒルズ森タワーのメルカリ本社。
個人的に森タワー(というよりGoogle Japanへの訪問時)に良い思い出がないので、正直言うと気が乗らない部分がありました。
そして早速メッセージに書かれていた「UL階ロビー受付」が業務時間外で終了しており、LL階ロビーを往復した時点で辛い気持ちでいっぱいになりました。
あと大江戸戦の電車が細い(狭い)のも、帰りを考えると辛くなります。多分自分と森タワーの相性が2:8ぐらい良くないと思っています。

会場自体はGoogle Japanと違ってちゃんと受付があるし、椅子には机がついてるし、飲んだこと無い瓶ビールが提供されてるしで神会場でした。

d0252816_22480756.jpg


発表内容について

自分もいちおう個人開発者のカテゴリにもいるので、他の人達がどういう風に考えているのかなという興味があり、かなり有用なイベントでした。
基本的な部分は同意見なんですが、部分部分に違和感を覚えるところがあったなあという印象でした。
特にマーケティング部分。レビューサイトの存在を誰も知らないのは時代なのかなと思いましたが、レビュー評価点を気にするけど「どうやって好意的なレビュワーを獲得するか」みたいなところには一切触れられてないとか。
ただこの辺は、自分も前職で小規模チームでプロデューサーの施策聞いたりグロースハックしたりした経験があるからこそ感じることができた違和感だと思うので、やっぱりアプリ開発は小規模チームでグロースハックまでちゃんとやる価値ってすごくあるなと実感することになりました。

あとモデレーターの方が意図してるのかしてないのか、対立を煽ったり何かをディスらせるように誘導するところがしばしばあったのがとても気になりました。

そんな感じでした。以上です。
[PR]
by yamacraft | 2016-04-25 22:45 | 勉強会