タグ

ブックマーク / qiita.com/KeithYokoma (20)

  • Android Nougat MR1 の Back, Home, Recent ボタンと画面回転 - Qiita

    Android 7.1 Nougat MR1 は現在ベータプログラム参加者向けに Developer Preview として配布されています。あくまでプレビュー版ですので挙動は今後変更されることもありますが、ぱっとさわってみたところ、しれっと大事なところの動きが変わっていたのでスクリーンショットとともに記録しておきます。 Android 7.0 Nougat までは、横画面にしたときの Back, Home, Recent は常に画面右側に配置されていました。 この配置が Android 7.1.1 Nougat MR1 では、向きによって変わります。 端末を右に倒すと左側に。 端末を左に倒すと右側に。 もし WindowManager で他のアプリに重ねて View を表示する機能がある場合、この Back, Home, Recent の領域に View を描画することができます。 ちな

    Android Nougat MR1 の Back, Home, Recent ボタンと画面回転 - Qiita
  • まだ CircleCI で消耗してるの? - Qiita

    概要 もう随分と前に TravisCI から CircleCI へ乗り換えたのですが、いかんせん、便利な CircleCI をもってしても Androidプロジェクトのビルド時間は長くなり続け、ついに 1 回のビルドに 20 分を費やすほどにまで成長してしまいました。いくつか無駄を省いたり、キャッシュをしてみたりと言った策を講じたものの、目立った改善が得られませんでした。そこで CircleCI を脱却してみることにしました。現在、CircleCI を脱却し Wercker を利用することで 1 回のビルドが 5 分ほどで終わるようになりました。この記事には、何がどのようにして短時間で済むようになったかを書き記してあります。 問題の根源 そもそも CircleCI で時間がかかっている部分はどこかというところから見ていきます。現在のプロジェクトで使用している分には、以下に上げる部分でか

    まだ CircleCI で消耗してるの? - Qiita
  • 新年のうちに抑えておきたい、イマドキなイカした Android のオープンソースライブラリ集 - Qiita

    以前の投稿(イマドキなイカした Android のオープンソースライブラリ集)から一年以上経過し、様々なライブラリが継続して開発されている中、どんどん便利なものが増えてきていますので、改めてそれらを纏めて見てみたいと思います。 プログラミング・パラダイムに関するもの Dagger2 Google が公式に Square, Inc. の Dagger をフォークし、リフレクションを排してパフォーマンスを上げたもの。より静的に DI をする方向に持って行っています。 RxJava リアクティブプログラミングを Java に持ち込むためのライブラリ。 デバッグ用途に使うもの u2020 デバッグ時に便利な各種のパラメータを NavigationDrawer に詰め込んで、デバッグビルドのアプリで操作できるようにすることで、様々な環境下でのテストが簡単になります。通信周りは、強制的にエラーを発生さ

    新年のうちに抑えておきたい、イマドキなイカした Android のオープンソースライブラリ集 - Qiita
  • ヒープダンプから、その瞬間の各オブジェクトの持っている状態を調べよう - Qiita

    デバッグ中、何か良からぬ挙動を発見した時に、怪しげなオブジェクトの持っている状態がどうなっているかを調べる場合において、デバッガをアタッチして調べることが困難なことがあります。例えば、その怪しい挙動に再現性のない場合を考えてみると、再度同じ挙動を起こすまでに膨大な時間が必要になるかもしれません。そもそも、どこが悪いのかも分からないのに無闇にデバッガをアタッチしていては、検証にかかる時間が無駄に伸びてしまう可能性もあります。 この記事では、怪しい挙動を発見した瞬間に、デバッガに頼らずともオブジェクトの持っている状態がどうなっているかを調べたい人のための手順をまとめます。 AndroidStudio でヒープダンプを取る AndroidStudio には、それぞれのプロセスがどのくらいメモリや CPUGPU のリソースを消費しているかを可視化してくれるツールが組み込まれています。普段 Log

    ヒープダンプから、その瞬間の各オブジェクトの持っている状態を調べよう - Qiita
  • なぜ iPhone の画像は Android の画像よりもずっと高品質なのか - Qiita

    AndroidiPhone との比較は多くの点で議論されており、どちらがより良いかは、Android の画像の質は iPhone とくらべてずっと劣るという点を除けば、未だ結論が出ていません。Facebook、Twitter、Instagram 等どれを使っていても、写真をとって、フィルタをかけて、ソーシャルネットワーク上に公開すると、いつも Android から投稿される写真は画質が劣化しています。しかし何故でしょう? 私達は昨年の間調査をし、そしてついに、Google が犯したほんのちょっとしたミスが原因であることを突き止めました。それは当にちょっとしたミスでしたが、その影響はすべての画像を扱うアプリケーションに波及するほど大きく、現在に亘っても影響が続いています。 問題は、libjpegです。 libjpegといえば、数多くのオープンソースプロダクトでも使用されており、And

    なぜ iPhone の画像は Android の画像よりもずっと高品質なのか - Qiita
  • チームとして少ないミスで素早くアプリを継続的・持続的に作り続けるためのメソッド - Qiita

    この投稿は DroidKaigi で話そうと思ったけど採択されなかった RejectedKaigi な内容です。 プログラムは、書けば書くほど複雑になります。行数が増え、分岐や繰り返しが増え、メソッドが増え、クラスが増え、パッケージが増え、管理するものは日に日に増えていきます。これらのものを使う側からすると、使うものが増えるということは、それだけ覚えることが増えることになります。勿論、IDE やエディタプラグインによって、そのような労力が極力減らされることもありますが、覚えることが少ないに越したことはありません。 この記事では、IDE やエディタプラグインはひとまず脇に置き、チームでコミュニケーションを取りながらコードを書くという観点で、従来のプログラミングのプラクティスを基に、開発時のミスを少なくし、チームで素早くアプリを作り続けていく方法論を深めていこうと思います。 Agenda 型を

    チームとして少ないミスで素早くアプリを継続的・持続的に作り続けるためのメソッド - Qiita
  • 幸せな非同期処理ライフを満喫するための基礎から応用まで - Qiita

    クライアントアプリにとって、マルチスレッドプログラミングは避けては通れない重要な概念です。しかし、気をつけないとハマるポイントも多く、初めてクライアントアプリを学ぶ人たちからすると、複雑で難解な取っつきづらいものでもあります。ここでは、スレッドの基から、効率的な使い方、また複雑化しやすいポイントをシンプルに実装するためのノウハウを見ていきます。 TL;DR スレッドの取り扱い方を知る Threadをそのまま使わず、AsyncTaskやIntentService、時にThreadPoolExecutorを使ってスレッドの使い方を効率化する。 複雑な処理フローをシンプルに扱うためのフレームワークを導入する PromiseやRxAndroidなどで、複雑化しやすいポイントを整理する。 スレッドの基 スレッドといえば、ThreadクラスやRunnableクラスがベースにあります。以下のようにす

    幸せな非同期処理ライフを満喫するための基礎から応用まで - Qiita
  • Web な人もアプリな人も、これから新しく Android アプリを作るなら抑えておきたいポイント3選 - Qiita

    概要 Lollipop が発表されてから時間も立ち、Android Auto、Android Wear、Android TV と、多様性を見せ始めた Android ですが、今後とも多種多様なデバイス向けに様々なアプリを作っていく流れがあるなか、新しくアプリを作るなら抑えておきたい要所をまとめました。 TL;DR 抑えるところは 3 つ。 画面とライフサイクル 非同期処理 互換性 かなり端的にいうと、Activity や Service などのライフサイクルとうまく付き合いながら、コードの構成のレイヤー化を行い、非同期処理を簡潔に記述できる準備をしておくことと、非同期処理とあわせてマルチスレッドプログラミングの基を抑えておくこと、互換性への準備を最初にしておきましょう、という話です。 画面とライフサイクル MVC を基として、データ構造を定義して Activity や Fragment

    Web な人もアプリな人も、これから新しく Android アプリを作るなら抑えておきたいポイント3選 - Qiita
  • Google Play Services の SDK がようやく分割されるのでワクワクしますね - Qiita

    元記事はこちら どうも、Android Advent Calendar に登録するのを忘れていて、折角の機会を棒に振った KeithYokoma で御座います。 元記事はもう先月の話ですのでご存じの方も多いかと思いますが、ついに、あの Google Play Services の SDK が分割されます。今まで、Jake Wharton があまりのデカさに涙目になったり、これによって 64k のリミットに引っかかってビルドができなくなったり、これを回避するために頑張って MultiDex に対応 したりしてきたことと思いますが、もう悩むことはありません。 Google Maps API として、ナビゲーションの開始をサポートするものが増えるので、簡単にナビゲーション機能が実現できるようになります(もちろん、今までも Intent で頑張る方法があったりはしましたが…)。 また、ライトモード

    Google Play Services の SDK がようやく分割されるのでワクワクしますね - Qiita
  • Fragments vs. CustomViews に一つの結論を出してみた - Qiita

    前提知識 ざっくり言うと Fragment はライフサイクルが複雑で、フレームワークそのものが複雑なので、モジュラーな設計をするには大きすぎる View を継承して自分で CustomView を作るほうが、余分にライブラリを追加する必要がなく、古い端末も同時にサポートできる そもそも Activity も Fragment も Controller なのでロジックをそこに書いたらダメ 読んでおきたいリスト Fragment は当に多様なデバイスへ対応する唯一の方法なのか Square Fragmentやめるってよ Advocating Against Android Fragment 【翻訳】Android Fragmentへの反対声明 FragmentManager#executePendingTransactions() が怖くて使えないあなたへ 知らないとハマる Fragment

    Fragments vs. CustomViews に一つの結論を出してみた - Qiita
  • Multi-dex Support を使おう - Qiita

    Multi-dex とは 一個の dex に含められるメソッドの総数が 65,535 なのは有名な話ですが、Google Play Services や Guava などの大きなライブラリを使うと、わりとすぐにその数字に達してしまいます。 Guava の場合、ドメインに応じて dependency をつまみいできるので、不要なものは dependencies に記述しなければ良いだけで済みます。 しかし、Google Play Services は All in one なライブラリのため、つまみいができず、ProGuard で使わないものを無理やり削ぎ落とすなどの工夫が必要です。 それでも、ライブラリへの依存が増えれば、その分だけメソッドの総数も増えていきます。どうしても 65,535 を超える場合、Multi-dex Support を使うことで、この問題に対応することができます。

    Multi-dex Support を使おう - Qiita
  • 声に出して読みたい Android のライブラリ - その3 - Qiita

    声に出して読みたいObjective-Cのライブラリ8種(2014.7) に触発されて書いてみます。 第一回はこちら 前回はこちら 今回は、アノテーションを用いた、アスペクト指向っぽいものを中心に紹介します。 hugo 安心と信頼の JakeWharton 先生のライブラリでございます。 デバッグ時にメソッドコールをロギングしてくれるライブラリで、ログ出力をしたいメソッドに対して@DebugLogアノテーションをつけることで、そのメソッドの呼び出しと終了がロギングされます。呼び出されたスレッドと、終わるまでに要した時間も出力されます。 アノテーションの実体はhugo-annotationsにありますが、ログ出力処理そのものはhugo-runtimeにあります。hugo 自体は、AspectJ をベースに、@DebugLogアノテーションのついたメソッドが呼ばれたのを検知して処理を実行してい

    声に出して読みたい Android のライブラリ - その3 - Qiita
  • 声に出して読みたい Android のライブラリ - その2 - Qiita

    声に出して読みたいObjective-Cのライブラリ8種(2014.7) に触発されて書いてみます。 前回はこちら android-promise Android フレームワークにおける Promise の実装です。Bolts は厳密には Promise ではなく(どこでそのスライドを見たのか忘れてしまった…)、継続 をベースにしているライブラリで、なにやら最近はちょっと違うものも含まれるようになってきましたが、こちらは純正の Promise の実装です。もう一つ、jdeffered もありますが、jdeffered についてはこちらを御覧ください。 Android でよくある、非同期処理とライフサイクルオブジェクトの関係で起こる悩ましいバグにうまく対応するため、Promise を生成するときにライフサイクルオブジェクトを登録するのが特徴です。これによって、ライフサイクルオブジェクトが死を

    声に出して読みたい Android のライブラリ - その2 - Qiita
  • 声に出して読みたい Android のライブラリ - その1 - Qiita

    声に出して読みたいObjective-Cのライブラリ8種(2014.7) に触発されて書いてみます。 今回は Square 社製ライブラリを見ていきます。 Picasso 安心と信頼の Square 社製のライブラリです。画像のローディングとキャッシュについて面倒を見てくれますが、画像の加工についても扱っています。 Context、多くの場合Activityのライフサイクルに合わせて画像の読み込みを管理したり、AdapterViewの中にあっては、Viewのリサイクルをハンドリングして、画像のロードをキャンセルしたりもしてくれます。 Transformationインタフェースを実装し、そのロジックを渡すことで、画像の加工もできます。 処理の始まりはPicassoクラスから。Picasso#with(Context)で自動的にオブジェクトの初期化がはじまり(まだの場合)、続けてどこから画像を

    声に出して読みたい Android のライブラリ - その1 - Qiita
  • 非同期処理でよく使う IntentService と AsyncTask は何が違って何が同じなのか - Qiita

    非同期処理と言えば、IntentServiceとAsyncTaskのいずれかは使ったことがあると思います。UI スレッドとは別のところで非同期に何かする、という点ではどちらも同じことをこなせるのですが、実際問題として何が違って何が同じなのかというところを踏み込んで見て行きたいと思います。 並行性とパフォーマンス IntentServiceは内部にHandlerThreadを持っていて、このHandlerThreadのなかで非同期処理を実行します。HandlerThreadは、内部に持っているHandlerにメッセージが渡ってきた時、それを順に処理するようできているので、メッセージを同時に複数送ると、ジョブキューのようにシリアルな動作で、メッセージを1つずつ捌いていきます。 Handlerがもっているメッセージキューにメッセージがなくなると、IntentServiceは自らのライフサイクルを

    非同期処理でよく使う IntentService と AsyncTask は何が違って何が同じなのか - Qiita
  • イラストレータで作った画像をスクリプト一発で Android や iOS 用に出力する最高に便利な方法 - Qiita

    アプリ用の画像パーツを作ると、どうしても面倒くさいのが、各 dpi 向けに画像を出力する作業です。 初めて作る人にとっては、mdpi を基準として、hdpi は 2 倍、xhdpi が 3 倍…と計算していたら日が暮れた、なんてことも。 そんな時、スクリプト一発で mdpi ~ xxhdpi までのアセットを自動出力してくれるものがあったら… Illustrator 向けですが、JavaScript で書かれたスクリプトが GitHub に落ちているではありませんか!! How to use とても簡単。Illustrator のメニューから、ファイル > スクリプト > その他のスクリプト で、このリポジトリのスクリプトを選択します。そうすると、出力先のディレクトリを選択するよう促されるので、出力したいディレクトリを選択します。 つぎに、Android / iOS それぞれに必要なリソー

    イラストレータで作った画像をスクリプト一発で Android や iOS 用に出力する最高に便利な方法 - Qiita
  • Android でイベントバスを使う - Qiita

    Android では、非同期処理の返り値はコールバックインタフェースを介してやり取りされる。 これ以外にも、Observer パターンに基いて設計されているクラス(SharedPreferencesなど)や、Activity と Fragment とのやりとりなどでも、コールバックインタフェースを定義して、その実装とライフサイクル管理をする。 一方で、機能が増えるとその分コールバックインタフェースの定義も増え、Activity が幾つものインタフェースを実装することがある。コールバックインタフェースの定義が増えてくると、その分だけ依存関係が複雑になりやすくなったり、コールバックを受けて更に非同期処理を呼び出して…としていくと、どんどんネストが深くなったりしていく(コールバック地獄)。 そこで、コールバックメソッドを呼ぶタイミングでイベントを発火し、コールバックインタフェースの実装ではなく、

    Android でイベントバスを使う - Qiita
  • Android のテストで設計をイイカンジにしよう - Qiita

    Android フレームワークは、あまり強力とはいえないものの、ある程度のテストフレームワークを内包しています。 ベースが JUnit3 なので、記法が古かったりすることもありますが、とりあえず JUnit3 の作法を身に付ければある程度のテストは書くことが出来ます。 Android のテストケースフレームワーク Android がもつ各種のコンポーネントをテストするためのフレームワークが有ります。 いろいろな種類がありますが、おそらく最も頻繁に使うのはAndroidTestCaseでしょう。 AndroidTestCase Android でユニットテストをするなら、ほぼ間違いなく使うであろうクラスです。 そのようなテストケースでは、すべてこのクラスを基底に作っていきます。 もう少し具体化して言うと、Contextに依存するすべてのテストはこのテストクラスを使うことで、イイカンジにテスト

    Android のテストで設計をイイカンジにしよう - Qiita
  • やさしい設計 〜 Android 編 - Qiita

    アプリを作っていてありがちなこと Android には、画面を構成するための Activity というコンポーネントがあり、概ね MVC フレームワークの Controller に相当する機能を持っています。 MVC といえば、肥大化する Controller というのがよくある問題として挙げられますが、Activity も例に漏れず、往々にして肥大化しがちです。 また、Model も、その責務を詰め込んでいくと肥大化しやすいレイヤと言えます。 この投稿では、Controller や Model の肥大化を極力防ぐためのレイヤわけを、Android アプリ向けに書いていきます。 Activity を綺麗に保つ Activity は、Controller として、様々な UI から受けるイベントを受けて、適切にハンドリングする役割を持っています。 OptionsMenu や ContextM

    やさしい設計 〜 Android 編 - Qiita
  • イマドキなイカした Android のオープンソースライブラリ集 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 今から Android やるならチェックしておきたい、厳選イカしたオープンソースライブラリ一覧。 support-v4 や support-v7-appcompat などは公式のものなので割愛。 開発環境 Android SDK Android SDK Installer 公式からダウンロードしてポチポチとチェックを入れてはダウンロードして…が面倒くさいならコレ。 シェルからコマンド一発でダウンロード出来るので、CI で使うのにも便利。 ADB Idea AndroidStudio および IntelliJ 用のプラグインで、IDE か

    イマドキなイカした Android のオープンソースライブラリ集 - Qiita
  • 1