茶漬けの技術メモ

Golang, Rubyで趣味開発します。テックニュース書いたり。ガジェット触ったり。

GW前半で「Go言語によるWebアプリケーション開発〜チャット編〜」をやってみた

みなさんはGWいかがお過ごしでしょう?

私はGW前半でこちらの本

www.oreilly.co.jp

Go言語によるWebアプリケーション開発〜チャット編〜

をやってみたのでその感想になります


どんな本?

こちらはGoをつかったWebアプリ開発において必要最低限な知識を
実際にアプリを作成しながら学んでいくスタイルの本になります

構成は?

全8章構成になっています

1~3章: WebSocketを使ったチャットアプリ ← これやった 4章: ドメイン名を検索するコマンドラインツール
5, 6: Twitter API をつかった投票集計ツール
7章: ランダムなお勧めを提示するサービス
8章: ファイルシステムのバックアップ


何が学べた?

1章

1章ではgorutineとWebSocketを使ったチャットアプリのベースとなる部分を作成します

gorutine

これまで、Goでアプリを作成したことはありましたが、gorutineを使ったことがありませんでした
なので本でgorutineについて勉強しても、「これいつ使うんや?」と思っていましたが
この章で「あー、なるほど」となりました
メッセージの送信側と受信側を並列で走らせるためにgorutineを利用しています

WebSocket

この章ではサーバ側の実装はもちろんですが、フロント側の実装についても触れられているので
実感としては「WebSocketって意外と簡単に実装できるんだな」という感じです


2章

2章ではOauthを使ったログインを実装します

Oauth

Gomniauth というパッケージを利用したOauth認証を実装します

github.com

アカウントでのログインを実装します

3章

3章ではチャットアプリに表示するプロフィール画像を追加できるようにします

画像のアップロードと表示

2章の時点で認証先のプロバイダーからプロフィール画像は取得できていますが
このアプリ専用のプロフィール画像をアップロードできるようにします

TDDに基づいた変更

この章に限った話ではないですがリファクタリングを行う際もテスト駆動で開発を行なって行きます
個人での開発だとテストを後回しにしがちですが、テストを先に書くことで後の実装内容もより鮮明に頭の中で組み立てられるなと実感しました


まとめ

本書ではTDDに基づいて開発が進んでいきますので、私みたいに「テストめんどくさいな〜」と思っている方には特にいいかもしれません

また、interfaceを用いた抽象に依存する設計の考え方もとても勉強になりました

残り5章頑張るぞ!!