2015/04/25(Sat)に開催された DroidKaigi(http://droidkaigi.github.io)での発表資料です。

Androidアプリの初期データとして、Key-Value型で値を持ちたいというのはよくある事だと思います。 単純な文字列や配列であればContext#getStringやResources#getStringArrayなどで取得すれば良い話ですが、Key-Value形式は中々良いやり方がなく以下の様にシングルトンなMapを作ってメモリに展開している実装をよく見ます。 public final class DatatMap { private DataMap() { } public static final Map<String, Integer> ICON_MAP = new HashMap<String, Integer>() { { put("100", R.drawable.icon_100); put("200", R.drawable.icon_200); put("300"
買物情報事業部の八木(@sys1yagi)です。 Android界隈でRxJavaが話題になっていますね。クックパッドアプリ(以後、「本体」と表現します)でも先日ついにRxJavaの導入を果たしました。本エントリではRxJavaをチームに導入する為に行ったいくつかの取り組みを紹介します。 目次 RxJava導入の失敗 どのような課題を解決するのか 導入の為に機能を分解し、学習コストを考える ブログを書く 低コスト、低リスクに導入する 勉強会を開く RxJava導入の失敗 2014年11月にRxJavaの1.0.0がリリースされました。遂に実用段階かという事で個人的にあれこれ触り、本体に導入する機会を伺っていました。ある日、bug fixの為にRxJavaを使うと簡潔になるのではないかと思い気軽にPull Request(以後、PRとします)を送った所、「このタイミングで急に導入する意図はな
会員事業部の山下(@tomorrowkey)です。 RxJavaが流行ってますね。最近Android版クックパッドでもRxJavaが導入されました。この記事は私がRxJavaを使うにあたって検証用のテストコードを書いたものをベースに、RxJavaの挙動をみなさんに紹介したいと思います。 目次 リスト操作でおさらいする基本的なRxJavaの使い方 Observable Operator Observer / Subscribe 実行順序を確認するサンプルプログラム 7つのサンプルプログラム リスト操作でおさらいする基本的なRxJavaの使い方 RxJavaはAPIアクセスやイベントトリガーやリスト処理などを多岐にわたる処理に使うことができます。このエントリでは初学者に一番分かりやすいリストの処理を例に解説します。 これは1から10までの値を渡し、偶数だけにフィルタリングしたうえ、値を10倍に
この時点でブラウザから[IPアドレス]:8080でJenkinsにアクセスできるようになる。 また、macのローカルにJenkinsを立ち上げる場合は$brew install jenkinsでインストール後、ブラウザからlocalhost:8080にアクセスすればよい。 Jenkinsの初期設定 インストール後、まずは唯一のadminアカウントを設定し、また、自由にアカウントを作成することを禁止する。ここの設定は任意で。 ログイン認証の追加 Jenkinsの管理 > グローバルセキュリティの設定 セキュリティを有効化 にチェック アクセス制御 > ユーザー情報 > Jenkins のユーザーデータベース > ユーザーにサインアップを許可 にチェック アクセス制御 > 権限管理 > ログイン済みユーザーに許可 にチェック 保存 ユーザ作成 アカウント登録 > サインアップ ユーザー名、パス
こんにちは、投稿推進部の吉田(@101kaz)です。Androidアプリの投稿周りの開発を担当しています。 去年クックパッドに入社したことをきっかけに、本格的にAndroid開発をするようになりました。 今回は私のような開発をはじめて日が浅い人が見落としがちな「非同期処理時のNPE(NullPointerException)」と「Activity破棄に関する問題」と「ProGuardの設定忘れ」について実際の遭遇した事例をベースに紹介します。 非同期処理コールバック時のNPE ある時Fragmentから非同期処理を行い、コールバック内でFragmentの内のviewにアクセスするコードを書きました。 @Override public void onActivityCreated(Bundle savedInstanceState) { ApiClient.getRecipes(new Ap
基本の割に初心者にとって使うのにハードルが高いview、ListView。 ネット調べると色んなパターンで書かれた例が出てくると思います。 何も知らずにAndroid 1.6とかの時代に書かれたような出どころが不明なサンプルコードをコピペしてうまくいかなくて心が折れるみたいなことを防ぐために、インターネットに出回っているサンプルコードをパターン化して列挙しました。パターン1が一番良くなくて、パターン3あるいはパターン4にするといいと思います。 インターネットで調べててAndroid 1.6とか2系の葬式UIが出てきたら、それは昔に書かれたものでそっと閉じたほうがいいです。 Adapterとは AdapterはviewとDataSourceの橋渡しをするものです。 private void setupListView(List<User> userList) { UserAdapter ad
KubeCon + CloudNativeCon Europe 2025 Recap: The GPUs on the Bus Go 'Round and 'Round / Kubernetes Meetup Tokyo #70
Dependency injection is a software design pattern focused on making our applications loosely coupled, extensible, and maintainable. In this tutorial, you will learn how to handle dependency injection using Dagger 2. Introduction When you have an object that needs or depends on another object to do its work, you have a dependency. Dependencies can be solved by letting the dependent object create th
いや、ネタとかじゃないんで。 AndroidJavaそろそろ限界問題 以前の記事にも書いたけど、最近の関数型プログラミングやRxJavaなどの流れの中で、ラムダも書けない言語では限界を感じ、何かAndroid開発を救ってくれる魔法のアイテムを探す必要に迫られていました。 そして行き着いたのがKotlinでした。 Kotlinとは Kotlinはプログラミング言語です。 JVM言語で、いわゆるaltJavaの一つです。 開発したのはAndroid StudioのベースとなっているIntelliJを開発しているJetBrains社で、2011年に生まれたばかりのとても幼い子です。 特徴は型推論、null安全、高階関数、可愛い名前などで、Javaより書きやすく関数的で、尚且つScalaほど複雑にはならない事を目指しているようです。 最近ではSwiftに似ていると言われるようです。 なぜKotli
※本記事は、長岡IT開発者勉強会#40 初心者Dayで話す内容のドラフトとして書かれたものです。 ※本記事は、2015年2月時点での技術に関する時事ネタを多分に含んでいます。ご留意ください。 2/26 この記事のメイキング記事を書きました。 はじめに Androidが世に出た2008年秋からもうすぐ7年が経とうとしています。日本で初めてのAndroidスマートフォンであるHT-03Aがドコモから発売された2009年夏からは、もうすぐ6年です。「ツートップ戦略」が記憶に新しいXperiaやGalaxy Sシリーズが出始めたのは2010年ですから、そこからも5年は経とうとしています。 十年一昔、という言葉がありますが、Web方面に関わっていると三年一昔という言葉が脳裏をよぎることすらあります。7年足らずの歴史しか持たないAndroidにとっても、3年という時間は半生と呼ぶに差し支えないものでし
新規広告開発部の松本です。 クックパッドiOS/Androidアプリの広告の開発に携わっています。 Androidアプリ開発の際、皆さんはnullをどのように扱っていますか?また、nullチェックを行うのであれば、どのような基準で行っていますか?私自身まだまだAndroid開発歴が浅いため、特に何か基準がある訳でもなく至る所でif (foo != null)といったnullチェックを行おうとしていました。 これに対し、先日の社内コードレビューでとてもためになるアドバイスをもらいました。私のようなAndroid初心者にとってnullに対する考え方の基礎を作ってくれるレビューだったので、本稿で共有したいと思います。 また、AndroidやJava開発に慣れた方にとっては「今更そんな話か」といった内容かと思いますが、クックパッドでのレビューの一例としてご覧いただければ幸いです。 やりがちなnul
RxAndroidは、RxJavaを内包しAndroidで利用するための機能を追加したものです。 RxJavaの概要と基本的な使い方については過去の記事で紹介しています。 過去記事内で「実際のAndroidアプリでのユーケースに合わせた例も書いてみたいと思います」とか書いてそのまま3ヶ月以上放置してしまいました。 RxJavaは非常に多機能かつFRPという新しい概念に基いて設計されており、使いこなすには相当に学習コストが掛かるため、利用するにはハードルが高いイメージなのではないでしょうか。 しかし、そこまでRxJavaを深く理解し様々な関数を活用しなくても、RxAndroidは結構気軽に利用出来るのではないかなという気がしてきたので、RxAndroidの活用ケースを考えてみようと思います。 AsyncTaskなどの代わりに非同期コールバック処理に利用する RxAndroidを使えば、非同期
JavaのライブラリをC/C++から呼ぶ方法のメモ. フルのソースコートはこちら 参考にしたページ: シンプルな C言語からJava言語を呼び出すJNIサンプル ここでは以下のようなJavaのクラスをC++から利用することを想定する. package my.hoge; public class Hoge { public Hoge() { } public void printHoge(){ System.out.println("Hoge!"); } public String getHoge(){ return new String("Hoge"); } public int add(int i, int j) { return i + j; } public String getMsg(String msg){ return new String("Hoget is " + msg)
ぐはああ、 /com/android/sdklib/ISdkLog=コマンドプロンプトでeclipse -clean (立場が変わっても…) ぐはああ、 /com/android/sdklib/ISdkLog=コマンドプロンプトでeclipse -clean (立場が変わっても…) ◎聖闘士星矢Ω第1話星矢が救った命!甦れ聖闘... (ぺろぺろキャンディー) 静岡:淡島リゾートとシダックスと”てんかん発作”の彼女 (脳挫傷による見えない障害と闘いながら) 複数のボタンの動作を設定する (初心者の初心者のためのAndroidアプリ開発!) オープンソースナレッジベース : Opensource Knowlege Base (オープンソースナレッジベース : Opensource Knowlege Base) 川崎:相変わらずの“勝負弱さ”/磐田戦から (サッカーはエンターテインメントだ!)
RxJavaのモチベーション HTTPクライアントは今ならOkHttp一択なのですが、APIクライアントには非同期に通信をおこなってほしいものですが、非同期処理をおこなうAndroidフレームワークのAsyncTaskやAsyncTaskLoaderは正直使いやすいとは言えません。Volleyは設計は綺麗で拡張もしやすかったのですが、Googleとしての立ち位置がよく分からなかったので OkHttp + 非同期処理を担う何か を探していました。 それでPromiseライクなBoltsと迷ったのですが、個人的な好みでRxJavaを採用してみました。 APIクライアントの設計 以前書いたもの の参考実装としてライブラリを書いてみました。 Octodroid リソースへのアクセスの仕方は以下のようになっています。 // GET /users/rejasupotaro GitHub.client(
※追記 これでいけました!minLinesというのがあったとは。RxAndroidなんかいらんかったんや! @sys1yagi これって、 android:inputType="textMultiLine" android:layout_height="wrap_content" android:minLines="5" でできるような気がします、が、違います…?— yuki fujisaki / tnj (@tnj) 2015, 1月 12 問題 EditTextで初期の高さをセットしつつ、初期の高さを超える行数になったらそれに追従してEditTextの高さを変えたいがlayoutの設定だけでは出来ない。 以下の例だと初期の高さをセット出来るが、行数を越えても追従して大きくならない。かと言ってlinesを指定しないと初期の高さが1行になる。layout_heightを指定する方法も同様。
この記事はこちらで紹介されているiOS版SRGEventDateRecorderのAndroid版となります。 アプリを作っていると、特定のイベントの回数や実行時間に依存した処理を書くことが必要な場面が多々あります。 例えば以下の様な処理です。 ある機能を利用する際、初回時のみガイダンスを表示 ある機能を利用する際、最初の3回のみ使い方の説明を表示 広告POPUPを1時間に1回のみ表示 起動後にキャンペーンのお知らせを1日に1回だけ表示させたい これらはイベントの回数や時刻を永続化するだけで簡単に書ける処理ではありますが、毎回同様の処理を書くのは手間でもあります。 そこで、このような用途のためにイベントの回数と時刻を永続化しておくだけのライブラリを書きました。 EventDateRecorder 導入してみる build.gradleに以下の行を追加してGradle syncします。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く