ブックマーク / qiita.com (212)

  • AACのRoomでLiveDataなどがどうやって変更を流しているのか - Qiita

    AACのRoomでLiveDataなどでどうやって変更を流しているのか読んでみてちょっと面白かったので、書いておきます。 読んだだけなので間違っていたら教えてください。 テーブルごとの変更のバージョン管理 メモリ内にデータのバージョンを管理するテーブルがある カラムはversionIdとtableId。versionIdはPRIMARY KEYでAUTO INCREMENTになっている。 private static final String CREATE_VERSION_TABLE_SQL = "CREATE TEMP TABLE " + UPDATE_TABLE_NAME + "(" + VERSION_COLUMN_NAME + " INTEGER PRIMARY KEY AUTOINCREMENT, " + TABLE_ID_COLUMN_NAME + " INTEGER)"; S

    AACのRoomでLiveDataなどがどうやって変更を流しているのか - Qiita
    jakalada
    jakalada 2018/08/19
  • Architecture Components を Dagger2 と併用する際の ViewModelProvider.Factory について - Qiita

    implementation "android.arch.lifecycle:runtime:1.0.3" implementation "android.arch.lifecycle:extensions:1.0.0" kapt "android.arch.lifecycle:compiler:1.0.0" 参考リポジトリ https://github.com/googlesamples/android-architecture-components/tree/master/GithubBrowserSample GoogleによるDagger2を使ったサンプル(Java)、すべての参考元 https://github.com/googlesamples/android-architecture/tree/todo-mvvm-live Dagger2を使わずにViewModelProvi

    Architecture Components を Dagger2 と併用する際の ViewModelProvider.Factory について - Qiita
    jakalada
    jakalada 2018/08/18
  • Kotlin + Architecture Component + Dagger2によるAndroidアプリ設計 - Qiita

    はじめに Google I/O 2017でKotlinAndroidアプリ開発における公式言語としてサポートされることになりました。 また、同時にAndroid Architecture ComponentsがAndroidのライフサイクルにおける画面回転などへの対応を容易にするライブラリとして追加され、このライブラリを用いたAndroidアプリ開発におけるおすすめの設計が提案されています。 以下のGoogleのSampleリポジトリにはその設計指針を用いたサンプルが公開されています。 記事では上記のリポジトリを参考にしながら、KotlinとArchitecture Components、そしてDagger2を用いた設計を備忘録的にまとめました。 また、現在進行系で開発しているので、何か間違っている点やご意見等あればぜひ、コメントやTwitterなどでお願いします。 Sample 記事

    Kotlin + Architecture Component + Dagger2によるAndroidアプリ設計 - Qiita
    jakalada
    jakalada 2018/08/18
  • RecyclerViewでDrag Drop & Swipe to Dismissを実装する - Qiita

    protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLayoutManager = new LinearLayoutManager(this); mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); mRecyclerView.setLayoutManager(mLayoutManager); mHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() { @Override public int getMovementFlags(RecyclerV

    RecyclerViewでDrag Drop & Swipe to Dismissを実装する - Qiita
    jakalada
    jakalada 2018/08/17
  • ViewPagerに切り替えのアニメーションを付ける - Qiita

    今回はViewPagerに切り替えのアニメーションを付けるサンプルを作ってみました。 ViewPagerリファレンス アニメーションを付けるにあたり、 Using ViewPager for Screen Slides のサンプルを参考に作成してみました。 public class ScreenSlideActivity extends FragmentActivity { private static final int NUM_PAGES = 5; private ViewPager mPager; private PagerAdapter mPagerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContent

    ViewPagerに切り替えのアニメーションを付ける - Qiita
    jakalada
    jakalada 2018/08/17
  • Kotlin x Daggerで具象クラスのInjectionを防止する - Qiita

    はじめに Androidのレイヤードアーキテクチャにおいて、各層の依存方向を強制させるためにモジュールを分割するのはよく採用される手法です。

    Kotlin x Daggerで具象クラスのInjectionを防止する - Qiita
    jakalada
    jakalada 2018/08/16
  • Dagger2のscopeの使い方を正しく理解する - Qiita

    このpostについて Dagger2には @Singleton を始めとした "scope" というものがあります 下記に1つでも該当する人 (= この前までの自分) は読んでもらえると良いかもです - Dagger2はActivity lifecycleを克服するために有用な手段だと思ってる - @Singleton は、いわゆる getInstance() を用いたstaticなシングルトンを実現するためのアノテーションだと思ってる - Daggerのscopeは、インスタンスのlifecycleをよしなにゴニョゴニョしてくれるmagicであると思ってる Scopeって何なんだろう 例を交えて考えてみます MyViewModel というクラスのinstanceをinjectionするケースを考えます "injectする度にinstanceを生成したくない & 一度作ったものを使いまわし

    Dagger2のscopeの使い方を正しく理解する - Qiita
    jakalada
    jakalada 2018/08/16
  • プログラマが知っているとよい色(1)使い(JIS安全色) - Qiita

    <この項は書きかけです。順次追記します。> This section is about to be written. I will add it little by little. 目次の前に(forward) この記事は、インターンシップの大学生の方に、「ゲームはするよりもゲームプログラムを書く方が楽しい」ということを説明した際に、その説明の一部として書いたものです。ゲームを卒業研究の題材にするなら、ゲームの中での色使いで、人による見え方の違いに配慮した改訂のあったJIS安全色(国際整合:ISO 3864-4:2011(Graphical symbols−Safety colours and safety signs−Part 4: Colorimetric and photometric properties of safety sign materials))を参考にするとよいよとい

    プログラマが知っているとよい色(1)使い(JIS安全色) - Qiita
    jakalada
    jakalada 2018/08/16
  • Dagger2の公式ドキュメントを読んで基礎を理解してみる - Qiita

    きっかけ Dagger2はAndroid Developersの Guide to App Architecture でも紹介されており そろそろAndroidエンジニアでDagger2やDIがわからないのはまずそうな気がしてきたので、調べてみました。 よく分からないところは対応する【補足メモ】を読んでみてください。ソースコードを載せているので、イメージしやすいかもしれません。 最近アップデートがあったAndroidとの関連(dagger.android)までは今回は触れることができていません。 Dagger初心者の自分が驚いたところを太字にしておきます。 ほぼ以下のドキュメントの意訳です。間違っているところはご指摘下さい。 User's Guide https://google.github.io/dagger/users-guide.html User's Guide Dagger2概

    Dagger2の公式ドキュメントを読んで基礎を理解してみる - Qiita
    jakalada
    jakalada 2018/08/16
  • Androidアプリをリリースしたので設計についてまとめてみる(クリーンアーキテクチャ) - Qiita

    アプリについて リリースしたアプリはこちらです。 https://play.google.com/store/apps/details?id=com.teach_timetable_appppppp.www.teachtimetable ソースコードはこちら https://github.com/fungiy/TeachTimeTable 学校の先生向けの時間割アプリ。 言語はKotlinです。 作ってる途中に考えたことなんかをコードを交えながら解説してみます。 間違った記述があればご指摘ください。 また、ここはこうしたほうがいいみたいなご指摘も大歓迎です。 (プルリクもお待ちしてます) クリーンアーキテクチャは以下の図が有名だと思います。 クリーンアーキテクチャでは、ビジネスロジック(ドメイン層)を中心に置き、データベース・ネットワークアクセスなどのインフラ層と、UI層を外側として扱いま

    Androidアプリをリリースしたので設計についてまとめてみる(クリーンアーキテクチャ) - Qiita
    jakalada
    jakalada 2018/08/15
  • 非同期や並列処理にも役立つRxJavaの使い方 - Qiita

    なぜRxJava? RxJavaは様々な特性を併せ持ったライブラリですが、簡単にまとめると以下のような機能に分類されます。 List処理の抽象化・ストリーム化 Optional Future/Promise Data Binding Event Bus Android開発でRxJavaをチームに導入した話 Java 8ではStream APIやOptionalが導入されていますが、Androidや業務要件などそのAPIを使えない環境も存在します。 また、非同期や並列などそもそもJavaで扱いにくい処理を、統一されたインターフェイスで簡潔に記述できるなどのメリットも多く、その基的な機能を試してみたので紹介します。 なお、ここに記載する内容はRxJavaの使い方が中心で、RxJava自体の概念やFRPなどについては、他にも多くの方々紹介してくださっていますので、そちらをご覧いただければと思い

    非同期や並列処理にも役立つRxJavaの使い方 - Qiita
    jakalada
    jakalada 2018/08/14
  • Kotlinと相性が良いMoshiのkotlin extensionを使う - Qiita

    TL;DR Moshiのkotlin extensionであるKotlinJsonAdapterを使うと、 kotlinの機能であるnon-nullや、default値を考慮したJSONパースを行ってくれます。 GsonとKotlinの相性が良くない 私は普段、JSONパーサーにGsonを使っています。 Gsonに強いこだわりはありませんが、Androidでは広く使われており、ネット上に情報が豊富にあるのが使用の主な理由です。 しかし、JSONのパースした結果をKotlinのclassに入れる時に、Gsonだと都合が悪いことがわかりました。 よくない理由 Kotlinでは、propertyを宣言する時に特に何も指定しなければnon-nullになります。 non-nullなpropertyにnullを渡した場合は例外がthrowされ、classが不正な状態になることを自動で防いでくれます。

    Kotlinと相性が良いMoshiのkotlin extensionを使う - Qiita
    jakalada
    jakalada 2018/08/13
  • Git作業スタイル: リモートレポジトリに保存しつつキリのいいところで変更をまとめる - Qiita

    あらまし 大きな作業をする場合、こまめにローカルレポジトリのブランチにコミットして、何かあったときにすぐに戻せるようにしたくなります。 また、パフォーマンス改善など、実験や研究の色合いの強い作業は、試行錯誤しながらブランチに"とりあえず"保存しつつ、「あっちのほうが良かったかな〜」と思ったときに取り出せるようにしておきたくなるものです。 また、ローカルレポジトリだけでなく、リモートレポジトリに置いたほうがチームみんなで共有できたりしていろいろ便利です。 ですが、最終成果物はなるべく少ないコミットにしないと、マージが大変です。 メインブランチにこんなコミットが入るとゲンナリしますよね? $ git log --oneline bcdef12 Revert foo abcdef0 Add foo cdef123 Refactor bar again def1234 Refactor bar e

    Git作業スタイル: リモートレポジトリに保存しつつキリのいいところで変更をまとめる - Qiita
    jakalada
    jakalada 2018/08/12
  • ぼくたちのかんがえたさいきょうのi18n国家

    記事は下記のtweetから始まるスレッドに触発され、@qnighyや@na4zagin3からアイディアを拝借して書いた。 i18n力が最強の国は国内に複数の言語があり、そのうちいくつかは他国でも使われている言語の方言で、1バイト文字での代替表記が困難で、歴史的にISO-2022ベースの文字コードとUnicodeと独自エンコーディングが混在していて、フリガナなどの特殊な組版規則があり、右書き左書き縦書きを併用し、 — Masaki Hara (@qnighy) 2018年8月6日 皆さんのおかげで最強のi18n国家が建設されつつある。一瞬で滅びそう — Masaki Hara (@qnighy) 2018年8月6日 長い前置き ソフトウェアのi18nは難しい。自文化では当たり前と思っていてハードコードしてしまった仮定が崩れて、大幅な再設計を余儀なくされるからだ。気づいて再設計できればまだ良

    ぼくたちのかんがえたさいきょうのi18n国家
    jakalada
    jakalada 2018/08/07
  • Androidの開発でkotlin-stdlib, kotlin-stdlib-jre7, kotlin-stdlib-jdk7, kotlin-stdlib-jdk8どれ使えばいいの問題 - Qiita

    stdlibとstdlib-jdk7とstdlib-jdk8の違い それぞれstdlibをベースに入っている拡張関数が違います。 例えばstdlib-jdk7はJava7のAutoClosableクラスに対するuseメソッドが入っていたり、Java8のstdlib-jdk8ではStreamを返すような拡張関数が入っています。 stdlib-jdk7がなぜ21以上? stdlib-jdk7はほぼAutoClosableクラスに対するメソッドしか入っておらずAutoClosableクラスはSdk Versionが19なので、Sdk Versionが19であれば現状stdlib-jdk7にしちゃっても問題ありません。 しかし例えばJava7のForkJoinPoolクラスなどはSdk Version21で追加されています。そのためそれを返すような拡張関数がバージョンアップで入った場合にクラッシュ

    Androidの開発でkotlin-stdlib, kotlin-stdlib-jre7, kotlin-stdlib-jdk7, kotlin-stdlib-jdk8どれ使えばいいの問題 - Qiita
    jakalada
    jakalada 2018/08/02
  • SwaggerでRESTful APIの管理を楽にする - Qiita

    背景 最近は変化し続ける要件に対応するために、システムも柔軟であることが求められています。 そのため、部分的に変更やスケールの可能なシステムを構築し、API経由で連携するマイクロサービス的アーキテクチャが増えてきています。 そういった設計の中で問題になっていくのが、従来のモノリシックなアプリケーションではIDEやコンパイラなどで行っていた、機能間のインターフェイスをどう管理するかという部分です。 Swaggerとは? SwaggerとはRESTful APIのドキュメントや、サーバ、クライアントコード、エディタ、またそれらを扱うための仕様などを提供するフレームワークです。 公式サイトでは、The World's Most Popular Framework for APIsと謳っています。 その理由は、マイクロソフト、Google、IBM、SmartBearなどを大手の企業を含む「Open

    SwaggerでRESTful APIの管理を楽にする - Qiita
    jakalada
    jakalada 2018/07/31
  • Swift API デザインガイドライン - Qiita

    今更ではありますが、SwiftAPI Design Guidelinesを訳してみました。 基 利用者にとっての明確さがもっとも重要な目標です。メソッドやプロパティを宣言するのは一度だけですが、繰り返し 使われます。API を利用するコードが明確で簡潔になるように API を設計しましょう。設計を評価するには宣言を読むだけでは不十分です。API が明瞭なものであることを確かめるため常に利用例を書いてみて検証しましょう。 簡潔さより明確さが重要です。Swift のコードはコンパクトに書くことができますが、出来る限り少ない文字数で出来る限り短いコードを書けるようにすることが 目標ではありません。Swiftにおける簡潔さとは強い型システムとボイラープレートを自然と減らす言語機能の副作用としてもたらされるものです。 全ての宣言にドキュメンテーションコメントを書きましょう。ドキュメントを書く

    Swift API デザインガイドライン - Qiita
    jakalada
    jakalada 2018/07/23
  • SweetBlueのAndroid BLE Issues 日本語訳 - Qiita

    はじめに Android BLE用のライブラリであるSweetBlueが公開しているAndroid BLE Issuesという文書を日語に訳しました。 この文書にはAndroidBLE開発での注意点、機種固有問題等が記載されています。 AndroidBLEアプリ開発の際に参考にして頂ければ幸いです。 ※翻訳に際して、SweetBlueの開発元であるiDevices社から許可を得ています。 SweetBlueの紹介 AndroidBLEは機種依存問題やAndroid自身(チップやプロトコル・スタック等)に起因すると思われる様々な問題があります。 SweetBlueはそんなAndroid BLEの辛いところを良い感じに吸収してくれるプロプライエタリなライブラリです。 SweetBlueの紹介ページ 翻訳元のページについて SweetBlueのGithubのWikiに掲載されている以下の

    SweetBlueのAndroid BLE Issues 日本語訳 - Qiita
    jakalada
    jakalada 2018/07/21
  • FragmentでKotlinのby lazyを使ってfindViewByIdするとレイアウト反映できない&リークする件 - Qiita

    何が起きる? ちょっと昔のネタなのですが、時々忘れて使いそうになるので、簡単にメモしておきます。 Kotlinではviewへのアクセス時にfindViewByIdしてくれるように、こんな感じで遅延初期化して利用することができます。 private val toolbar by lazy { view!!.findViewById<Toolbar>(R.id.toolbar) } ただlazyを使うと一度取得したものをメンバ変数として保持し、次に利用するときも同じインスタンスを返します。 ここでFragmentのライフサイクルを思い出すと、以下のようにバックスタックから返ってきた時に、onCreateView()がまた呼ばれます。 onCreateViewでレイアウトを新しく作って返すと、、メンバ変数で持っているViewは前に作ったレイアウトなので、リークします。また、textView.te

    FragmentでKotlinのby lazyを使ってfindViewByIdするとレイアウト反映できない&リークする件 - Qiita
    jakalada
    jakalada 2018/07/20
  • タスク管理ツール WunderlistのAPIで遊んでみた - Qiita

    こんにちは、最近は寒すぎて電気カーペットの上で直接寝てしまう木佐貫(@nori4k)です。 非エンジニアとのタスク共有にWunderlistを使っています。 機能もUIもシンプルで分かりやすいので普段はスマホくらいしか触らない人でも負担なく導入することができとても重宝しています。 WunderlistからAPIも提供されているのでどんな風につかうのか早速試してみました。 Wunderlist とは Wunderlist は、タスク管理を支援するシンプルな ToDo リスト アプリです。家族との買い物リストの共有からプロジェクト管理、休暇の計画まで、Wunderlist を使えば、ToDo の入力、共有、そして実行を簡単に行うことができます。Wunderlist はスマートフォン、タブレット、PC の間で瞬時に同期するAため、あらゆるタスクにどこからでもアクセスできます。 (iPhoneアプ

    タスク管理ツール WunderlistのAPIで遊んでみた - Qiita
    jakalada
    jakalada 2018/07/17