GoでWebアプリが作れるようになろう! ── Go初心者向けハンズオンレポート
仙台でも最新技術やトレンドをリアルタイムにアップデートできる場を
オープニングトークは「SENDAI X-TECH Innovation Project」の主催者であり、仙台のIT分野に長く関わっているという仙台市産業政策部産業振興課長の白岩靖史さん。
「SENDAI X-TECH Innovation Project」とは、仙台市をフィールドに、IoTやAI、VR/AR、5Gなどの先端技術と様々な産業の掛け合わせによる新事業の創出や、先端IT人材の育成・交流により、イノベーションを生み出し、都市の体験をアップデートしていくことを目指すプロジェクトです。
▲仙台市産業政策部産業振興課長 白岩靖史さん
「今年度から『SENDAI X-TECH Innovation Project』を始めることになり、今回のGoハンズオンはその一回目の勉強会です。技術者の皆さんが最新の技術やトレンドなどをリアルタイムにアップデートできる場を作っていきます。いろんな分野に技術をサービスと掛け合わせてワクワクするような未来を一緒に創っていきたいので、今後も楽しく盛り上がっていきましょう」(白岩さん)
Goハンズオン「Go初心者向けハンズオン!- GoでWebアプリが作れるようになろう -」
今回のGoハンズオンの講師を務めていただいたのは、株式会社メルペイ エキスパートチーム上田拓也さん。2011年からGoを始め、golang.tokyo、Goビギナーズ、GCPUG Tokyoを運営し、Go Conferenceの主催も務めるなど、Goの普及に取り組んでいます。
今回のGoハンズオンでは二日間でGoの基礎知識から学び、最終的には簡単なWebアプリをつくるというもの。二日目には自分でアプリを改造する時間もとっているので、楽しんでほしいと上田さんの挨拶後、ハンズオンが開始されました。
▲株式会社メルペイ エキスパートチーム上田拓也さん
STEP01では「Goに触れる」と題して、Goについての説明から行われました。GoはGoogleが開発したプログラミング言語で、最初のバージョンが2009年11月にオープンソースで公開されています。
GoはGoogle社内の問題を解決するため、マルチコア時代のシステム言語として開発されたと言われています。
2018年8月日現在の最新バージョンはGo 1.11。主な特徴は以下の5つが挙げられます。
- 強力でシンプルな言語設計と文法
- 並行プログラミング
- 豊富な標準ライブラリ群
- 周辺ツールの充実
- シングルバイナリ・クロスコンパイル
また、Goは軽量プログラミング言語なので、シンプルで書きやすく、頑丈で厳密であるので、チームでの開発もやりやすいというメリットもあります。最近ではメルカリ、メルペイを始めとする多くの企業が、プロダクト開発で採用しています。
最近のモダンな言語は、他言語のいいところを取り入れる傾向がありますが、Goはシンプルさを維持して言語が複雑にならないようにしています。上田さんは、こうした言語の思想を理解して学ぶことはとても重要であると語りました。
▲講師の上田さんの話を真剣に聞き入る参加者の皆さん
Goハンズオン「STEP01: Goに触れる」
ハンズオンはSTEP01からSTEP10までのステップがあり、それぞれの課題を進めていくことで、Goで家計簿のWebアプリが作れるやり方で行われました。
Goの開発環境のインストールや設定、GoLand、エディタやIDEなどの説明を受け、いよいよSTEP01の「Goに触れる」に進みます。
STEP01は予め用意されたソースコードをダウンロードし、Goのプログラムの実行の仕方を学びます。
▲まずは、Goの開発環境などを準備している様子
Goハンズオン「STEP02: データの入力」
STEP02ではデータの入力に使う変数や型、Goならではの利点や特徴などについて解説。さらに、Goのプログラムがどのような構成要素でできているか、パッケージの種類にはどのようなものかあるのかなどについて、丁寧に説明されました。
実践編では、以下のようなデータの入力の課題に取り組みます。
- fmt.Printを使った表示
- fmt.Scanを使った入力
- fmt.Printlnを使った表示
- fmt.Printfを使った表示
質問も飛び交い、真剣な表情でそれぞれ課題に取り組んでいました。
午前中のハンズオン後は、ランチ休憩。事務局のほうで用意したお弁当を食べながら、楽しく談笑する参加者の皆さん。食後に課題の続きに取り組む方や、講師の上田さんに質問する方も見られました。
▲一日目のランチ休憩の風景
Goハンズオン「STEP03:データの記録」
STEP03で学んだのは、まずは条件分岐(if, switch)、繰り返し(for)、breakによるループの抜け出しなどについて。Goならではの特徴についてもわかりやすく説明され、質問もたくさん寄せられてました。
続いて、構造体と型の定義、関数などについての解説が行われた後、STEP03の課題に取り組みます。
Goハンズオン「STEP04: 複数データの記録」
STEP04で学ぶのは、複数のデータを記録するために必要な配列とスライスについて。それぞれのデータ構造、初期化、操作など説明後、課題に取り組みます。
Goハンズオン「STEP05: データベースへの記録」
STEP05では、データベースへの記録。パッケージの種類や標準パッケージ以外のサードパーティパッケージ(ライブラリ)のインポートや活用法、機能などについて学びます。
続いて、GOPATHの設定やライブラリのバージョン管理、エラー処理、データベースへの接続とSQLの実行などについて講義が行われました。
STEP05の課題では、講師への質問や相談などがたくさん寄せられ、参加者の皆さんの意欲の高さが感じられました。
Goハンズオン「STEP06: 品目ごとの集計」
STEP6では品目ごとの集計をする関数などについて説明を受け、課題に取り組みました。
一日目の最後は、参加者の皆さんにそれぞれ感想や二日目に向けた意気込みを語っていただきました。今回は初めてGoに触る人がほとんどで多少苦戦したものの、講師である上田さんの説明と資料が丁寧でわかりやすかった、今後の仕事でも活かしたいといった声が寄せられました。
一日目のハンズオン終了後は、参加者の皆さんと講師の上田さん、主催の仙台市役所の荒木田さん・佐藤さん、TECH PLAY 運営事務局・スタッフを交えての懇親会が開催されました。
主催者である仙台市役所の荒木田理さんの音頭で、乾杯!
講師の上田さんを囲んで談笑したり、TECH PLAYイベントスタッフの呼びかけで、仙台にGoコミュニティを設立しようという話も盛り上がりました。
Goハンズオン「STEP07: ブラッシュアップ」
二日目はブラッシュアップと題して、ポインタやメソッドについての講義から始まりました。ポインタのメリットや他言語との違い、変数の概念、メソッドに関連付けられた変数であるレシーバやその型、変更する方法や入出力とコマンドラインツールなどがわかりやすく説明されました。
STEP07:ブラッシュアップの課題に取り組みます。
Goハンズオン「STEP08: 一覧ページの作成」
STEP08は、Webアプリケーションのサーバーとクライアントのやりとりや、HTTPサーバーの作成の流れなどを説明後、HTTPサーバーを起動してブラウザでアクセスし、HTTPハンドラを動かしてみます。また、html/templateの使い方やGo標準のテンプレートエンジン、よく使うテンプレートの記法などについても学びました。
そしてSTEP08の課題、一覧ページの作成に取り組みました。
二日目午前中のハンズオンはここまで。事務局で用意したお弁当でランチ休憩です!
Goハンズオン「STEP09: 入力ページの作成」
午後のハンズオンはSTEP08の課題に引き続き、取り組むところから開始されました。
STEP09の課題テーマは、入力ページの作成。データの一覧を表示させるListHandlerとそのデータを保存してリダイレクトするSaveHandlerの役割や投稿の流れ、HTMLのFormタグを用いた投稿フォームのプログラムの書き方、HTTPリクエストの取得などについて取り組みました。
Goハンズオン「STEP10: 集計ページの作成」
STEP10では、グラフ(チャート)を簡単に書くためのAPI「Google Chart API」に取り組みました。
GoでWebアプリを作る一連の基礎知識を学び、プログラミングの体験をしたところで、テンプレートのWebアプリを改造してみようという課題が最後に出されました。
例えば、テンプレートファイルのパーツを書き変える、データの更新プログラムの追加、アイテムの構造を変える、csvデータの書き出しなどのアイデアなどなど…。ラスト1時間はこれまでの課題をこなしながら、各自で考えたアイデアで改造にチャレンジします。
それぞれのアイデアについて、講師の上田さんに意見やアドバイスを求めたり、アプリの仕様について積極的に相談する参加者の方も多く、改造タイムを皆さん楽しんでいるようでした。
二日間のワークショップを終えての感想
1時間の改造タイム終了後に、参加者の皆さんから二日間のワークショップを終えての感想を述べていただきました。
「初めてGoに触ったが、楽しく学べたので今後も続けて学んでいきたい」
「新しい言語を学ぶのは楽しかった」
「講師の上田さんに熱心に教えていただいて感謝している」
「スライドの復習だけでなく、自分でGoが書けるようにしていきたい」
「最後にたくさんやりたいことが出てきたので、続けて勉強していきたい」
「自分の業務に活かしていきたい」
「GoでRaspberryPiのアプリを作ってみようと思っている」
「仙台でもGoのコミュニティを盛り上げていきたい」
二日間講師を務めていただいた上田さんからは、「二日間でかなり濃い内容のワークショップを体験してもらったので、これをきっかけに皆さんもいろいろ作ってみてほしいと思います。ぜひ仙台でもGoを盛り上げてほしいです」とメッセージをいただきました。
さらに、主催の仙台市役所の荒木田さんやTECH PLAY 運営事務局からも「ぜひ仙台でもGoのコミュニティを立ち上げましょう」と呼びかけたところ、Goを続けたいと思った人、参加したいと思う人、運営を手伝ってもいいという人に続々と手を挙げていただきました。
▲仙台市産業政策部産業振興課 荒木田理さん
参加してみたいと思った方は、ぜひ、仙台市のグループをチェックしてみてくださいね。