エンジニア プログラミング

【テックエキスパート】プログラミングスクールのチーム開発で身につくスキルやエンジニア転職のアピールポイント〜TECH::EXPERT 60日後 体験記〜

更新日:

どうも、てぃかしです。テックエキスパートの60日後の経過報告です。

------------------------------
〜最大2万円OFF!&無料相談キャンペーン〜
てぃかしの紹介でTECH::EXPERTを受講される方で、無料カウンセリング前にご連絡いただいた場合、受講料が1万円OFFとなります。無料カウンセリング当日のお申し込みの場合は、さらに1万円OFFとなり、合計2万円OFFとなります。TECH::CAMPを受講される方は受講料が5%OFFとなります。詳細は本記事の最後に記載しています。
------------------------------

今回は、60日で学んだこと、特にチーム開発について書いていきます。

この記事を読めば、初心者の方でもチーム開発がどんな感じで進められるのかを理解することができます。

※本記事の内容は2019年11月中旬にYouTubeで公開した内容とほぼ同じです。

今回の内容は下記の通りです。

チーム開発で得られるもの

チーム開発を経験することで、今後の仕事に活かすことができ、就職、転職を考えている人は、その経験はアピールポイントの一つになります。

テックエキスパートのチーム開発の目的は3つあります。

①ポートフォリオを作成するため

ポートフォリオは制作物を他人に見せることができるツールですが、それは就職でも、フリーランス活動でも技術力を示すものとなります。

②チーム開発の経験を積むため

一人の時は好き勝手に開発をして、Githubも好き勝手使ってましたが、チーム開発では使い方を間違えれば、チームに迷惑がかかります。

組織で開発をする人は必須の経験だと言えます。

③困難に立ち向かう経験をするため

当たり前のことですが、いざわからない問題が出てくると逃げ出したくなります。

それを乗り越えると、自分ってやればできるじゃんという自信に繋がって、次、そういう逃げ出したくなるような問題が出てきても今回も大丈夫だと思えます。

良い質問の仕方

良い質問

質問の仕方も気をつけなければいけません。

メンターに質問するときもそうですが、チームの誰かに質問、相談するときは、自分が今直面している問題をわかりやすく言語化して、伝えなければいけません。

ただ、「エラーが出た、見て」と言われても、今どういう状況かをヒアリングする必要があります。

具体的にどのように質問するかは、フォーマットに文章にまとめてから相手に質問すると良いです。

■解決したいこと

エラー文や、今起こっているトラブルを端的に書く

■自力で調べた内容

検索エンジンを用いた際の検索ワードについてや読んだ記事のリンクを書く

■仮説と検証作業の結果

検索して得た情報から立てた仮説と、その検証作業による結果を書く

自分の状況を説明して、自力でどんなことをしたかを伝えればいいです。このフォーマットはどの仕事でも通用するものだと思います。

チームの時間は自分の時間でもあります。下手な質問で時間を無駄にしないように時間は大切に使いましょう。

アジャイル開発

アジャイル開発というのは、一度にまとめてでは無く、少しずつ確認をはさみながら開発を進めていくことが特徴です。

利用者の反応や、関係者からの継続的なレビューを得ながら、計画を調整しつつ進めていきます。

今回は、4週間を1週間ごとの期間に区切って、ミーティング、レビュー、反省などを行なっていきます。

アジャイル開発におけるその期間、周期のことを「スプリント」といって、

スプリントごとのミーティングを、スプリント計画ミーティングといって、具体的にどれくらい時間がかかるかを見積もったり、作業は何をもって完了とするかを合意することが目的です。

スプリントごとのレビューをスプリントレビューといって、スプリント計画ミーティングで決めたカードの「完了の定義」を確認します。今回はプロダクトオーナである、メンターにレビューしてもらいます。

そのレビューの後に、反省や施策の共有する場を、「スプリントレトロスペクティブ」 と言ったりします。

ウォーターフォール開発

今回のテックエキスパートでのチーム開発では行いませんが、アジャイル開発に対して、ウォーターフォール開発というのもあります。

初めに決めた要件を、ある期限までに完了するという手法です。

アジャイル開発とウォーターフォール開発のメリット、デメリットをまとめるとこんな感じです。

アジャイル ウォーターフォール
メリット 修正が簡単で仕様変更に柔軟に対応可能 開発計画がシンプルかつ、進捗の管理がしやすい
デメリット 進捗が把握しにくい 仕様変更に対応しにくい

スクラム

スクラム

続いて、チーム開発を語る上で外せない、スクラムについて話します。

スクラムは、チーム開発を進めるための手法の1つです。リーダー・マネージャー主体ではなく、チームメンバー全員が主体性をもって、プロダクト完成に向けた責任を持つことが特徴です。

スクラムの流れ

スクラムの流れは大まかにこんな感じです。

(1)アプリケーションの要件を決定

依頼者からヒアリングをして、どのようなアプリケーションを作成するのか決める。アジャイル開発においても大枠の要件定義は必須。

(2)開発の意図を、開発する人々が完全に把握する

何を達成するためにそのプロダクトを作るのかを把握する。目的と矛盾する機能や優先順位付けは排除することが求められるため、開発メンバー全員がこれを理解していることが重要。

(3)実装すべき作業を洗い出す

完成までに行うべき作業を洗いだすリスト化しておく

(4)作業の量を見積もる

上記作業のそれぞれにおける作業量を見積もる

(5)スプリントごとに実装する

スプリントの期間を設定し、スプリント開始時にスプリント計画ミーティングを行う

(6)スプリントの成果を発表する

