Pythonのプログラミング研修に参加しました!
- 2021年12月9日
- by SendGrid
- Category: イベント・セミナー
新人の金・中田です。SendGridチームに配属されてから4ヶ月が経ちました。
今回は先日受講したPythonのプログラミング研修を紹介したいと思います。
私たちはプログラミング未経験ですが、サービスに対する理解を深め、お客様にサポートを提供するためには、開発や技術的な知識が必要不可欠です。そのため、今回の研修に参加しました。
研修内容
株式会社カサレアル様に2回(全9日間)のプログラミング研修を開催していただきました。1回目はPythonの基礎を学び、2回目は実際に開発を体験しました。
プログラミング研修1回目(2021年8月)
4日間で行われた1回目の研修テーマは、「Git・Python入門」でした。
Git入門
最初の2日間はGitの使い方を学びました。Gitの概要から環境構築の進め方、Gitコマンドを使った変更作業といった基礎的な内容がメインです。レクチャでは、以下のことが網羅されていました。
- Gitの仕組みや用語
- GitのインストールとVisual Studio Codeでのセットアップ
- リポジトリの初期化や変更のコミット、プッシュとプル、マージなどの基本操作
- チームで利用する際の操作方法や、エラーの対処方法
今でも印象に残っていることは、コンフリクトを予防するために、メンバ同士で声がけし合う大切さです。複数のメンバで同じファイルを編集しプッシュすると、反映の際にエラーが生じてしまいます。これを避けるためには、誰がどのファイルを編集するかや、プッシュするタイミングを報告し合わなければなりません。コンフリクトが発生しても、どのメンバのコードを反映させれば良いかコンピュータは判断できないため、コミュニケーションが欠かせないと実感しました。
Python入門
残り2日間で行われたPython入門では、基本的なコードの書き方、ライブラリの利用方法などを教わりました。主な講義内容は以下の通りです。
- Pythonの特長
- 変数やデータ型、関数、ライブラリの使い方、仮想環境の作成方法など
- クラス、インスタンス、オブジェクト指向の考え方
print(‘hello’)から始まり、条件分岐や繰り返しなどの基本文法を学んだ後は、グループに分かれて問題演習を行いました。課題を自分の力で問き、学んだことを一つ一つ反復していきました。ハンズオンでは理解できたと思っても、自分でコードを書くとなるとどうすればよいかわからず苦戦したのを覚えています。自力でコードが書けるようになるには、動作の裏側にある仕組みを理解し、目的までのステップを細かく切り分け整理していく力を身に着ける必要があると感じました。
プログラミング研修2回目(2021年10月)
1回目の研修でGitとPythonの基礎を学びました。その実践の場として、2回目の研修ではWebアプリケーションフレームワークのFlaskを使用した開発に取り組みました。
全5日間の研修内容は、Flaskの機能(ブループリント、セッションなど)を学ぶ座学とチームでの開発ワークです。システム開発の基本的な流れを知ることを目標として研修に参加しました。
Flaskの座学
最初の2日間はWebアプリケーションの開発に必要となるFlaskの理解を深めました。以下の基本的な機能をハンズオン形式で学びました。
- ビュー関数
- Jinja2テンプレート
- ブループリント
- キーバリューストアへのアクセス
Flask独自のテンプレートの書き方やデコレータの使い方に最初は戸惑いましたが、実際にコードを書きながら学習し、コツを掴んでいきました。当然のことですが、Flaskを使うためにはPythonの基本文法を理解している必要があり、これまでの学習成果を試すことができました。
チーム開発
残りの3日間で行われた研修のテーマは「書籍販売用ECサイトの開発」です。注文履歴を日時順に一覧表示するなど、特定の要件を満たすことを必須として、チームで自由に実装します。今回は2つのチームに分かれて開発に取り組みました。
グループワークでは
- 必要な機能の洗い出し
- 画面デザインや遷移の検討
- 画面間のデータ受け渡し方法の定義
についてブレーンストーミングやマッピングを交えながら進めていきました。
実装フェーズではチーム内で役割分担を決め、積極的にコミュニケーションを図って進捗を共有しながら開発を行いました。
最も苦労した点は、PythonスクリプトとHTMLテンプレートを連携させる変数の決め方や書き方の共通認識を持つことです。Flaskでは、Pythonスクリプト内で定義された変数を参照してHTMLを動的にレンダリングできます。複数のPythonスクリプトやHTMLテンプレートで共通の変数を用いる場合、変数名やデータ型などの情報をチーム内で事前に共有することが重要です。共有が不十分なまま作業を進めると、それぞれが担当したファイルを統合する時に修正作業が発生し時間をロスします。詳細設計をどれだけ具体的にできるかが全体の作業時間にも影響を与えるため、効率的に開発を進めていく難しさを実感しました。
成果発表
研修の最終日には、各チームが作成したアプリケーションを実際に操作しながら顧客要件の達成度やオプション機能、開発を進める上で工夫した点を発表しました。
データ構造の考え方やコードの書き方などの技術的な内容だけでなく、チームでの開発の進め方やコミュニケーションの重要性も学ぶ貴重な時間となりました。また、他チームの成果物や開発の進め方を知り、良い刺激になりました!
プログラミング研修を終えて
研修後も、時間が足らず未実装となっていた一部機能を完成させるために、定期的に集まりグループワークに取り組んでいます。また、プログラミングに慣れるために、先輩から課題をもらって日々チャレンジしています。SendGridとPythonの連携について紹介している以下のブログは、我々新人も復習のために参照しています。プログラミング勉強中の方には特におすすめなので、ぜひ読んでみてください。
- SendGrid 新人成長記 第五回 Event Webhookを用いてイベントログを見る
- Event WebhookをHerokuで受けてSlackに通知する
- Python,Flask,Twilio SendGridを使ってメールを受信する方法
今回の研修では、プログラミングの基礎的な考え方を学ぶことができ、着実に理解しながら実際の開発を経験できました。また、自分でプログラムを書いたことで、「システムを作る側」の視点に立って物事を見るようになりました。
これからも皆様の力になれるように、学び続けていきます。今後ともどうぞよろしくお願いいたします!