派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【連載】第4回 「エンジニアとしてこのさき生きのこる」ためのコラム

第4回 開発者のスキルとしてのGitとGitHub

こんにちは。「エンジニアとしてこの先生さきいきのこるためのコラム」の第4回へようこそ。
この連載では、エンジニアのみなさんがエンジニアとしてこの先生さきいきのこり、エンジニアとしてのキャリアを深めていくために不可欠な「スキルを磨く」取り組みをご紹介していきます。どうぞお楽しみに。

過去の記事はこちら↓

f:id:itstaffing:20160318180226j:plain

【講 師】
塩谷 啓(しおや ひろむ)さん

株式会社ドワンゴ所属、エンジニア兼採用担当、運営母体のひとつであるドワンゴのネット高校の一年生。中途採用する側・される側の両面から、エンジニアとしての生存戦略について考えている。 共著「Web制作者のためのGitHubの教科書」(インプレス)

開発ツールとしてのGitとGitHub

GitとGitHubについては、第3回の記事で一次情報に触れるためのツールとして紹介しています。

GitとGitHub、どちらも「企業内部で業務ツールとしての利用が増えている」ということがポイントです。つまり、転職したり新しい現場に参画したりすると、「バージョン管理はGitで、リポジトリ管理とコードレビューはGitHubで行っています。」と言われる可能性が高まってきているのです。

実際、筆者もここ数年コードを書く仕事をするときは、ほとんどがGit / GitHubを使う環境でした。

スキルのコモディティ化による「強み」から「弱み」への変化

新しい考え方や手法、ツールなどは、アーリーアダプターとして初期段階から身につけていると、それが有用なものだとして広まったときに先行者利益としての「強み」を手に入れることができます。

やがてそのスキルがコモディティ化すると、使えるのが当たり前のような風潮になってきます。そうなると、そのスキルを身につけていることが「強み」なのではなく、身につけていないことが「弱み」になってしまうのです。

むやみに「新しい技術に飛びつくことがエンジニアの成長に不可欠だ」、などと言うつもりはありません。定番として広く使われる技術をじっくりと身につけ成果を出していくのも、エンジニアとして重要なスキルです。

しかし、現在進行形で注目を集めているスキルやツールについて情報収集するのも大事なことです。有用であり利用範囲が広がっているスキルやツールを身につけていく努力を怠ると、そのツールが支配力を獲得したとき、それを使えないこと自体が「弱み」となってしまうリスクは知っておきましょう。

f:id:itstaffing:2016112401:plain

使ってみよう、GitとGitHub

「弱み」「リスク」等少しおどかすような書き方になってしまいましたが、とはいえGitもGitHubも使い始めるのはそれほど難しくありません。

また、OSS開発に限らず、実際の開発業務においても導入されるケースが増えているので、今から使い方を覚えるという「投資」をしても無駄になる可能性は低いでしょう。

この連載では、毎回「やってみよう」と題して、その回のテーマに関連した「チャレンジしてほしいお題」を挙げています。今回はGitとGitHubを使い、「ソーシャルコーディング」の開発フローを簡易化したものをお題にしました。

まったくの未経験であっても、GitやGitHubの情報はインターネット上や雑誌・書籍で広く公開されています。少し検索すれば、入門記事にたどり着くのは簡単です。

この連載の第1回で説明した「編集された情報」に触れたい人のために、おすすめの書籍を紹介します。

★Git

・エンジニアのためのGitの教科書 実践で使える! バージョン管理とチーム開発手法
(WEB Engineer’s Books)
https://www.amazon.co.jp/dp/4798143669/
Gitの入門書としてだけではなくチームでどう使うかについても書かれ、実践的なスキルが身につく。

・開発効率をUPする Git逆引き入門
https://www.amazon.co.jp/dp/4863541465/
「逆引き」のタイトル通り、実現したい操作からコマンドを引くことができる。Gitに少し慣れたころに手元にあると習得がスムーズになる。

★GitHub

・GitHub実践入門 ~Pull Requestによる開発の変革(WEB+DB PRESS plus)
https://www.amazon.co.jp/dp/477416366X/
日本語で書かれた(おそらく)最初のGitHub入門書。現場でPull Requestベースの開発フローを実現する演習問題により、GitHubを用いた開発を体験できる。

・Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール
https://www.amazon.co.jp/dp/4844337009/
エンジニア以外の職種にもGitHubが使えるように書かれた平易な入門書。エンジニアにとってはごく基本的な内容だが、これから学ぶ方が第一歩を踏み出すためにはわかりやすい拙著を紹介させていただきました。

f:id:itstaffing:2016112402j:plain

やってみよう

簡単な例題として、FizzBuzzを実装してみましょう。

●仕様
・1~100までの数字をカウントアップしていく
・数字が3で割り切れる場合 Fizz と出力する
・数字が5で割り切れる場合 Buzz と出力する
・数字が3でも5でも割り切れる場合 FizzBuzz と出力する
・それ以外の数字はそのまま出力する

★Git
●ローカルで動く環境を整える
・手元のターミナルで git コマンドが動くようにセットアップしてみましょう。
・SourceTreeというGUIツールをインストールしてみましょう。
●リポジトリを作る
・git init コマンドを使い、 fizz_buzz というリポジトリを作成してみましょう。
●ファイルを追加してコミットする
・一番使い慣れた言語で、 FizzBuzz のうち Fizz を出力するコードを書いてみましょう。
・git add コマンドを使い、ソースコードをステージングエリアに追加してみましょう。
・git commit コマンドを使い、 add した変更をリポジトリにコミットしてみましょう。
●ブランチを生やす
・git branch コマンドを使い、 implement_buzz というブランチを作ってみましょう。
・先程のコードに FizzBuzz のうち Buzz を出力するコードを追加してみましょう。
・git add と git commit コマンドを使い、修正をコミットしてみましょう。
●マージする
・git checkout コマンドを使い、 master ブランチをチェックアウトしてみましょう。
・git merge コマンドを使い、 master ブランチに implement_buzz ブランチをマージしてみましょう。

★GitHub
●SSHで接続する
・RSA暗号のキーペアを作り、公開鍵をGitHubに登録してみましょう。
●リポジトリを作ってPUSH
・GitHubのWebサイトから、自分のアカウントに FizzBuzz リポジトリを作成してみましょう。
・git remote コマンドを使い、ローカルの fizz_buzz リポジトリにリモートサーバー origin を追加してみましょう。
・git push コマンドを使い、ローカルの master ブランチを origin にPUSHしてみましょう。
●ブランチを作成してpull-requestを作る
・ローカルで git branch コマンドを使い、complete_fizzbuzz というブランチを作ってみましょう。
・FizzBuzz を正しく出力できるようコードを修正し、git add と git commit してみましょう。
・git push コマンドを使い、リモートサーバーに complete_fizzbuzz ブランチをPUSHしてみましょう。
●pull-requestを作成してコードレビュー
・GitHub上でpull-requestを作成してみましょう。
・GitHub上の Commits タブから、 complete_fizzbuzz ブランチへのコミットが含まれていることを確認してみましょう。
・GitHub上の Files changed タブから、実際にコードに加えられた変更がdiff形式で表示されていることを確認してみましょう。
・変更された部分に、チームメンバーのコードレビューをしているつもりでコメントをしてみましょう。
●pull-requestをマージして master ブランチを更新
・GitHub上でマージボタンを押し、pull-requestの変更を master ブランチに取り込んでみましょう。
・ローカルの master ブランチをチェックアウトし、 git pull コマンドでリモートサーバーの更新を取り込んでみましょう。

まとめと次回予告

今回はGit、そしてGitHubが、OSSの開発でも必要とされる知識・技術になりつつある、というお話をしました。

Gitでバージョン管理されたコードを書き、それをGitHubで公開することは、エンジニアとしてスキルを磨くためにとてもよい振る舞いのひとつです。次回からは情報収集から一歩踏み出して、実際に技術を磨く「地力アップ」についてです。どうぞお楽しみに。

(編集後記)
今回は「一次情報に触れる場所」としてのGitHubを紹介しました。改めてGitHubでできることを整理すると、その便利さに驚きました。次回はGitHubの最大の魅力である「ソーシャルコーディング」と、それを通じたスキルアップについてです。お見逃しなく。