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

PRODUCED BY RECRUIT

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

第3回 GitHub、ソフトウェア開発の「一次情報」が集まる場所

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

前回の記事はこちら ↓

f:id:itstaffing:20160318180226j:plain

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

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

スキルを磨くために不可欠な「情報収集」をテーマに、第1回は「編集されている情報源」、第2回は「編集されていない情報源」についてお話ししてきました。

第3回は、情報そのもの、つまり「一次情報」に触れる手段として、ソーシャルコーディングのプラットフォームである「GitHub」についてご紹介します。使いこなすことができれば、必要な情報を収集する際に非常に便利でしょう。

GitとGitHubについて

GitHub」は2008年にオープンした、ソフトウェア開発者向けのWebサービスです。最も大きな役割は「Gitリポジトリのホスティング」と「ソーシャルコーディング」の2つで、無料で始められる手軽さと機能の豊富さから、たちまちデファクトスタンダードとも呼ばれるほどの人気を集めました。

具体的な活用法に入る前に、すでにご存知の方も多いと思いますが、念のため「Git」と「GitHub」について簡単におさらいしておきましょう。

f:id:itstaffing:20161021161335j:plain

「バージョン管理システム」、Gitとは?

Git」 とは、プログラムのソースコードを保管し変更履歴などを記録する「バージョン管理システム」のひとつです。2005年にLinuxの開発者であるリーナス・トーバルズが開発し、日本人の濱野純さんがメンテナンスを引き継ぎ、現在でも活発に開発が行われています。

バージョン管理システムといえばCVSやSubversion(SVN)などがよく知られています。それに対しGitは分散型、高速で堅牢、賢いマージなど、それまでのプロダクトとは一線を画した機能・性能を持っています。

Gitの利用はOSS開発者を中心に広がりましたが、業務で利用するために導入する企業も増え、Gitの基本的な操作を習得していることは、プログラマーにとって必須のスキルになりつつあります。

GitHubの人気の理由とは?

Gitは分散型リポジトリというアーキテクチャを採用しているため、個々のクライアントは変更履歴を含めたすべてのソースコードを保持しています。しかし、実際に複数人でスムーズに開発を進めるためには、中央で履歴を管理するリモートリポジトリの存在が欠かせません。

GitHubは「リモートリポジトリのホスティング」を無料で提供するWebサービスとして登場しました。アカウントは無料で作成でき、公開リポジトリであれば無料でホスティングできるため、OSSの開発者を中心に利用者が急増しました。

人気を集めたもう一つの理由が、ソーシャルコーディングのプラットフォームとしてさまざまな機能を提供したことにあります。コラボレーションを潤滑に行うツールとして、GitHubはとても優れています。

また、ソーシャルコーディングによるコラボレーションを業務に活用したいという要望のために、ソースコードを非公開にするプライベートリポジトリ機能や、企業独自のサーバー上で動作させるためのGitHub Enterpriseも提供されています。

f:id:itstaffing:20161021161336j:plain

GitHubで直接触れることができる「一次情報」

GitとGitHubについて説明が長くなってしまいましたが、実はメインである「スキルを磨くための情報収集」についてのお話も、これでほとんど済んでしまいます。

GitHubの素晴らしいところは、ソフトウェア開発において一番大事な情報である「ソースコード」そのものが公開されている点です。みなさんのおなじみのサーバーOSであるLinuxも、利用者の多いデータベースであるMySQLもソースコードがGitHubで公開されています(Linuxはtovalds/linux、MySQLはMySQL)。

また、Webアプリケーションの開発において、皆さんは何らかのフレームワークを採用していると思いますが、Spring、Play Framework、Ruby on Rails、LaravelなどもGitHubで公開されています。プログラミング言語そのものですら、Ruby、PHP、Go、SwiftなどがGitHubで公開されています。

OSSの世界では、GitHubを通じて「一次情報」に直接触れることができるということがおわかりいただけたでしょうか。

また、GitHubではソーシャルコーディングのプラットフォームならではの情報も得ることができます。例えばOSSを活用した開発をしていて、そのソフトウェアが意図しない動きをした場合、ソースコードを読めば原因が特定できるはずです。

あるいは、Issue(GitHubの機能のひとつで、プロダクトに対する問題点の指摘や要望を挙げること)に同様の問題が報告されているかもしれません。原因を特定できるだけでなく、自分で直してPull Request(ソースコードの修正をパッチとして送付し本体へ取り込むことをリクエストすること)を送ることもできます。

ソフトウェア開発の一次情報を得るためには、ソフトウェア開発が行われている現場を訪れるのが一番です。そのためのプラットフォームがWebサービスとして公開され、誰でも気軽に触れることができるGitHubは、エンジニアとしてのスキルを磨くのにぴったりの場所と言えるでしょう。

簡単ワーク 各特徴を理解した上で情報を集めてみましょう

● Git
1 Gitをインストールしてみましょう
Gitのインストール
2 基礎的な操作を体験してみましょう
Gitの基礎練習

● GitHub
1 アカウントを作ってみましょう
GitHub.com
2 使ったことのあるOSSプロダクトのリポジトリを探してみましょう
3 普段使っているプログラミング言語で今注目のリポジトリを探してみましょう
Trending repositories on GitHub today

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