SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イベントレポート

ReactorKitの生みの親も登壇した「ReactorKit Meetup Japan」レポート

「Architecture and ReactorKit」Yoichi Tagaya, Mercari

 多賀谷洋一氏で「Architecture and ReactorKit」というタイトルでの発表です。多賀谷氏は、DIフレームワークであるSwinjectの作者として知られており、現在は株式会社メルカリのエンジニアリングマネージャーを務めています。

 この発表では、「ソフトウェアアーキテクチャとは何か」について語られ、Fluxの立ち位置を確認したのち、ReactorKitの良さについて触れました。

ソフトウェアアーキテクチャとは何か?

 ReactorKitはFluxアーキテクチャに強くインスパイアされたフレームワークです。Fluxアーキテクチャの話をする前に、そもそもアーキテクチャ、つまりソフトウェアアーキテクチャとは何か、考えてみましょう。多賀谷氏は次の通り述べています。

 「What is software architecture」とGoogleで検索すると、Peter Eeles氏の「What is a software architecture?」というタイトルの記事が上位にヒットするはずです(2018年7月現在)。この記事の本文でも参照されている通り、IEEE 1471に以下の記述があり、アーキテクチャを定義しています。

 Architecture is the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. [IEEE 1471]

 日本語に翻訳すると、以下の表現になります。

 「アーキテクチャとは、システムの重要な構成のことであり、システムのコンポーネントや互いの関係、環境、その設計と展望を導く考え方を実現するものです。」

 非常に抽象度が高いですが、なんとなく伝わってきます。さらに、Peter Eeles氏の記事で述べられていることを簡単にまとめていました。それが以下の通りです。

 アーキテクチャは、

  • 構造を定義する
  • 振る舞いを定義する
  • 重要な要素についてのみ考える
  • チーム構成に影響を与える
  • 論拠に基づく意思決定を実現する
  • ステークホルダーの複数の相反する要求の均衡を保つ
  • 取り巻く環境に依存する
  • 同じ課題を共有するアーキテクチャパターンに準拠することができる

 多賀谷氏は特に最後の3つについて重点的に説明しました。

 「ステークホルダーの複数の相反する要求の均衡を保つ」にいては、社内外のステークホルダーがたくさん存在し、そして同時に彼らの要求をうまくバランスするためにアーキテクチャが機能し、そしてそれが重要であることを述べています。

 次に、「取り巻く環境に依存する」では、会社の環境、例えば、株価やDAU、コードベースの古さや量、多くの新しい機能や多くのエンジニアなど、さまざまな変数に依存することを説明しています。

 これらからわかるのは、未来においてステークホルダーや環境がより複雑で大きなものになることにより、選択するアーキテクチャも変わりうるということです。

 最後に「同じ課題を共有するアーキテクチャパターンに準拠することができる」についてです(上記の「アーキテクチャパターン」は、発表および原文では「Architectual Style」という表現となっています)。ここでのアーキテクチャパターンは、つまり、MVCやMVVM、VIPPER、iOS Clean Architecture、Fluxなどのことを指します。これらのパターンは、それぞれの共有する課題を解決するために存在します。例えば、Fluxであればデータの更新フローの煩雑さを課題とし、一方向のデータフローによる状態管理というアプローチをしています。

Fig. 3.1 社外や社内のステークホルダー(登壇資料:page 8より引用)
Fig. 3.1 社外や社内のステークホルダー(登壇資料:page 8より引用)
Fig. 3.2 影響されうる社内の環境(登壇資料:page 9より引用)
Fig. 3.2 影響されうる社内の環境(登壇資料:page 9より引用)

ReactorKitの良さ

 さて、ここまででソフトウェアアーキテクチャについてと、Fluxの立ち位置について説明がありました。ここで多賀谷氏は、MVCパターンを実現するフレームワークとしてRuby on Railsを取り上げました。Ruby on RailsはWebアプリケーションフレームワークであり、高速な開発を実現するフレームワークであることを示しています。Ruby on Railsは強力なCoC(onvention over configuration)を持っており、高速な開発を実現する大きな要因のひとつとなっています。

 そして、ここでReactorKitが登場します。ReactorKitはFluxパターンを実現するフレームワークであり、Railsと同様に高速な開発を実現し、未来のステークホルダーや環境においてもフィットすることを主張しています。これはRails同様に迷わない強い規約が要因にあります。この点は菅原氏の発表でもあった「迷わず正しい設計をする」ということにつながっているように感じました。

Fig. 3.3 ReactorKitは高速な開発を可能にする(登壇資料:page 13より引用)
Fig. 3.3 ReactorKitは高速な開発を可能にする(登壇資料:page 13より引用)

まとめ

  • アーキテクチャはステークホルダーや環境に依存する
  • ReactorKitはステークホルダーや環境の成長に対応する強いフレームワーク

次のページ
「ReactorKit at Wantedly」Jiro Nagashima, Wantedly

この記事は参考になりましたか?

イベントレポート連載記事一覧

もっと読む

この記事の著者

永田 健人(ウォンテッドリー株式会社)(ナガタ ケント)

 ソフトウェアエンジニア。ウォンテッドリー株式会社所属。Wantedly Visitを通して、より多くの人と企業が「気軽に出会う体験」をつくっています。サーバサイドはRails、フロントはReact/Redux、iOSでSwiftをメインに開発をしています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10971 2018/07/25 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー