Framework、Rocketの解説をしていきます。Overviewこの記事で取り扱う内容は以下の通りです。World!"}関数そのものは、常に決まった文字列を返すだけの単純なものです。重要なのは関数のアトリビュート、#[get("/")]の部分。大なり小なりウェブアプリを作った人ならば、getというキーワードに心当たりがあると思います。GETリクエストのことです。/にも見覚えがありますよね。このアトリビュートが意味するところは(指定されたパス以下で)/にGETリクエストが来た場合は、この関数が動作するということになります。いう条件がいきなり出てきました。この仕組みには、次に説明するルーティングが関わっています。.launch();}rocketのアプリケーションを起動するとき、ignite()からlaunch()までの間にメソッドチェーンで色々な情報を付け加えることができます。mount()もその設定のためのメソッドのひとつ1です。このメソッドは第一引数にベースとなるパスをとり、第二引数に示された関数をマウント(取り付け)します。前回のコードでは、index()はベースのパス/の/に取り付けられていました。World!が表示されたのです。/ばかりが出てきてちょっと例が悪いので、src/main.rsに関数を追加しましょう。マウントするために、main()も変更します。index()に代わって、bar()関数で説明しましょう。このコードでは、bar()関数はベースとなるパス/fooの中の/barに取り付けられています。URLにすると、/foo/barです。これは、同じベースのパスに複数の関数を対応付けるための機能です。下記のコードのように、同じパスの直下に複数の関数をマウントしたいときに本領を発揮します。bar1(),bar2(),bar3(),のそれぞれに#[get("/foo/bar1")],#[get("/foo/bar2")],#[get("/foo/bar3")],と似た内容のアトリビュートを書きまくる愚を犯す2ことなく、#[get("/bar1")],#[get("/bar2")],#[get("/bar3")]で事足りるようになります。PathRocketのルーティングにおける取り柄は、mount()だけではありません。yokoyama(21)のレスポンスが返されます。このように、Rocketのルーティングでは、パスから関数の引数を切り取ることができます。traitを実装している必要があります。traitを実装しているので、単純なことをしているうちは気にする必要はないでしょう。}ここに二つの関数があります。二つの受け持ちするパスは、完全には分けられません。/223344や/7777などは文字列としても数字としても認識できるため、どちらの関数のルーティングの条件にも当てはまるからです。Rustコンパイラはこのようなコードを許しません。buildコマンドを平気で叩くような人間には、コンピュータの無慈悲な鉄槌が下ります。コンパイルエラーです。誠に残念ながら、このコードはコンパイルを通ります。実行するとpanicして終了します。collision、つまり担当領域の衝突が検知されました、というエラーメッセージです。二つの関数の担当領域が重複する場合でも再現性のあるルーティングを実現するのに最も簡単だと思われる方法は、関数に序列をつけてしまうことです。Rocketには、そのための機能があります。runしてもpanicは起こらず、再現性のあるルーティングを実装できました。この場合、ルーティングにおいてはまずhello_with_age()にマッチするかを判定され、次にhello_with_name()にマッチするかを判定されます3。その結果、/0や/9999に対するGETリクエストはhello_with_age()によって処理され、/foobarや/mojiretsuに対するGETリクエストはhello_with_name()によって処理されることになります。次回予告お疲れ様でした。編と銘打ってはいますが、要はそれっぽく動くというだけのことです。一度知ったなら、細かいことは忘れてしまって支障はないと思います。なにか問題があっても、エラーメッセージでググればたいていは解決することでしょう。実は、nodejsのexpressにも似たような機能があります。Rocketでは、その使用感をそのままに、なおかつヒューマンフレンドリーな静的型付けのモダンかつ高速な言語で実装できます。Rust、やっていきましょう。今回はGETリクエストについて扱ったので、次回はPOSTリクエスト、気が向いたらJsonについても解説しようと思います。同種の他のメソッドについては、Rocketのドキュメントをどうぞ。[return]プログラミングにおいては、共通化できるところはできるだけまとめるのが基本と聞いています。