講義勉強会

2019.11.29

「GitHubを使ったチーム開発」最終回、第4回目の講義を行いました

  • 「GitHubを使ったチーム開発」最終回、第4回目の講義を行いました

2019年11月27日、山梨大学さまにおきまして弊社CTO清水が「GitHubを使ったチーム開発」をテーマとした講義の最終回である第4回目を行いました。工学部コンピュータ理工学科のITシステム開発実習の授業を受講する60名ほどの学生に向けたこの講義は、11月中の全4回。ここまでお伝えしてきたように、各回で学生たちの熱心な姿を見ることができ、講師としてもカリキュラムを変更し、改めて勉強をするなどより良い講義内容にできるよう努めてきました。

先週に引き続き寒空の広がる甲府では、12月もすぐそこに迫っていることが冷たい空気を通して感じられました。

常に高品質を保ち、開発をより楽にするための「自動化」をテーマに

最終回である今回の内容は、コードレビューの重要さを伝えることから始まり、それに関わるアプリケーションのテスト・継続的インテグレーション/継続的デリバリー(CI/CD)での自動化について講義を行いました。説明していく中で不足していると感じた部分は、資料の内容に加えて口頭で分かりやすく補うよう心掛けました。

まず、第一にメンバーからPull requestされたソースを、リーダー含めそれ以外のメンバーがコードレビューすることの重要性です。バグやエラーを早期発見したり、新たな問題が発生するのを防いだりするためにもコードレビューがしっかり機能していなければなりません。また、開発に関わっているメンバーがおのおの動作確認を行えば、変更の目的・アプリケーションの現状についての把握・共有にもつながります。

次に、そのコードレビューを少しでも楽に行うため、PythonのフレームワークであるDjangoを使い作成してきたアプリケーションのテストを行います。資料にも単体テストの例を提示し、テストコード作成について順を追って説明しました。

さらに、レビューの際に漏れなくテストを実行してもらえるように取り入れると有効なのが、継続的インテグレーション/継続的デリバリー(CI/CD)という開発工程全体(コンパイル・テスト・レポーティング等)を自動的に何度も繰り返す手法です。

前述のテストを手動ではなく、自動で行えるようになるとコードレビューはまた一段と楽になります。加えて、常に他にも不具合がないかを確認することができ、品質の高いアプリケーションの開発へとつながります。本番環境へのリリースについても、自動化によってミスを減らせるようになると考えられます。

そんなCI/CDのためのツールは、Jenkins, CircleCI, GitLab, TravisCI, GitHub Actionsなど多く存在します。今回は、GitHubをテーマにしていることもあり学生たちにはGitHub Actionsの使い方をレクチャーしました。CI/CDを取り入れた上でリモートリポジトリへのPushをすると、GitHub上の実行環境で Django環境が構築され、アプリケーションのテストが実行されるようになります。このGitHub Actionsに対しては、設定例を示したこともあり、興味を持って試してくれているチームも多かったです。

最後ということで名残惜しくもありましたが、この授業に限らず今後も活きる知識を伝えることができ、よい回となりました。一番伝えたかったメッセージは、この一連の手法で「自動化することで楽をしよう。さらに高い品質を常に保とう」ということであり、学生たちに真剣に聞いてもらえたのがよかったと感じています。単体テストやGitHub Actionsの設定例を予め用意し、具体的に自動化の流れを明示したことでCI/CDのメリットが充分に伝わったと感じています。

今回も講義終了後、1時間30分ほど同じ教室に残って質問に回答する時間を作りました。「課題のこの点はどういうことですか?」といった質問が多く、課題の完成形において何を要求されているかが資料だけでは明確に伝えきれていなかったことを実感します。また来年機会があった際、課題の出し方については再度検討したいです。

全4回の講義を終えて

先行科目では一人で開発を行っていた学生が、今回のITシステム開発実習においてチーム開発を進めている今回の授業。PBL(Problem Based Learning)の原則に則り、講義全体を通してチームで問題を発見し解決していく能力を身につけられるようにしました。Gitの活用の有効性やテスト自動化の仕組みといったチーム開発のための学びに付随し、コミュニケーションの重要性やチーム開発の楽しさも見出すことができていたらまた嬉しく思います。

現在、各チームのPull requestを見てると、GitHubの機能を活用するために色々と試しているチームもあり面白いです。各チームの課題の完成を楽しみにするとともに、今後この学びを活用していく学生たちの開発がさらに良いものとなるよう、心から願っています。