https://github.com/Irori235/ToDoList-Server/tree/day-2この記事は新歓ブログリレー13日目になるはずだった記事です。担当者が体調を崩したため、なくなく延期することになりました。traPでは主にグラフィック班とSysAd班に所属し、イラストとweb開発をしています。この記事はサーバー編2日目です。World!」を通して、開発の流れをざっくりと理解したこれを踏まえて、今日やることはこちらです。いいたいのですが、作るためにはアプリの設計を考えることが必要です。そこからはじめましょう。ToDoリストの要件定義まず最初に、ToDoリストに必要な機能を書き出し、整理します。これを要件定義と言います。ToDoリストとして必要な機能と、一つ一つのタスクについて要求されることを書き出します。今回は最低限の機能を持つToDoリストを作ります。作り終わったら、自分なりの機能を追加してみても楽しいですね。タスクの期限を設定できるようにしたり、タグ付けができるようにしたり。データベース(DB)の設計データベースにはExcelのようなものが入っていると考えれば良いでしょう。画像はスプレッドシートのものですが...用件定義に従って、タスクのパラメーターを以下のようになります。taskidnamefinishedここで、型を決めておく必要があります。足そうとして、エラーが出たりします。型は以下のように決めました。true/falseを持つブール型(boolean)idについては、uuidという少々特殊な型を使います。これは自動的に相異なる16進数32桁の文字列を振ってくれる型のことです。要件定義に従って、APIを設計していきます。最初に、タスク一覧を取得しなければいけないことに注意しましょう。/tasksタスクをサーバーのデータベース上に追加するtaskの名前をbodyに入れて送ります。bodyはjsonデータでこのような形になります。idを入れて送ります。idを入れて送ります。Postmanのインストール[Day-1のWebAPIとは]でやったように、バックエンドの動作は、フロント側からAPIを送信することから始まるのでした(このことをAPIを「叩く」と言ったりします)。その際に、簡単にAPIを叩けるアプリがあると便利ですね。いったアプリの一つがPostmanです。下のリンクからインストールしてください。作業ディレクトリを作成するターミナル(WSL2)を開きます。今後はターミナル表記に統一するため、Windowsの人はWSLに読み替えて下さい。ホームディレクトリに移動します。Day1のGOPATHで指定した、goディレクトリに移動します。その下に今回のプロジェクトディレクトリ(ToDoList-Server)を作成します。ToDoList-Serverこの後は、~/go/src/ToDolistに作成されているものとして進めます。{package名}の部分や、DockerfileのWORKDIRのパスを変えてあげる必要があります。シェルの簡単な使い方に書いてあります。VSCodeで開くVSCodeを起動します。プロジェクトフォルダ(go/src/ToDolist-Server)を開きます。次に、main.goを作成します。ここにgoの処理を書いていきます。今は何も書かずに、次に進みます。下部にターミナルが開きます。ここに表示されているのがプロジェクトのルート(ディレクトリ)であり、今後ここで作業します。pでコマンドパレットを開き、「Remote-WSL」と入力します。|Microsoft]に画像付きで説明されています。Modulesターミナル(WSL)のプロジェクトのルートで、下のコマンドを打ちます。{package名}今回はpackage名のところは空白にします。tidyを打ってくださいと出るので、打ちます。tidyで、go.modファイルが作成されます。Dockerで環境構築DockerとはDockerは、作業環境の差異を吸収するサービスです。化学の実験を行うことを考えてみてください。化学の実験の際に同じ手順を踏んだとしても、室温が違ったり、日光のあたりが違ったりすれば当然結果は変わってくるでしょう。同じ条件下の実験室で、完全に同じ手順を再現して実験すれば、同じ結果が得やすくなります。このことをDockerコンテナではやっているのです。私のPCには便利なWeb開発アプリや独自のカスタマイズがいろいろ入っています。そのような私のPCと、今これを読んでいるあなたのPCの状態はおそらく違うでしょう。その差異を吸収するためにDockerを使用します。DockerはPCから隔離された、コンテナを作成します。イメージは輸送船に載っているアレです。同じ状態のコンテナの中で作業することで、同じ実行結果が得られるというわけです。Desktopをダウンロードします。下のリンクからダウンロードします。DockerDockerDocker拡張機能をダウンロードVSCodeにdocker拡張機能をダウンロードします。Docker環境の構築Dockerコンテナは、最初の状態ではただの空の箱(コンテナ)があるのみです。そこに、docker-compose.ymlで各コンテナの初期状態を指定し、必要ならその後に実行するコマンドをDockerfileに記述してあげます。今回は記事の目的はロジックを書くことなので、Dockerfileとdocker-compose.ymlの書き方の説明は省略します。Dockerを弄って遊んでみたい方には、マンガでわかるDockerがとても分かりやすいのでおすすめです。作成し、以下をコピペします。(macならcmd+S)で保存します。作成し、以下をコピペします。./phpmyadmin/sessions:/sessions保存します。最終的にこのようになります。