
未経験エンジニアにGitとGitHubは必修項目
今回は、転職活動を通して感じたGitとGitHubについて、企業側が未経験者に対して求めていることと簡単な知識についてまとめていきます。
自分と同じようにエンジニア転職を考えている人の参考になればと思います。
企業が未経験に求めているレベル
これはひとえに未経験といっても、未経験の中にもレベルがあると思うので、自社開発企業や上流工程、比較的大きな案件の開発に携わり、エンジニアとしてのキャリアを第一に考えている人向けのお話にしたいと思います(生意気にも自分がそうであるため)。
GitHubアカウントは作っておく
自分の場合は、ほとんどの企業でGitHubアカウントは持っていて当然といったテンション間で話が進みました。中には、コーディング試験が行われる企業もあり、GitHubで招待されて行うこともありました。
また、ポートフォリオを提出する企業もほとんどなので、そのソースコードをGitHubにあげておくことも必要でしょう。
PullPequestはできるようにする
基本はチーム開発になるでしょう。そこで先輩方やメンターにコードレビューをしてもらうことも当然にあると思います。そこで必要になるのがやはり、GitHub。GitHubをもちいたチーム開発はどの企業も行っていると感じましたし、実際に取り入れているでしょう。
入社後にある程度、開発に携わりたいと思っているならばPullRequestはできいた方がいいと思いました。できた方がいいというよりは、できていて当然と思われていると感じました。
基本的なGitコマンド
Gitを操作するうえで必要な基本的なコマンドをまとめます。
ちなみに自分がGitについて学習した参考書はこちらになります。
主にはGitHubの扱い方の技術書になりますが、Gitについても簡単に解説されています。実際に操作しながら学習できるので、初心者にはお勧めです。
git init
リポジトリを初期化するコマンドです。
git initでリポジトリを初期化することで、プロジェクトファイルにローカルリポジトリを作成することで、Gitを用いた管理を行うことができるようになります。
また、git initを実行すると新たに.gitディレクトリが作成されます。このディレクトリにリポジトリデータが格納されていきます。
git status
リポジトリの状態を確認するコマンドです。
現在のブランチの位置や、コミットの状態などを確認することができます。
Gitを直接操作するコマンドではありませんが、開発を進めていると現在の状態がわからくなるので、git statusで状態を確認しながら開発を進めるといいでしょう。
git add ファイル名
作成したファイルや変更したファイルをステージ領域に登録するコマンドです。
ただファイルを作成したり変更したりしただけではリポジトリに登録されません。なので、変更内容を登録するコマンドを実行する必要があります。
git addコマンドはその登録の準備をするコマンドです。ステージ領域といわれる場所に登録したいファイルをセットします。そのセットされたファイルを登録するのですが、そのセットに当たるコマンドがgit addコマンドです。
git commit -m 'コミットメッセージ'
ステージ領域にセットされているファイルをリポジトリに登録するコマンドです。
git commitを実行するといよいよリポジトリに変更内容が記録されます。コミットもとにファイルを復元(過去のコミットの段階に戻る)したりすることができるようになります。
また、コミットする際はコミットメッセージを記述します。そうすることで、そのコミットがどのような変更を行ったのかがわかるようになります。
git branch
ブランチの一覧表示と現在のブランチを確認するコマンドです。
ブランチとは別々の作業を並行して行うためにリポジトリを枝分かれさせたものです。メインのブランチで都度ファイルを追加したり変更していると、問題なく動作していたプロジェクトも予期せぬエラーが出たり、意図していない仕様変更などが起きてしまう可能性があります。
なので、メインのブランチは別のブランチを作成して作業を行うことでより安全に作業を行うことができるわけです。
以上のような理由で、ブランチというものはGitを用いた開発においてとても重要になります。そのブランチを確認するコマンドがgit branchコマンドになります。
git checkout ブランチ名
現在のブランチから指定したブランチに切り替えるコマンドです。
git checkout -b ブランチ名というように -b をつけて実行すると新たにブランチを作成して切り替えることができます。
git merge ブランチ名
現在のブランチに別のブランチの内容を反映させるコマンドです。
git merge --no-ff ブランチ名というように --no-ff をつけて実行すると強制的にマージコミットを作成することができます。簡単に言うと、しっかりとブランチを分岐させたままマージを行い履歴を見やすくするということです。
git remote add origin リモートリポジトリ名
GitHubで作成したリポジトリをローカルリポジトリのリモートリポジトリとして登録するコマンドです。
originというのはリモートリポジトリを指定する識別子(ラベル)で、以後originでリモートリポジトリを指定することができるようになります。
git push origin ブランチ名
現在のローカルリポジトリの内容をリモートリポジトリに送信するコマンドです。
指定したリポジトリ名がリモートリポジトリに存在しない場合は、リモートリポジトリに新たにブランチを作成して送信を行います。
リモートリポジトリにpushを行う場合はメインのブランチに送信するのではく別のブランチにpushするようにしましょう。
git clone リモートリポジトリ名
リモートリポジトリを取得するコマンドです。
リモートリポジトリ名にはGitHubで作成したリポジトリのURL、またはSSHキーを指定します。
cloneした後はリモートリポジトリをoriginで指定できるように自動で設定されます。
git pull origin ブランチ名
リモートリポジトリのブランチの最新のデータを取得するコマンドです。
後述するPullRequestを送り、マージされた場合にメインのブランチを最新の状態に更新したり、他者が更新した内容をリモートリポジトリから取得する際に使用します。
PullRequestについて
チーム開発をする上では必須の項目です。PullRequestとは自分が作成したり変更した内容をメインのブランチにマージしてもらうために送るリクエストのことです。
どんなエンジニアであろうとこのPullRequestは活用するものです。逆に言えば、未経験の人であってもこれができなければいけないものであり、できないのであればチームに参画させられないというのが未経験を採用する側の気持ちでしょう。
PullRequestを送る流れ
簡単に流れをまとめておきます。
まだプロジェクトファイルを作成していない場合は、リモートリポジトリをcloneします。ここで使うコマンドが git clone コマンドです。
作業用ブランチ(トピックブランチ)を作成して移動します。ここで使うコマンドが git checkout -b コマンドです。作成したブランチで作業を行います。
変更内容をリモートリポジトリに送信します。ここで使うコマンドがまず、 git add コマンドです。git add で更新するファイルをステージ領域にセットします。次に、git commit コマンドです。ステージ領域にセットされたファイルをリポジトリに登録します。最後に、git push origin ブランチ名 でコミットした内容をリモートリポジトリに送信します。ここで指定するブランチ名はトピックブランチと同じ名前にします。リモートリポジトリにそのブランチが存在しなくても自動で作成されるので、pushされた内容がどのブランチで作業されたものかわかるために同じブランチ名にします。
ここからGitHubを開きリポジトリを開きます。リポジトリを確認するとトピックブランチが作成され送信した内容が反映されていることが確認できます。このブランチをメインのブランチにマージしてもらうためのリクエストを送ることができるようになっています。これがPullRequestです。
まだ修正の余地がある場合は3の手順をもう一度踏むことで変更内容を更新することができます。一度PullRequestを送っている場合は、同じブランチ内での変更は同じPullRequest内で更新されるため再びPullRequestを送る必要はありません。
簡単ではありますが、これがPullRequestを送るまでの流れになります。
最後に
今回は、自分が転職活動を通してGit、GitHubについて感じた必要な知識をまとめてみました。GitHubはチーム開発では必須になるので未経験の人も必ず求められるものだと感じました。
また、GitHubアカウントを持っているだけでなく、しっかりとGitを使いこなしPullRequestを送るまでが最低限の知識であるとも感じました。できれば、PullPequestを送った後に起こるコンフリクトも解消できればより知見があると認識してもらえると思います。
GitHubでリポジトリを作成してclone,commit,push,PullRequest,コンフリクト解消までは個人で練習できるのでぜひ学習することをお勧めします。
自分と同じように未経験からエンジニア転職を考えている人へ何かの参考になれば幸いです。
最後までご愛読いただきありがとうございました。