有志メンバーで技术书典4に出展します!

エ!Androidエンジニアの@yuyakaidoです。

ではの度,エウレカの有志メンバーで技术书典4に出展することになりました。本记事では,エウレカブースで配布予定の技术书について绍介したいと思います!

技术书典とは

公式サイトの说明によると,

新しい技术に出会えるお祭りです。

技术书典は,いろんな技术の普及を手伝いたいとの想いではじまりました。

技术书を中心として出展者はノウハウを诘め込み,来场者はこの场にしかないおもしろい技术书をさがし求める,技术に关わる人のための场として『技术书典』を开催します。

とのことです。技术书に特化したコミケといった感じでしょうか。

技术书典は过去に3度开催されており,次回で4度目の开催になります。开催を重ねるごとに参加者が増えており,Twitterなどで会场の様子を见かけた方もいるかと思います。去年の技术书典3の様子については,技术书典3サークル参加アンケート结果と分析をご覧ください。

エウレカ9

カのサークル名は「エウレカ9」で,场所は「い-14」です。

内容はエウレカの事业内容にはほとんど关系がなく,それぞれが好きなテーマについて执笔予定です。

Android上的Redux

私は「Android上的Redux」というタイトルで,AndroidにおけるRedux実装について执笔します。现在绝赞执笔中につき一部変更になる可以もありますが,内容を少しだけ绍介します。

Reduxとは

Androidアプリに求められる要件は年々复雑化してきており,それに伴って扱う状态も増えてきています。シンプルなアプリであれば状态管理はそれほど问题になることはないですが,大规模なアプリになればなるほど状态管理はクリティカルな问题となることが多いです。

本来は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が具体的なデータソースを知る必要性から开放されます。

  • 状态に种类があること

商店の実装を工夫することで状态の种类を隠蔽することが可能になります。

  • 非同期处理の扱いと,非同期处理后の状态変更

Reduxでは非同期处理をActionCreatorとして切り出します。ActionCreatorは非同时处理の実行に必要なデータを受け取り,非同时处理を実行します。その结果はActionとして表现され,最终的にStoreに渡されます。重要なのは非同期处理とその结果が明确に分离されている点で,これによりテスタビリティを高めることができます。

まとめ

本书典4は2018年4月22日(日)に秋叶原UDXアキバ・スクエアにて开催予定です。来场予定の方は是非エウレカブースにも立ち寄ってみてください!