Skip to content

Commit eddde61

Browse files
committed
WIP: add images and codes
1 parent 522d1d9 commit eddde61

10 files changed

+62
-56
lines changed

docs/chapter1/section3/0_hello-server.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## ファイルの作成
44

5-
今回は、Go と、Go の有名な web フレームワークである [Echo](https://echo.labstack.com/) を使ってサーバーアプリケーションを作っていきます。
5+
今回は、Rust と、Rust の有名な web フレームワークである [axum](https://github.com/tokio-rs/axum) を使ってサーバーアプリケーションを作っていきます。
66

77
`~/develop/hello-server`というディレクトリを作成し、そのディレクトリを開きます。
88
```bash
@@ -25,9 +25,9 @@ $ man mkdir
2525
変えた場合には適宜読み替えてください。
2626
:::
2727

28-
作ったディレクトリの中に`main.go`を作成し、以下のプログラムを書き込みます。
28+
作ったディレクトリの中に`main.rs`を作成し、以下のプログラムを書き込みます。
2929

30-
<<<@/chapter1/section3/src/1-1_hello-server.go
30+
<<<@/chapter1/section3/src/1-1_hello-server.rs
3131

3232
Echo は、[Go の標準ライブラリ](https://pkg.go.dev/std)に入っていない外部ライブラリなので、外部からダウンロードしなければなりません。しかし、Go にはそれを自動でやってくれる [Go module](https://go.dev/doc/tutorial/create-module) という便利な機能があるので使ってみましょう。以下を VSCode 内のターミナルで実行してください。(他のターミナルでも可)
3333

@@ -49,11 +49,11 @@ $ go mod tidy
4949
本来この `develop` の所にはリポジトリ名を入れることが多いです。詳しくは[公式ドキュメント](https://go.dev/doc/modules/managing-dependencies#naming_module)を参照してください。
5050
:::
5151

52-
続けて、`main.go` を実行してサーバーを立てましょう。
52+
続けて、`main.rs` を実行してサーバーを立てましょう。
5353
```bash
5454
# 先ほど書いたファイルを実行して、サーバーを立てる
5555

56-
$ go run main.go
56+
$ cargo run
5757
```
5858

5959
以下のような画面が出れば起動できています。
@@ -101,16 +101,16 @@ localhost は自分自身を表すドメインなので、自分のブラウザ
101101

102102
## 基本問題
103103
エンドポイントとして自分の traQ ID のものを生やして自己紹介を返すようにしてみましょう。
104-
`main.go``/{自分の traQ ID}`処理を追加して作ってください。
104+
`main.rs``/{自分の traQ ID}`処理を追加して作ってください。
105105

106106
:::tip
107-
この章では、この`main.go`に処理を追加していきます。
107+
この章では、この`main.rs`に処理を追加していきます。
108108

109109
以降のコードではすでに作ったエンドポイントを省略していますが、作ったエンドポイントは消さずに、新しいエンドポイントを追加していくようにしてください。
110110
:::
111111

112-
作り終わったら、変更を反映させるために、`go run main.go`を実行したターミナル上で`Ctrl+C`を押してサーバーを止めた後、また`go run main.go`してサーバーを立て直しましょう。
113-
今後`main.go`を書き換えたらこの工程を行うようにして下さい。
112+
作り終わったら、変更を反映させるために、`cargo run`を実行したターミナル上で`Ctrl+C`を押してサーバーを止めた後、また`cargo run`してサーバーを立て直しましょう。
113+
今後`main.rs`を書き換えたらこの工程を行うようにして下さい。
114114

115115
サーバーの立て直しができたら、ブラウザで`http://localhost:8080/{自分の traQ ID}` にアクセスするか、以下のコマンドを実行して、上手く出来ていることを確認しましょう。
116116
```bash
1.03 KB
Loading
Loading
Loading
Loading
Loading

docs/chapter1/section3/src/1-1_hello-server.go

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
use axum::{routing::get, Router};
2+
3+
#[tokio::main]
4+
async fn main() {
5+
// 「/hello」というエンドポイントを設定する
6+
let app = Router::new().route("/hello", get(handler));
7+
8+
// ポート8080でリスナーを作成する
9+
let listener = tokio::net::TcpListener::bind("127.0.0.1:8080")
10+
.await
11+
.unwrap();
12+
13+
println!("listening on {}", listener.local_addr().unwrap());
14+
15+
// サーバーを起動する
16+
axum::serve(listener, app).await.unwrap();
17+
}
18+
19+
// 文字列「Hello, World.」をクライアントに返す
20+
async fn handler() -> String {
21+
String::from("Hello, World.")
22+
}

docs/chapter1/section3/src/1-2_hello-server-me.go

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
use axum::{routing::get, Router};
2+
3+
#[tokio::main]
4+
async fn main() {
5+
// 「/hello」「/kenken」の2つのエンドポイントを持つアプリケーションを作成
6+
let app = Router::new()
7+
.route("/hello", get(hello_handler))
8+
.route("/kenken", get(me_handler));
9+
10+
// ポート8080でリスナーを作成する
11+
let listener = tokio::net::TcpListener::bind("127.0.0.1:8080")
12+
.await
13+
.unwrap();
14+
15+
println!("listening on {}", listener.local_addr().unwrap());
16+
17+
// サーバーを起動する
18+
axum::serve(listener, app).await.unwrap();
19+
}
20+
21+
// 文字列「Hello, World.」をクライアントに返す
22+
async fn hello_handler() -> String {
23+
String::from("Hello, World.")
24+
}
25+
26+
// 自己紹介をクライアントに返す
27+
async fn me_handler() -> String {
28+
String::from(
29+
"始めまして、@kenkenです。\nきらら作品(特に恋する小惑星、スロウスタート)が好きです。",
30+
)
31+
}

0 commit comments

Comments
 (0)