第三回」で実施する、皆さんに解いていただく課題内容を記載いたします。moduleを使います。moduleという機能が追加され、標準の機能でも依存関係の管理ができるようになりました。適当な作業ディレクトリの直下で、下記を実行します。hello下記のようなファイルが、カレントディレクトリに作成されます。すると、プログラム内に外部パッケージがあれば、go.modへ依存関係が追記されていき(あわせてgo.sumというファイルも出来上がります)、パッケージを実際に使うこともできます。go.mod、go.sumに依存パッケージのバージョンが記録されるため、これらのファイルがあれば、指定のバージョンをプロジェクトごとに使うことができるという仕組みです。配下の任意の場所に、作業用のディレクトリを作成してください。ディレクトリとなります。HTMLテンプレートを使って、ページを出力するサーバを作ってみようGo標準機能のHTMLテンプレートを使用して、HTMLを返却するサーバを作成します。Webサーバが出力する値を表示します。構造体のフィールドを指定することで、対象の値を取得することができます。worldページが表示されるようにします。ここはWebサーバを作ってみる、お試しなので、実装を全て記載しています。}}Webサーバの実行、HTML確認プログラムを実行します。アクセスすると下記画像のように表示されます。JSONを返却する、簡単なAPIを作ってみようGo標準機能を引き続き使用して、JSONを返却するサーバを作成します。この項目から、ソースコード全体ではなく、穴埋め形式のようにしていきます。下記のコードを追加して、APIのハンドラを登録してください。handleHelloAPI)JSONを返却するコードの実装handleHelloAPIメソッドの中身を実装します。下記のスケルトンに沿って実装してください。w.Write()に作成したJSONを渡して、レスポンスする}Webサーバの実行、レスポンス確認プログラムを実行します。アクセスすると下記のように表示されます。Webフレームワーク「echo」を使って実装をしてみよう課題1、課題2で実装したものを、Webフレームワークである、echoを使って実装し直します。ライブラリの所在は、github.com/labstack/echoです。echoは軽量なフレームワークで、シンプルさとハイパフォーマンスが特徴です。競合するフレームワークではGinなどがあります。今回のハンズオンでは、シンプルさを重視してechoを選択しました。するとmoduleにより追加されます。echoを使ってサーバを起動する下記のコードにより、サーバを起動できます。e.Logger.Fatal(e.Start(":8080"))}実行すると、下記のようにechoによるサーバが起動します。[::]:8080echoでHTMLテンプレートの出力を実装する、動作確認する公式のサンプルに沿ってやってみましょう。公式の参考資料:https://echo.labstack.com/guide/templates下記がechoでHTMLテンプレートを使うために必要な実装です。参考にしつつ、処理確認まで進めましょう。HTMLテンプレートを作成するechoではHTMLテンプレートを下記のように定義する必要があります。課題1で作成したテンプレートファイルを流用しつつ、echo用に変更して下さい。テンプレートファイルに名前をつけます。後の工程でこの名前を使用します。テンプレートの終了を定義します。これらの設定が無いと、プログラムエラーとなります。echoにHTMLテンプレートエンジンを組み込む下記のコードにより、echoでHTMLテンプレートを使用します。レンダリング処理の定義をします。この定義を、echoに渡します。作成したechoに対して、下記のように上記の定義を設定します。後処理HTMLテンプレートを表示するハンドラを登録するロジックは課題1の内容と同じものを作成してみましょう。渡しているhelloという文字列が、HTMLテンプレート作成時につけた、名前となります。アクセスすると、課題1の内容と同じ出力がされます。echoでJSONを返却するAPIを実装する、動作確認する課題2で作成したAPIと同じものを、echoを使って実装します。レスポンス形式をJSONにする必要があるため、その部分を実装しつつ、動作確認まで進めましょう。メソッドを通すことで、構造体をJSONにしてレスポンスすることができます。JSON」項目で、構造体のフィールドに対して、JSON変換時の項目名をしていする方法が書かれています。ここでは、Message構造体の、Titleをtitle_nameに、Textをtext_messageに変更してみましょう。ここにJSON変換時の項目名を指定}APIを実行するハンドラを登録する作成した関数を設定します。アクセスすると、下記のようにJSONが返却されます。出力したHTMLからAPIを実行して、結果を画面に出力しよう出力されたHTMLから、APIを実行し、結果をHTML上に表示してみましょう。HTMLテンプレートに下記を追記します。ボタンをクリックすると、APIが実行され、結果が#resultのdivタグへ結果が追記されます。取得するJSONのフィールド名は、上記で構造体に設定したものとなっています。});}</script>後略〜実行すると下記のように表示されます。以上により、GoによるHTMLの出力と、APIの実行までができました。此処から先の課題では、これらのやり方を元に、各々でロジックを組み立てていただきます。例としては、四則演算を用意しています。相殺していたかと思います。そこで、ソースの変更を検知して、自動反映してくれるパッケージがあるので、使ってみましょう。いった、ホットデプロイを提供するパッケージはいくつかありますが、今回は使い方がシンプルなFreshを使います。代わりに、Freshを実行するような形です。デフォルトの、ユーザホームディレクトリ配下を想定しています。変えている場合はパスを適宜変更してください。$HOME/go/bin/fresh実行すると、下記のような形で出力されます。[::]:8080Freshを使って起動している状態でソースコードを変更し、保存すると、そのたびに自動でビルドされ、上記のようなログが都度追記されます。moduleとの共存ですが、問題なく可能です。moduleが使用されます。四則演算のAPIを作ってみよう下記の仕様でAPIを作成し、HTML上のフォームから実行してみましょう。secondの値を足したものが、フィールド名resultで返却されるインプット例http://localhost:8080/plus?first=1&second=2アウトプット例{"result":3}HTMLからの実行フォームでfirstとsecondの2つの値を受け取り、上記のAPIを実行する。出力結果をHTMLに追記する。フォームの値を変えることで、任意の数字で足し算を実行することができる。HTMLからの実行は、Javascript等の実装も含みますので、詰まる場合はAPIをブラウザから直接実行するなどで、ご確認ください。業界最多のコンテンツラインナップとともに最新のテクノロジーを駆使した各種ソリューションを出版社や電子書店に提供し、グローバル且つマルチコンテンツ配信プラットフォームを目指しています。upLoginユーザーは見つかりませんでした。