エウレカの有志メンバーで技術書典4に出展します!
こんにちは!Androidエンジニアのyuyakaidoです。
この度、エウレカの有志メンバーで技術書典4に出展することになりました。本記事では、エウレカブースで頒布する技術書に掲載予定のコンテンツを少しだけ紹介します。
技術書典とは
公式サイトの説明によると、
新しい技術に出会えるお祭りです。
技術書典は、いろんな技術の普及を手伝いたいとの想いではじまりました。
技術書を中心として出展者はノウハウを詰め込み、来場者はこの場にしかないおもしろい技術書をさがし求める、技術に関わる人のための場として『技術書典』を開催します。
とのことです。技術書に特化したコミケといった感じでしょうか。
技術書典は過去に3度開催されており、次回で4度目の開催になります。開催を重ねるごとに参加者が増えており、Twitterなどで会場の様子を見かけた方もいるかと思います。技術書典3の様子については、技術書典3サークル参加アンケート結果と分析をご覧ください。
エウレカ9
エウレカのサークル名は「エウレカ9」で、場所は「い-14」です。
内容はエウレカの事業内容にはほとんど関係がなく、それぞれが好きなテーマについて執筆予定です。
Redux on Android
私は「Redux on Android」というタイトルで、AndroidにおけるRedux実装について執筆しました。本記事でその概要を紹介します。
Reduxとは
Androidアプリに求められる要件は年々複雑化してきており、それに伴って扱う状態も増えてきています。シンプルなアプリであれば状態管理はそれほど問題になることはないですが、大規模なアプリになればなるほど状態管理はクリティカルな問題となることが多いです。
Reduxはこういった状態管理にまつわる問題を解消するために登場しました。本来はReactとセットでWebフロント開発で使われることが多いですが、Redux自体は非常にシンプルな考え方なので、Webフロント以外のプラットフォームにも容易に移植することができます。
ReduxはFluxがベースになっているアーキテクチャで、データの流れが1方向に制限されているのが特徴です。Fluxとの違いはStoreが1つであったり、状態変更はReducerが担ったり、といった辺りです。
Androidにおける状態管理の難しさ
私が考えるAndroidにおける状態管理の難しさは以下の3つです。
- 複数のデータソースを扱う必要があること
Androidで扱うことの多いデータソースは、API経由でやり取りするサーバー、SQLiteなどを使ったローカルDB、SharedPreferencesを使ったKey-Valueストア、メモリやディスクなどを使ったキャッシュなどなど、代表的なものでもこれだけのデータソースがあります。これらのデータソースは適したデータ形式やアクセス方法がそれぞれ異なっており、これらの違いを意識してコードを書いていくのはかなり大変な作業です。
- 状態に種類があること
状態と一口に言っても、実は色々な種類の状態があります。大まかには、サーバーやローカルDBに保存されて永続化されている状態と、ユーザーが入力している最中のテキストといった一時的な状態があります。これらも状態管理を複雑化させる要因の1つです。
- 非同期処理の扱いと非同期処理後の状態変更
Androidで非同期処理を実装するときの手段としては、AsyncTask、Loader、Serviceなどがありますが、これらはそれぞれ実装方法が大きく異なり、状態管理が複雑化する要因になってしまいます。
状態管理の難しさにReduxで対抗する
- 複数のデータソースを扱う必要があること
ReduxではStoreが全ての状態を管理し、Viewは常にStoreから通知された状態からUIを構築します。このように設計することで、Viewが具体的なデータソースを知る必要性から開放されます。
- 状態に種類があること
Storeの実装を工夫することで状態の種類を隠蔽することが可能になります。
- 非同期処理の扱いと、非同期処理後の状態変更
Reduxでは非同期処理をActionCreatorとして切り出します。ActionCreatorは非同期処理の実行に必要なデータを受け取り、非同期処理を実行します。その結果はActionとして表現され、最終的にStoreに渡されます。重要なのは非同期処理とその結果が明確に分離されている点で、これによりテスタビリティを高めることができます。
まとめ
本記事では、エウレカ有志による技術書典参加の表明と、頒布予定のコンテンツを紹介しました。技術書典4は4/22(日)に秋葉原UDXアキバ・スクエアにて開催予定です。来場予定の方は是非エウレカブースにも立ち寄ってみてください!
エウレカでは仲間を募集しています。もし少しでもエウレカに興味がある方はWantedlyもチェックしてみてください。