From eddde617b507503520b6a031192ed2653d036d0f Mon Sep 17 00:00:00 2001 From: kenken714 Date: Thu, 10 Oct 2024 19:30:10 +0900 Subject: [PATCH 1/2] WIP: add images and codes --- docs/chapter1/section3/0_hello-server.md | 18 +++++----- .../chapter1/section3/assets/hello_server.png | Bin 7145 -> 8197 bytes .../section3/assets/hello_server_detail.png | Bin 13973 -> 19238 bytes .../assets/hello_server_localhost.png | Bin 9825 -> 9825 bytes .../section3/assets/hello_server_me.png | Bin 7911 -> 20241 bytes .../section3/assets/hello_server_success.png | Bin 3009 -> 3757 bytes .../chapter1/section3/src/1-1_hello-server.go | 21 ------------ .../chapter1/section3/src/1-1_hello-server.rs | 22 +++++++++++++ .../section3/src/1-2_hello-server-me.go | 26 --------------- .../section3/src/1-2_hello-server-me.rs | 31 ++++++++++++++++++ 10 files changed, 62 insertions(+), 56 deletions(-) delete mode 100644 docs/chapter1/section3/src/1-1_hello-server.go create mode 100644 docs/chapter1/section3/src/1-1_hello-server.rs delete mode 100644 docs/chapter1/section3/src/1-2_hello-server-me.go create mode 100644 docs/chapter1/section3/src/1-2_hello-server-me.rs diff --git a/docs/chapter1/section3/0_hello-server.md b/docs/chapter1/section3/0_hello-server.md index 93888e5a..7a3cb82a 100644 --- a/docs/chapter1/section3/0_hello-server.md +++ b/docs/chapter1/section3/0_hello-server.md @@ -2,7 +2,7 @@ ## ファイルの作成 -今回は、Go と、Go の有名な web フレームワークである [Echo](https://echo.labstack.com/) を使ってサーバーアプリケーションを作っていきます。 +今回は、Rust と、Rust の有名な web フレームワークである [axum](https://github.com/tokio-rs/axum) を使ってサーバーアプリケーションを作っていきます。 `~/develop/hello-server`というディレクトリを作成し、そのディレクトリを開きます。 ```bash @@ -25,9 +25,9 @@ $ man mkdir 変えた場合には適宜読み替えてください。 ::: -作ったディレクトリの中に`main.go`を作成し、以下のプログラムを書き込みます。 +作ったディレクトリの中に`main.rs`を作成し、以下のプログラムを書き込みます。 -<<<@/chapter1/section3/src/1-1_hello-server.go +<<<@/chapter1/section3/src/1-1_hello-server.rs Echo は、[Go の標準ライブラリ](https://pkg.go.dev/std)に入っていない外部ライブラリなので、外部からダウンロードしなければなりません。しかし、Go にはそれを自動でやってくれる [Go module](https://go.dev/doc/tutorial/create-module) という便利な機能があるので使ってみましょう。以下を VSCode 内のターミナルで実行してください。(他のターミナルでも可) @@ -49,11 +49,11 @@ $ go mod tidy 本来この `develop` の所にはリポジトリ名を入れることが多いです。詳しくは[公式ドキュメント](https://go.dev/doc/modules/managing-dependencies#naming_module)を参照してください。 ::: -続けて、`main.go` を実行してサーバーを立てましょう。 +続けて、`main.rs` を実行してサーバーを立てましょう。 ```bash # 先ほど書いたファイルを実行して、サーバーを立てる -$ go run main.go +$ cargo run ``` 以下のような画面が出れば起動できています。 @@ -101,16 +101,16 @@ localhost は自分自身を表すドメインなので、自分のブラウザ ## 基本問題 エンドポイントとして自分の traQ ID のものを生やして自己紹介を返すようにしてみましょう。 -`main.go`に`/{自分の traQ ID}`処理を追加して作ってください。 +`main.rs`に`/{自分の traQ ID}`処理を追加して作ってください。 :::tip -この章では、この`main.go`に処理を追加していきます。 +この章では、この`main.rs`に処理を追加していきます。 以降のコードではすでに作ったエンドポイントを省略していますが、作ったエンドポイントは消さずに、新しいエンドポイントを追加していくようにしてください。 ::: -作り終わったら、変更を反映させるために、`go run main.go`を実行したターミナル上で`Ctrl+C`を押してサーバーを止めた後、また`go run main.go`してサーバーを立て直しましょう。 -今後`main.go`を書き換えたらこの工程を行うようにして下さい。 +作り終わったら、変更を反映させるために、`cargo run`を実行したターミナル上で`Ctrl+C`を押してサーバーを止めた後、また`cargo run`してサーバーを立て直しましょう。 +今後`main.rs`を書き換えたらこの工程を行うようにして下さい。 サーバーの立て直しができたら、ブラウザで`http://localhost:8080/{自分の traQ ID}` にアクセスするか、以下のコマンドを実行して、上手く出来ていることを確認しましょう。 ```bash diff --git a/docs/chapter1/section3/assets/hello_server.png b/docs/chapter1/section3/assets/hello_server.png index 404de3ecdd6c56e2aeccd43339cf9e3a112279d3..91e2909185fc7205e0ecc2233a98b539fec69249 100644 GIT binary patch literal 8197 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 literal 13973 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 diff --git a/docs/chapter1/section3/assets/hello_server_localhost.png b/docs/chapter1/section3/assets/hello_server_localhost.png index 2db0c019af0af53f81e62e4b518992294edd5e4b..b31c125c69abd2476490b70504d9efd4312252b9 100644 GIT binary patch literal 9825 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 MPEEF2+U)E90JsUK#Q*>R literal 9825 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 KA(avzg8mmboEXXg diff --git a/docs/chapter1/section3/assets/hello_server_me.png b/docs/chapter1/section3/assets/hello_server_me.png index 934c7bed39dc41ebacc0f9ebad6443cd06c2be14..d48789ecfa0cd28415454550f556cd55d23eb64d 100644 GIT binary patch literal 20241 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 B_+$V8 literal 7911 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 diff --git a/docs/chapter1/section3/assets/hello_server_success.png b/docs/chapter1/section3/assets/hello_server_success.png index 3423269ad8825953d166e8d78039add7a39e9099..a112bb9af91285645a4dcf3b909909b288cdd1b7 100644 GIT binary patch delta 3742 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 diff --git a/docs/chapter1/section3/src/1-1_hello-server.go b/docs/chapter1/section3/src/1-1_hello-server.go deleted file mode 100644 index 68c5826a..00000000 --- a/docs/chapter1/section3/src/1-1_hello-server.go +++ /dev/null @@ -1,21 +0,0 @@ -package main - -import ( - "net/http" - - "github.com/labstack/echo/v4" -) - -func main() { - // Echoの新しいインスタンスを作成 - e := echo.New() - - // 「/hello」というエンドポイントを設定する - e.GET("/hello", func(c echo.Context) error { - // HTTPステータスコードは200番で、文字列「Hello, World.」をクライアントに返す - return c.String(http.StatusOK, "Hello, World.\n") - }) - - // Webサーバーをポート番号8080で起動し、エラーが発生した場合はログにエラーメッセージを出力する - e.Logger.Fatal(e.Start(":8080")) -} diff --git a/docs/chapter1/section3/src/1-1_hello-server.rs b/docs/chapter1/section3/src/1-1_hello-server.rs new file mode 100644 index 00000000..3949b6de --- /dev/null +++ b/docs/chapter1/section3/src/1-1_hello-server.rs @@ -0,0 +1,22 @@ +use axum::{routing::get, Router}; + +#[tokio::main] +async fn main() { + // 「/hello」というエンドポイントを設定する + let app = Router::new().route("/hello", get(handler)); + + // ポート8080でリスナーを作成する + let listener = tokio::net::TcpListener::bind("127.0.0.1:8080") + .await + .unwrap(); + + println!("listening on {}", listener.local_addr().unwrap()); + + // サーバーを起動する + axum::serve(listener, app).await.unwrap(); +} + +// 文字列「Hello, World.」をクライアントに返す +async fn handler() -> String { + String::from("Hello, World.") +} diff --git a/docs/chapter1/section3/src/1-2_hello-server-me.go b/docs/chapter1/section3/src/1-2_hello-server-me.go deleted file mode 100644 index 2e98a388..00000000 --- a/docs/chapter1/section3/src/1-2_hello-server-me.go +++ /dev/null @@ -1,26 +0,0 @@ -package main - -import ( - "net/http" - - "github.com/labstack/echo/v4" -) - -func main() { - // Echoの新しいインスタンスを作成 - e := echo.New() - - // 「/hello」というエンドポイントを設定する - e.GET("/hello", func(c echo.Context) error { - // HTTPステータスコードは200番で、文字列「Hello, World.」をクライアントに返す - return c.String(http.StatusOK, "Hello, World.\n") - }) - - // 「/pikachu」というエンドポイントを設定する - e.GET("/pikachu", func(c echo.Context) error { - return c.String(http.StatusOK, "始めまして、@pikachuです。\nケモノ(特に四足歩行)や、低頭身デフォルメマスコット(TDM)が大好きです。\n普段はVRChatに生息しています。twitter: @pikachu0310VRC") - }) - - // Webサーバーをポート番号8080で起動し、エラーが発生した場合はログにエラーメッセージを出力する - e.Logger.Fatal(e.Start(":8080")) -} diff --git a/docs/chapter1/section3/src/1-2_hello-server-me.rs b/docs/chapter1/section3/src/1-2_hello-server-me.rs new file mode 100644 index 00000000..d189607a --- /dev/null +++ b/docs/chapter1/section3/src/1-2_hello-server-me.rs @@ -0,0 +1,31 @@ +use axum::{routing::get, Router}; + +#[tokio::main] +async fn main() { + // 「/hello」「/kenken」の2つのエンドポイントを持つアプリケーションを作成 + let app = Router::new() + .route("/hello", get(hello_handler)) + .route("/kenken", get(me_handler)); + + // ポート8080でリスナーを作成する + let listener = tokio::net::TcpListener::bind("127.0.0.1:8080") + .await + .unwrap(); + + println!("listening on {}", listener.local_addr().unwrap()); + + // サーバーを起動する + axum::serve(listener, app).await.unwrap(); +} + +// 文字列「Hello, World.」をクライアントに返す +async fn hello_handler() -> String { + String::from("Hello, World.") +} + +// 自己紹介をクライアントに返す +async fn me_handler() -> String { + String::from( + "始めまして、@kenkenです。\nきらら作品(特に恋する小惑星、スロウスタート)が好きです。", + ) +} From d5864cd11d8331f37aeebab3b4e393662f1d4985 Mon Sep 17 00:00:00 2001 From: kenken714 Date: Thu, 10 Oct 2024 19:43:50 +0900 Subject: [PATCH 2/2] change some description --- docs/chapter1/section3/0_hello-server.md | 26 +++++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/docs/chapter1/section3/0_hello-server.md b/docs/chapter1/section3/0_hello-server.md index 7a3cb82a..135ca43e 100644 --- a/docs/chapter1/section3/0_hello-server.md +++ b/docs/chapter1/section3/0_hello-server.md @@ -25,11 +25,22 @@ $ man mkdir 変えた場合には適宜読み替えてください。 ::: -作ったディレクトリの中に`main.rs`を作成し、以下のプログラムを書き込みます。 +作成したディレクトリを、Rust プロジェクトとして初期化します。 +以下のコマンドを実行してみましょう。 +```bash +# Rust プロジェクトの初期化をする。 +$ cargo init +``` + +すると、`src/main.rs`を含むいくつかのファイルが生成されます。 + +`src/main.rs`に以下のプログラムを書き込みましょう。 <<<@/chapter1/section3/src/1-1_hello-server.rs -Echo は、[Go の標準ライブラリ](https://pkg.go.dev/std)に入っていない外部ライブラリなので、外部からダウンロードしなければなりません。しかし、Go にはそれを自動でやってくれる [Go module](https://go.dev/doc/tutorial/create-module) という便利な機能があるので使ってみましょう。以下を VSCode 内のターミナルで実行してください。(他のターミナルでも可) +axum は、[Rust の標準ライブラリ](https://doc.rust-lang.org/std/)に入っていない外部ライブラリなので、外部からダウンロードしなければなりません。しかし、`cargo` という Rust のパッケージマネージャを使えば、簡単にダウンロードできます。 + +以下を VSCode 内のターミナルで実行してください。(他のターミナルでも可) :::tip **ターミナルの開き方** @@ -39,16 +50,11 @@ Echo は、[Go の標準ライブラリ](https://pkg.go.dev/std)に入ってい ::: ```bash -# Go module を初期化して、足りない物をインストールし、使われてない物を削除する。 - -$ go mod init develop -$ go mod tidy +# Rust プロジェクトに axum と tokio の依存を追加する。 +$ cargo add axum +$ cargo add tokio --features rt-multi-thread,macros ``` -:::tip -本来この `develop` の所にはリポジトリ名を入れることが多いです。詳しくは[公式ドキュメント](https://go.dev/doc/modules/managing-dependencies#naming_module)を参照してください。 -::: - 続けて、`main.rs` を実行してサーバーを立てましょう。 ```bash # 先ほど書いたファイルを実行して、サーバーを立てる