スプリント計画で定めた実装が計画通りに終えられたかどうかチェックをする

(7)振り返りを行う

次の期間でより早く進めるための対策を立てる

以上です。

スクラムの役割

そして、スクラムにはこんな役割があり、今回はスクラムマスターを1人決めて、進めていきます。

ちなみに一応、経験させていただきました。

  • プロダクトオーナー:プロダクトバックログの管理責任者
  • スクラムマスター:スクラムの調整役
  • 開発チームメンバー:実際に開発に携わる

このスクラムで、毎日、スプリントでやると決めた範囲が本当に終わるかを精査する場を設けます。

これを「デイリースクラム」と呼びます。

モダンなIT企業で多用される便利ツール

続いて、チーム開発を円滑に進める上で便利なツールについて話します。

Slack

slack

便利なチームコミュニケーションツールです。このSlackを用いてコミュニケーションを図る企業も多いです。

今回は、チーム開発におけるコミュニケーションやGitHubの通知を受け取るためにチャンネルを作成します。

Trello

trello

Trelloとはタスク管理ツールです。

掲示板のような「ボード」と呼ばれるものの中に「リスト」という単位で各タスクを収納することができ、各タスクはリスト間を簡単に移動させることができます。アジャイル開発のタスクの管理をすることが可能です。

実際に画面を見てみましょう。

Trelloのボードにあるカードには例えば、こんなことを記載します。

トレロ

trelloの準備ができたら、

メンバー間でアプリの雛形を共有します。具体的には下記のようなことをします。

  • 代表者一名がrails new(※)をして新規アプリケーションを立ち上げ
  • アプリケーションをGitの管理下に置いて、それをメンバーがコピーする

あとは先に書いた、アジャイル開発、スクラムの方法に乗っ取って開発を進めていきますが、その過程でコードレビューをする場面が出てきます。

※ rails new・・・railsプロジェクトを作成する時に使うコマンド

コードレビュー

最終課題では、

チーム内で相互にコードレビューを行う

→メンターにコードレビューを依頼する

の流れでレビューを行っていきます。

コードレビューとは、コードの誤りを検出・修正したり、コードの質を上げるためにソースコードの検査を行う作業のことです。

レビューと聞くと少し面倒と思う人もいるかもしれませんが、他人が書いたコードを読むのも勉強のうちだと思います。

コードレビューをする機会があればぜひ積極的に取り組むのが良いと思います。

実際にどういう流れでコードレビューをしていくかというと、こんな感じです。

  1. 依頼する人は、プルリクエストを作成する
  2. 依頼する人は、チャットなどでレビュアーに依頼を出す
  3. 依頼された人はレビューをする
  4. 依頼した人は、レビューに基づき修正を行う
  5. チーム内で合意がとれたら、依頼した人がマージをする

プルリクエストとは簡単に書くと、Githubで開発者のローカルでの変更を他の開発者に通知することです。

マージは、ものすごく簡単に書くと、追記や編集した内容をみんなが参照している大元のプログラムに更新することです。

コード解析ツール

あと、コードレビューを助けてくれる自動ツールもあります。

どんなツールがあるか、ちょっと紹介すると、

Rubocop(ルボコップ)はRubyの(静的)コード解析ツールです。

RuboCop

「インデントが揃っていない」 「無駄な改行・スペースがある」などの指摘をRubyStyleGuideに基づいて行ってくれます。

EslintはJavascriptの静的コード解析ツールです。

Eslint

Javascriptで書かれたコードを解析し、明らかなバグ・不適切なコーディングスタイルを指摘してくれます。

Siderはコードレビューツールを一括で導入できるサービスです。

Sider

Ruby、Javascript、Python、Goなど幅広い言語に対応しています。

SiderはGithubのリポジトリ毎に導入することができ、プルリクエストが作成されると自動でコードレビューを行ってくれます。

次回予告〜卒業後の進路について〜

次回で、チーム開発が終了し、学習が完了します。テックエキスパートのサポートは続きますが、卒業後、どういった進路に進むかを決めなければいけません。

どんな進路があるのか?

次回の記事で書いていきます。

今回はここまで。次回は70日後の経過報告です。お楽しみに!

動画でご覧になりたい方は、ぜひYouTubeの方もチェックしてください。

〜最大2万円OFF!&無料相談キャンペーン〜
てぃかしの紹介でTECH::EXPERTを受講される方で、無料カウンセリング前にご連絡いただいた場合、受講料が1万円OFFとなります。無料カウンセリング当日のお申し込みの場合は、さらに1万円OFFとなり、合計2万円OFFとなります。TECH::CAMPを受講される方は受講料が5%OFFとなります。又、私の紹介で受講決定された方限定で受講最初(2週間)悩むことがあれば、LINE@で相談乗ります。
TECH::EXPERT、TECH::CAMPのどちらかを受講をお考えの方は下記のいずれかの連絡先に、「受講コース」、「フルネーム」、「受講地域」をご連絡ください。

LINEでのご連絡は下記をタップしてください。
友だち追加
LINE ID検索はこちら→ @rfh1332u (@も入れて検索してください)

TwitterのDMでもOKです。
Twitter→ https://twitter.com/engineer_sakai

お申込み後にご連絡頂いた場合、割引が適用できない場合があります。必ず無料カウンセリングお申込み前にご連絡ください。

YouTubeでも役立つ情報を配信しています!

ボタンをクリックしてチャンネル登録お願いします!

-エンジニア, プログラミング
-, , , , , , ,

Copyright© てぃかしのブログ , 2020 All Rights Reserved Powered by AFFINGER5.