タグ

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

  • うまくクラス名を付けるための参考情報 - Qiita

    クラス名には、多くの場合"名詞"を用います。メソッド名の場合は動詞や助動詞を用いて命名しましたが、クラス名は何かしらの責務を持つモノとして捉えるため、名詞を用いることになります。 一方、インタフェースの宣言をする場合、そのインタフェースの名前に"形容詞"を用いることがあります(例:Iterable、Closeable等)。形容詞を用いることで、クラスの持つ性質を説明的に見ることができるようになります(Iterableな配列のList実装 -> ArrayList等)。 この記事は、どのような名詞や形容詞がクラス名やインタフェース名として用いることが出来るかを一覧し、できるだけクラスやインタフェースの役目を端的に表せるようなリファレンスとして活用できるものを目指していきたいと思います。 自分自身がクライアントアプリケーションのバックグラウンドを持っている為、多分にそこで用いる命名方法が含まれ

    うまくクラス名を付けるための参考情報 - Qiita
    kasumani
    kasumani 2016/05/17
    うまくクラス名を付けるための参考情報 クラス名には、多くの場合"名詞"を用います。メソッド名の場合は動詞や助動詞を用いて命名しましたが、クラス名は何かしらの責務を持つモノとして捉えるため、名詞を用
  • うまくメソッド名を付けるための参考情報 - Qiita

    クラス名編をつくりました あるメソッドを定義しようとするとき、そのメソッドを使う人達が名前からどんなことをするか理解できるようにするには、メソッドの内容に応じて適切な情報量の命名が求められます。 この記事では、メソッド名に用いることでどのような情報が提供できるかを見ていきたいと思います。 真偽値を返すメソッド 場所 単語 意味 例

    うまくメソッド名を付けるための参考情報 - Qiita
    kasumani
    kasumani 2016/05/17
    うまくメソッド名を付けるための参考情報 あるメソッドを定義しようとするとき、そのメソッドを使う人達が名前からどんなことをするか理解できるようにするには、メソッドの内容に応じて適切な情報量の命名が求めら
  • 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
    kasumani
    kasumani 2014/12/04
    Google Play Services の SDK がようやく分割されるのでワクワクしますね 元記事はこちら どうも、Android Advent Calendar に登録するのを忘れていて、折角の機会を棒に振った KeithYokoma で御座います。 元記事はもう先月の話ですのでご
  • 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
    kasumani
    kasumani 2014/10/25
    Fragments vs. CustomViews に一つの結論を出してみた Fragment には幾つかの知っておかないと困る、かつ毎回気にしないといけないハマりポイントが有ります。 これだけのハマりポイントがあるのは、それだけ Fragment が複雑な仕組
  • アプリがバージョンアップしたときの手続きをアノテーションを使って整理する - Qiita

    アプリのバージョンを上げた時、何かしら互換性を保つための作業が必要なことがあります。 たとえば、データベースのマイグレーションをしたり、その他永続化したデータを書き換えたり、など。時間のかかるものもあれば、かからないものもあります。 王道なやり方としては、Application#onCreate()でバージョンを覚えておいて、次にApplication#onCreate()に来た時に覚えておいたバージョンと PackageManager から取ってきたバージョン情報を突き合わせて、バージョンが変わっていたら、バージョンごとに必要な処理をする、と言った感じでしょうか。 public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); if (isVersionChange

    アプリがバージョンアップしたときの手続きをアノテーションを使って整理する - Qiita
    kasumani
    kasumani 2014/10/16
    アプリがバージョンアップしたときの手続きをアノテーションを使って整理する アプリのバージョンを上げた時、何かしら互換性を保つための作業が必要なことがあります。 たとえば、データベースのマイグレーションを
  • What's new in Gradle Plugin 0.13 - Qiita

    メモ書き Gradle 2.1 が必要になるので、${project_root}/gradle/wrapper/gradle-wrapper.propertiesを書き換えましょう(Gradle Plugin のバージョンをあげたら書き換えを促すプロンプトが出るはず)。 テスト用にAndroidManifest.xmlが、src/androidTest以下に配置できるようになりました。 ライブラリモジュールのAndroidManifest.xmlでプレースホルダが使えるようになりました。ライブラリモジュール内で解決されないプレースホルダは、それを使用するプロジェクト側で解決されます。 ProductFlavor や Build Type ごとにプレースホルダが設定できるようになりました。 Variant.getMappingFile()で、ProGuard の mapping.txt へア

    What's new in Gradle Plugin 0.13 - Qiita
    kasumani
    kasumani 2014/09/22
    What's new in Gradle Plugin 0.13 Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket September 22, 2014 at 12:20AM via IFTTT
  • 声に出して読みたい Android のライブラリ - その2 - Qiita

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

    声に出して読みたい Android のライブラリ - その2 - Qiita
    kasumani
    kasumani 2014/09/17
    声に出して読みたい Android のライブラリ - その2 声に出して読みたいObjective-Cのライブラリ8種(2014.7) に触発されて書いてみます。 Tags: from Pocket September 17, 2014 at 12:43PM via IFTTT
  • 声に出して読みたい Android のライブラリ - その1 - Qiita

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

    声に出して読みたい Android のライブラリ - その1 - Qiita
    kasumani
    kasumani 2014/09/17
    声に出して読みたい Android のライブラリ - その1 声に出して読みたいObjective-Cのライブラリ8種(2014.7) に触発されて書いてみます。 Tags: from Pocket September 17, 2014 at 12:42PM via IFTTT
  • 非同期処理でよく使う IntentService と AsyncTask は何が違って何が同じなのか - Qiita

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

    非同期処理でよく使う IntentService と AsyncTask は何が違って何が同じなのか - Qiita
    kasumani
    kasumani 2014/09/05
    非同期処理でよく使う IntentService と AsyncTask は何が違って何が同じなのか 非同期処理と言えば、IntentServiceとAsyncTaskのいずれかは使ったことがあると思います。UI スレッドとは別のところで非同期に何かする、という点では
  • authenticator.xml の accountType の文字列を strings.xml に入れてはいけない - Qiita

    authenticator.xml の account type について authenticator.xmlに、AccountManagerに登録されるアカウント認証にまつわるメタデータを記述しますよね。 このとき、android:accountTypeという文字列属性の値に、以下のように書いたことはありませんか? Build Variant ごとにリソースが別れてくれれば、リリース版とデバッグ版で Account Type が切り替わってくれるのでそれぞれにアカウントが分けられて便利!というノリで、このように書きたくなりますが、実は罠があります。 突然の bind failure デバッグをしていると、アプリを何度もインストールしなおしたりすることがあります。そんな時、アカウントの作成を実行していると、唐突に見慣れない例外が飛んでくることがあります。 android.accounts.

    authenticator.xml の accountType の文字列を strings.xml に入れてはいけない - Qiita
    kasumani
    kasumani 2014/08/21
    authenticator.xml の accountType の文字列を strings.xml に入れてはいけない authenticator.xmlに、AccountManagerに登録されるアカウント認証にまつわるメタデータを記述しますよね。 このとき、android:accountTypeという文字列属性の値に、以下
  • Android に学ぶ SQL Injection - Qiita

    Android のデータベースといえば、SQLite ですが、大抵の場合、ContentProvider によって CRUD がラップされ、ContentResolver 経由でデータソースにアクセスすることになります。 この設計によって、モデル内のデータソースが何であれ、CRUD のインタフェースが統合されるので、データソースのレイヤがどうなっているかをデータ利用者側が意識する必要がないようになっています。 が、そのインタフェースはシンプル故に、凝ったことをしようとすると、ContentProvider が頑張るか、利用者が頑張るかしないといけなくなります。 特に、データソースが SQLite の場合、SQL なら便利に出来ていたことが途端に難しくなります。例えば、行データの重複を消したり、グループ化したり、など。 Cursor からデータを取り出して、自分たちで同じような機能を実現する

    Android に学ぶ SQL Injection - Qiita
    kasumani
    kasumani 2014/08/21
    Android に学ぶ SQL Injection Android のデータベースといえば、SQLite ですが、大抵の場合、ContentProvider によって CRUD がラップされ、ContentResolver 経由でデータソースにアクセスすることになります。 この設計によって、モデル内の
  • Tips: Android のコードスタイルのハンガリアン記法について - Qiita

    Android Open Source Project のコーディングガイドライン には、いくつかのハンガリアン記法があります。 publicでなく、かつstaticでないフィールドにはmを、static なフィールドにはsをつけるのが Android 流のハンガリアン記法のようです。 が、そもそも Java を使って、かつ IDE を使っている時点で、ハンガリアン記法を取り入れるメリットはそんなに無いように思われます。 このあたりは、Twitter での Jake Wharton と Romain Guy のやりとりの中でその経緯が語られています。 このやりとりを要約すると、以下のような内容です。 Jake Wharton: AndroidJava にハンガリアン記法を使うことにしたやつ謝れ。 Romain Guy: 激しく同意。C++やってる人とか Vimmer に Java

    Tips: Android のコードスタイルのハンガリアン記法について - Qiita
    kasumani
    kasumani 2014/08/08
    Tips: Android のコードスタイルのハンガリアン記法について Android Open Source Project のコーディングガイドライン には、いくつかのハンガリアン記法があります。 Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket August 08, 2014 at
  • Google Play Services 5.0.77 が光の彼方へ消し去られた件 - Qiita

    やつを追う前に言っておくッ! おれは今やつのアップデートをほんのちょっぴりだが体験した い…いや…体験したというよりはまったく理解を超えていたのだが…… ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ|          あ…ありのまま 今 起こった事を話すぜ! |i i|    }! }} //| |l、{   j} /,,ィ//|       『おれは奴のアップデートでライブラリを入れていたと i|:!ヾ、_ノ/ u {:}//ヘ        思ったらいつのまにか無くなっていた』 |リ u' }  ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人        な… 何を言ってるのか わからねーと思うが /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をされたのかわからなかった… ,゙  / )ヽ iLレ  u' | | ヾl

    Google Play Services 5.0.77 が光の彼方へ消し去られた件 - Qiita
    kasumani
    kasumani 2014/08/06
    Google Play Services 5.0.77 が光の彼方へ消し去られた件                             やつを追う前に言っておくッ!                     おれは今やつのアップデートをほ
  • Gradle でビルド中、ProGuard がヒープ不足で落ちるときの対処法 - Qiita

    現象 それなりに大きなモジュールだったり、モジュールが参照するモジュールがたくさんあったりすると、ProGuard が頑張らないといけないことが多くなるので、その分 Java のヒープをいます。 そうすると、いつかヒープが足らなくなり、以下のようにエラーを吐いてビルドがコケるようになります。 :MyApplication:proguardProductionRelease Note: there were 979 duplicate class definitions. :MyApplication:proguardProductionRelease FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':NohanaPhotoBook:proguardP

    Gradle でビルド中、ProGuard がヒープ不足で落ちるときの対処法 - Qiita
    kasumani
    kasumani 2014/05/07
    Gradle でビルド中、ProGuard がヒープ不足で落ちるときの対処法 それなりに大きなモジュールだったり、モジュールが参照するモジュールがたくさんあったりすると、ProGuard が頑張らないといけないことが多くなるので、その
  • 今さら聞けない Activity と Fragment の使い分け - Qiita

    Honeycomb から登場した Fragment によって、すべてのコントローラロジックが Activity に集約されてしまう呪縛から解き放たれ、人類は平和を取り戻しました。Fragment はまた、Support Library のメンバとして、Gingerbread 以前の過去世に積み上げた罪業をも消し去ろうとしています。 そんな Fragment ですが、いまいち使い方が分からない、という声も時折耳にします。稿では、Android アプリケーションの開発を始めて Activity と Fragment について学び、その両者の住み分けに悩んでいる方向けに、効果的な Fragment の作り方を紹介しようと思います。 Fragment がなかった暗黒の時代 Fragment がなかった時代、人類はどのようにして Android アプリケーションを作っていたのでしょうか。 タブを使

    今さら聞けない Activity と Fragment の使い分け - Qiita
    kasumani
    kasumani 2014/05/01
    今さら聞けない Activity と Fragment の使い分け Honeycomb から登場した Fragment によって、すべてのコントローラロジックが Activity に集約されてしまう呪縛から解き放たれ、人類は平和を取り戻しました。Fragment はまた、Support Libr
  • Android のテストで設計をイイカンジにしよう - Qiita

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

    Android のテストで設計をイイカンジにしよう - Qiita
    kasumani
    kasumani 2014/04/28
    Android のテストで設計をイイカンジにしよう Android フレームワークは、あまり強力とはいえないものの、ある程度のテストフレームワークを内包しています。 ベースが JUnit3 なので、記法が古かったりすることもありますが
  • HttpUrlConnection とエラーハンドリング - Qiita

    HttpUrlConnection の概要 ストリームを用いた汎用の Network I/O のためのインタフェースとして、URLConnectionがあり、このうち HTTP に基づいたものがHttpUrlConnectionです。さらにこの子クラスとして、HttpsUrlConnectionもあります。 Input URLConnection#getInputStream()で得られるInputStreamを読み取ることで、レスポンスのデータを取得します。 Output URLConnection#getOutputStream()で得られるOutputStreamにデータを書き出すことで、リクエストを作成します。 OutputStreamをclose()するまでリクエストは送られません。 Error サーバから、4xxや5xxなどのエラーレスポンスが返されると、FileNotFoun

    HttpUrlConnection とエラーハンドリング - Qiita
    kasumani
    kasumani 2014/04/25
    Android でHTTP通信(ダウンロードとか)させる実装をする前に理解しておくこと 我らが @KeithYokoma が素敵な記事「Java - HttpUrlConnection とエラーハンドリング - Qiita - 」を書いていたので、初心者向けに書きます。 Tags: ifttt, kasuman
  • ActionBar を持たないテーマを設定した Activity でやっておかないと悲しいクラッシュに遭遇した話 - Qiita

    テーマとして、android:windowNoTitle="true"を設定することで、ActionBar を表示させないようにすることができます。 こうすると、ActionBar を持たない Activity が出来上がるため、Activity#getActionBar()やActivity#getSupportActionBar()はnullを返すようになります。 この場合、以下の点について気をつけていないと、見に覚えのないクラッシュログに苛まれることになります。 メニューキーを無効化する メニューキーは、すなわち ActionItem の OverFlow の中身を呼び出す機能として使われます。 つまり、ActionBar の機能を使おうとします。 しかし、android:windowNoTitle="true"なテーマの Activity では、ActionBar そのものが生成さ

    ActionBar を持たないテーマを設定した Activity でやっておかないと悲しいクラッシュに遭遇した話 - Qiita
    kasumani
    kasumani 2014/04/23
    ActionBar を持たないテーマを設定した Activity でやっておかないと悲しいクラッシュに遭遇した話 テーマとして、android:windowNoTitle=&quot;true&quot;を設定することで、ActionBar を表示させないようにすることができます。 Tags: ifttt, k
  • SharedPreferences のモックを作る、たった一つの冴えたやり方 - Qiita

    SharedPreferencesを使った、カンタンな KVS をデータソースに持つモデルを作った時、そのモデルをテストしようとすると、どうしても SharedPreferencesをモックしたくなります。 SharedPreferencesは、その取得方法によって、2 種類のものが存在します。 1 つは、Context#getSharedPreferences(String, int)で、自分で好きに名前を決めたSharedPreferences。もう一つは、PreferenceManager#getDefaultSharedPreferences(Context)で、システムによって生成されたSharedPreferencesです。 SharedPreferencesそのものはインタフェースですので、SharedPreferencesのインスタンスをモックするのであれば、以下のようにモ

    SharedPreferences のモックを作る、たった一つの冴えたやり方 - Qiita
    kasumani
    kasumani 2014/04/15
    SharedPreferences のモックを作る、たった一つの冴えたやり方 SharedPreferencesを使った、カンタンな KVS をデータソースに持つモデルを作った時、そのモデルをテストしようとすると、どうしても SharedPreferencesをモックしたくなり
  • FragmentManager#executePendingTransactions() が怖くて使えないあなたへ - Qiita

    Fragmentを取り扱っていると必ず出てくるのが、FragmentManagerとFragmentTransactionです。 FragmentManagerは、1 個のActivityにつき 1 個のFragmentManagerが居て、Activityのライフサイクルの巡りが尽きて死ぬまでの間、そのActivityでのFragmentのライフサイクル管理をしてくれます。 Fragmentの取り扱い方としては、レイアウトに埋め込んで静的に動作させるやり方と、Activityが動的にFragmentのインスタンスを生成してレイアウトにアタッチするやり方があり、特に後者の動的にアタッチするやり方を採用した時に、FragmentTransactionを用いてFragmentのレイアウトに対する各種の操作を実行します。 さて、FragmentTransactionを使って動的にアタッチしようと

    FragmentManager#executePendingTransactions() が怖くて使えないあなたへ - Qiita
    kasumani
    kasumani 2014/04/03
    FragmentManager#executePendingTransactions() が怖くて使えないあなたへ FragmentManagerは、1 個のActivityにつき 1 個のFragmentManagerが居て、Activityのライフサイクルの巡りが尽きて死ぬまでの間、そのActivityでのFragmentのライフサイクル管理を