Help us understand the problem. What is going on with this article?

AkkaHTTP 公式 introduction を日本語訳する

Akka HTTP introduction

1. introduction

Def:

Akka HTTP モジュールは、「akka-actor」と「akka-stream」の上にフルのサーバサイドと、クライアントサイドのHTTPスタックを実装したもの

フレームワークというよりは、HTTPベースのサービスを提供したり、使ったりするための標準的なツールキット、という立ち位置らしい。
(詳細: Philosophy にて後述)

性質:

オープンなデザイン

同じことをするのに、いくつかのAPIのレベルの選択肢がある(が提供されている)。

「自分の提供したいアプリケーションに最適なレベルのAPIを選んで使ってね。
高レベルで実現するのが辛かったら、低レベルなAPIを使って実現できる可能性があるよ」
とのこと。

ここでいう「高レベル」は「ガチガチに色々揃った、準備されたもの」
「低レベル」は「より生に近く、柔軟性の高いもの」らしい。

なので、低レベルのAPIを選択するということは、コードをより多く書くことが要求されるということとなる。

Philosophy:

アプリケーションのコアを提供するフレームワークではなく (というよりも、むしろ) レイヤーを統合するツールを提供することに明確に焦点を当てて開発されてきた。

X: フレームワーク
O: ライブラリの集合体

フレームワーク

「フレームワーク」というと 結構完成されたもの(フレーム)が前もって作られていて、その提供されたものと、それを自分なりに組み替えるに当たって用意されているサポートを使って、素早く目的ものを作成する というイメージがある (し、実際にそういうものである) 。

ある意味では、フレームワークは、「肉 (flesh) 付け」をするための「骨組み (skeleton)」であり、骨に肉をつけていくことで、アプリケーションが活き活きしてくるものである。

このように、開発を進める前にどのフレームワークを使うかを決めて
そのフレームワークのやり方に沿って (開発を) 進めていけば
フレームワークは最高の働きをする (だろう) 。

例えば、ブラウザ越しに使われる web-application などを作る場合には、フレームワークを使うのが賢い選択である。

Akka HTTP の目指すもの

もし、開発しようとするものの「コア」がブラウザインタラクションなものではなく、「特殊で、複雑なビジネスサービス」であったり、「単に REST/HTTP インターフェースを介して世界に発信したいんだ!」という場合には、フレームワークは必要ないかもしれない...
(大道具すぎる、ということ?)

こう言った場合には、アプリケーションのアーキテクチャは、インターフェース層ではなく、"コアにとって意味あるもの" によって決定されるべきである。

また、ブラウザ固有のフレームワーク ( のコンポーネント ) にありがちな
「view のテンプレ化」であったり「アセットの管理」であったり、
「JavaScript や CSS 周りの取り扱い」や
「localization のサポート」、「AJAX のサポート」
といったことの恩恵を受けることは恐らくないだろう (と思われる) 。

Akka HTTP は、「フレームワーク嫌い」 をしている訳ではない。

「フレームワークを選択するのが適切でない場合に (も)
そぐうように」
not-a-framework として作られているのである。

Akka HTTP は HTTP をベースにした
レイヤーの統合を目的として作られている。

なので、通常は Akka HTTP の上にアプリケーションを構築する、という
( フレームワーク的な使い方をされる) ことはない。

他方で、もしフレームワークに沿ったアプリケーションを構築したいのであれば、Play FrameworkLagom をオススメする。

(これらは内部的に、Akka HTTP を利用している)

Next:

Using Akka HTTP

sudachi0114
個人的な勉強、在学中の大学での研究活動、参加したインターンシップ等で学んだことに関しての備忘録として利用していくつもりです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away