【GitHub】個人学習をGitHubでレベルアップさせる話

# はじめに

ご覧いただきありがとうございます。[Gon](https://github.com/mnengineer)です！

巷では、GitやGitHubに関する話が話題ですね。

エンジニアでGitを触ったことない人は本当に「やばい」のか？

そんなことは知りません。

Gitでのバージョン管理やGitHubの運用方法については、既に多くの記事で解説されているので、ここでは触れずにいこうと思います。

今回の記事では、普段の学習に[『GitHub』](https://github.co.jp/)を取り入れたことで、日々の学習がより楽しく継続できるようになり、結果としてスキルアップできた実体験についてシェアしていきます。

皆さんのエンジニアライフに、少しでも良いキッカケになれば嬉しいです。

:::note info
**【これからGitを学ぶ方におすすめの教材📗】**

インプット学習は、山浦さんのこの教材一つで十分だと思います。

・[Udemy：もう怖くないGit！チーム開発で必要なGitを完全マスター](https://www.udemy.com/share/101WYW3@t_75fD9wxxeCJXs7psJqwLEC-mPvPpNA7eLWbXgeax2jcWBkV-Lx4I6nyzOM8wYtvQ==/)

全部で5.5時間のハンズオン教材で、Gitの基礎から実践的な使い方まで網羅されてます。1日で一通り学習すれば、Gitに対する不安や苦手意識はかなり解消されると思います👍
:::

# GitHubを活用した方が良い理由

まずは、こちらの動画をご覧ください。

<iframe width="560" height="315" src="https://www.youtube.com/embed/pBy1zgt0XPc?si=ZVUjYK3koYs71JAO" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

正直、意味は分かりません。

アニメーションが凄すぎて話が入ってきませんでした。

要約すると、こんな感じです。
> GitHubは世界最大のソフトウェア開発プラットフォームです。1億人以上の開発者が集まり、コードの作成、共有、改善を行っています。単なるコード保管庫ではなく、プロジェクト管理、コードレビュー、継続的インテグレーション/デリバリー（CI/CD）など、開発に必要な多くの機能を提供しています。オープンソースプロジェクトのハブとしても機能し、世界中の開発者が協力して革新的なソフトウェアを生み出しています。大企業からスタートアップまで、GitHubは現代のソフトウェア開発になくてはならない存在となっています。

このようなコメントもありました。
![](https://storage.googleapis.com/zenn-user-upload/0a9440c6fa50-20240904.png)
> GitHub は、世界で唯一と言っていいほど実用的なソーシャルネットワークだと言えるでしょう。

伝えたいのは、

**現代のソフトウェア開発者**にとって、GitHubを活用することは、もはや選択肢というよりも必須になっているということです。

活用しない理由はないですよね？

今回は、GitHubが単なるコード管理ツールではなく、自己成長や自己アピールの場としても機能するということをお伝えできたらなと思います。

# 伝えたいこと
皆さん、こんな悩みを抱えたことはないですか？

- 自分のスキルが本当に向上しているのか不安
- 普段の勉強はインプットだけで終わってる
- ただ、漫然と経験年数を重ねているだけのような気がする。
- 今までなにをしてきたんだろう
- 資格や職歴以外に自分の実力をアピールする手段がない

安心してください。
全てGithubが解決してくれます。

一言で言えば『**自分の成長を可視化してくれる最強のツール**』です。

普段のあらゆる学習でインプットした内容をGitHubにアウトプットして残していけば、それが資産になり、自分の精神安定剤にもなります。

詳細については後で解説しますが、

GitHubをアウトプットの場とすることで、**インプット → アウトプット → 評価 → 改善**という成長する上での最高の循環が生まれます。

これまで積み上げてきたアウトプットを見て自信と今後の学習意欲に繋がるだけでなく、エンジニアとしてのキャリアを歩む上で、自分のスキルを効果的にアピールする手段にもなります。

『**GitHubアカウントを最強に育てていく**』

この気持ちで日々学習を重ねていけば、技術力の向上とキャリアの発展においてめちゃくちゃ良い相乗効果が生まれると思ってます。

# 具体的な活用方法
## 1. まず、大前提

まず、Gitはチーム開発におけるバージョン管理の**デファクトスタンダード**です。

GitのホスティングサービスはGitHubが有名ですが、GitLabやBitbucketを使ってるところも多いです。（ちなみに、今の案件ではGitLabを使ってます。）

僕が最初に入社した企業ではSVNを使っていたので、古き良きバージョン管理ツールを愛用してる会社も多いと思います。

Gitはあくまでもバージョン管理ツールの一つでしかないですが、チームで開発を進めていく上では、ほぼ必須スキルと言っていいと思います。

なので、大前提、GitやGitHubの扱いには慣れておく必要があるので、

- ブランチモデルの活用
- コミットの粒度や命名の一貫性
- PRやIssuesの効果的な使用
- GitHub ActionsでのCI/CD構築
- 分かりやすいREADMEの作成
- ...

プライベートの学習からこういったチーム開発を想定した運用を意識できると、実際に現場に入った時の自信にもつながりますし、自分の意見もしっかり言えるくらい着実に知見溜まっていくと思います。

また、GitHub上には世界中の企業や開発者が公開している良質なリポジトリが山ほどあるので、普段から検索かけて参考になるリポジトリや運用方法を見つけておくのもおすすめです。

:::note info
[GitHubのモバイルアプリ](https://github.co.jp/mobile.html)
日常的に最新の技術トレンドやプロジェクトの動向をキャッチしやすくなって情報感度も高まると思います。
アプリのアイコンも変更可能で、見た目も可愛いのでぜひ使ってみてください。
![](https://storage.googleapis.com/zenn-user-upload/6551fe051004-20240904.png)
:::

## 2. 学習記録の一元化と進捗の可視化

GitHubは、さまざまな学習活動の記録と可視化に活用できます。

新しい技術のキャッチアップのために新規でリポジトリを作って開発していくのはもちろんですが、

- 資格や検定試験のアウトプット
- 英語学習や書籍から学んだ知識のアウトプット

あらゆる学習活動をGitHubで記録することで、日々の進捗を草生やせて視覚化できて、毎日続けようって学習意欲を高めることができます。

![](https://storage.googleapis.com/zenn-user-upload/2d054e04d1c0-20240904.png)
（ぜんぜん、スカスカですが...）

また、GitHub上で人の目に晒す状態にできると、人が読んで理解できるように客観的な視点から情報を整理する必要があるので、その過程で自分の思考をより深めることができます。

アウトプットを続けると、自分の作ったリポジトリに他のエンジニアからStarがついたり、アカウントをフォロワーされることもあるので、自分が楽しく継続していくための大きなモチベーションになり得ると思います。

時には「こういうやり方もありますよ」といったアドバイスをもらえることもあり、自分の成長を加速させるきっかけにもなります。

## 3. ポートフォリオ（転職・独立）

GitHubは転職や独立においても有効です。

採用側も学習履歴やアウトプットを一目で確認できるので「この人は本当に学習してきたんだな」ってのが目に見えて分かります。

「**この資格を取得しました**」とか「**スキルシート上でこれだけやってます**」とかの単なる言葉よりも、はるかに説得力ありますよね。

その上で、

- OSSへのコントリビュート (最初はドキュメント修正とか軽いものでOK)
- 個人開発でサービスやアプリリリース (できれば収益化)
- 1つの優れたプロジェクトを作る（明確に定義されたStepbyStepのREADME）

とかできてくれば、他のエンジニアとの差別化にも繋がると思います。

また、GitHubのプロファイルを作り込むことも、他の候補者と差別化する上では大事な要素です。

[Making your GitHub profile look awesome ~ GitHub プロフィールを魅力的に見せる](https://medium.com/codex/making-your-github-profile-look-awesome-869d6d130dbb)

![](https://storage.googleapis.com/zenn-user-upload/5efcbed1c3dc-20240904.png)

▼ プロフィールのREADMEファイルを集めたリポジトリです。すごく参考になると思います。
https://github.com/durgeshsamariya/awesome-github-profile-readme-templates

仕事を受注する時にも大事な考えですが、

「**依頼者の心理を考える**」

凄そうと思われれば勝ちです。

自分の魅せた方をこだわる事で「**高額な報酬を払ってでも仕事を依頼したい**」と思わせれる市場価値の高い人間にみせることも大事です。

:::note info
**プロフィールをさらに充実させるテクニック**
GitHub Actionsを使用することで、プロファイルに[Daily.dev](http://daily.dev)で読んだ記事のログやLAPRASのスコアをカード画像として埋め込むことも可能だったりします。

QiitaやZennなど技術関連のリンクはもちろんですが、その他エンジニア関連の活動を一括でまとめておくことで、GitHubのプロフィールが自分のポートフォリオになると思います。
:::

## 4. 世界中の優れたリポジトリを参照

GitHubは知識の宝庫です。

日常的にバグに遭遇した際、関連するリポジトリのIssuesを確認して解決策を探ったりはよくするかもしれませんが、

新規でアプリを開発する時や、新しい技術をキャッチアップする時にも、他の開発者のリポジトリは貴重な参考資料になります。

どのようなアーキテクチャやフォルダ構造が採用されているか、READMEの書き方やGitHubの運用方法まで実務で参考になるようなこともめちゃくちゃ学べます。

また、GitHubにOSSとして公開されているコードも実践的な学習に役立つ貴重な情報源なので気になるリポジトリを探してみるのもすごい楽しいと思います。

実際の開発現場で使用されてる技術やベストプラクティスを学べますし、コントリビューションの機会も得られるかもしれません。

GitHubのリポジトリを活用すれば、書籍や教材からは得られないリアルを体感することができるので、非常に価値のある学習方法だと思います。

▼学習に役立つ個人的におすすめのリポジトリ
https://github.com/kamranahmedse/developer-roadmap
https://github.com/kallaway/100-days-of-code
https://github.com/mtdvio/every-programmer-should-know

# 最後に

以上、個人学習をGitHubでレベルアップさせる話でした！

学習において重要なのは『**アウトプットをベースにしたインプット**』だと思うので、その点、GitHubを利用するのはめちゃめちゃ有効的だと感じています。

今回の話が少しでも参考になれば嬉しいです。

最後まで読んでいただきありがとうございました！