世界中の優秀なノウハウが無料で見れる!?プログラム開発者必須のGithubとは
皆さんは、学びの場・環境の調達はどうされていますか?
コロナウイルスの影響もあり、対面での学習機会が制限されている現在、オンラインでの勉強会などもよく目にします。
しかし、勉強会では提供者と受益者が明確に分かれているものも多く、需要と共有かマッチしないことも多々あります。
プログラム開発においては、Githubという知見を蓄積する場として面白い事例があるのでご紹介します。
Github とは世界で優秀なプログラムコードの集まり
Githubとは、端的にいうとGitが集まってるhubです。これを理解するにはgit自体の理解から始めていきましょう。
wikipediaによると、gitとは、
gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。
とあります。
つまり、プログラムがいつどこで何が変更されたのかを追跡できるものになります。これまでは最新のプログラムまでしか見れなかったり、チームの場合は誰が何を変更したのか管理しておく必要がありました。
履歴を見れることにより、変更履歴が管理できるだけでなく、過去のファイルに戻せたりすることが可能となります。
そのgitの特徴を活かして、各プログラムを履歴から管理できるのがGithubになります。
GitHubとは、Gitの仕組みを利用して、世界中の人々が自分のプログラムコードやデザインデータなどを保存、公開できるようにしたウェブサービスです。
つまり、プログラマーチームがGithubにプログラムを乗せておくことにより変更履歴を管理してくれる、ということになります。
また、バージョンの管理や閲覧、バグ追跡機能、SNSの機能もついているので開発で頓挫した場合に相談するなど開発者にとっては必須のツールとなっています。
名前通り「Git」の「ハブ:拠点・中心・集まり」という意味になり、個人・企業問わず無料で利用が可能です。
GitHubに作成されたリポジトリというストレージ(保存庫のようなもの)は、基本的にすべて公開されますが、有料サービスにすると指定したユーザーからしかアクセスができないプライベートなレポジトリを作ったりできます。
優秀な事例 深層強化学習や遠隔患者検査
例えば、Github上にあるPFRLというライブラリがあります。これはpythonのPyTorchというオープンソース機械学習ライブラリで実装された深層強化学習ライブラリになります。
PFRL: a PyTorch-based deep reinforcement learning library
PFRL is a deep reinforcement learning library that implements various state-of-the-art deep reinforcement algorithms in Python using PyTorch.
下記にあるようなロボットが商品を取ったり、ロボットがグラウンドを走ったり、ボクシングでどう動いてどう殴ったら勝てるのか、ということを深層強化学習を持って学んでいく、というところでしょうか。
このgitについては、MIT Licenseと記載があるようにマサチューセッツ工科大学がこのライセンスを保有しています。
ここに記載があるように、Permission:commercial useとあるのでなんと商用利用が可能です。さらにはModificationともあるので部分的に修正して利用することが可能ということでプログラマーとして優秀な頭脳を基盤に応用することが可能となります。
ちなみに深層強化学習については、過去の記事をご覧ください。
また、別事例ではBoston Dynamicsで患者の遠隔検査を実施するプログラムも公開されています。
つまり、世界中で優秀な人たちの知見を勝手に利用することが可能なんです。
すごすぎる。。。
他にもソースコード管理サービスは存在しているのですが、Githubを利用するメリットがいくつかあります。
メリット① 無料
ソースコードを管理する単位をリポジトリと呼びますが、このリポジトリには2種類あって他利用者にも公開されるパブリックリポジトリと、公開が限定できるプライベートリポジトリがあります。
ソースコードを公開したくない場合は、プライベートリポジトリを選択する必要がありますが、以前はGitHubは有料、その他同業サービスのBitbucketやGitLabでは無料という状況でしたが2020年4月から、GitHubでも無料のプライベートリポジトリを無制限に作成可能になりました。
メリット②SNS機能
誰でも無料で利用できるオープンソースですが、GitHubでは以前から多くのオープンソースが管理されており、たくさんのオープンソースコミュニティが形成されています。
このオープンソースコミュニティにはいくつかgithubならではの特徴があります。
●コミュニティの中で誰がどのぐらい貢献しているかを可視化
●開発メンバーの知見を共有
●ソースコードの更新などに関する議論
単にソースコード管理サービスとしての機能だけを捉えると、実はGitHub、Bitbucket、GitLabとも大きな違いはありません。
しかしこのような開発者にとって優しい、開発しやすい環境を支援する機能という点では、GitHubがベターと言えるでしょう。
さらにはMicrosoft社に買収されているので、visual studioでのオンライン利用などその他サポートもあり非常に使いやすさが人気の秘訣なのかもしれません。
0から作るのではなく、利用できるものは利用する
Githubの事例にあるように、無料というサービス以上に優秀な人が集うところには優秀なものが集まる、というのは自明ですよね。
であるならば、目的が明確にした上でこういった知見の集積場を利用しないてはないですね。
私はただ見ているだけで面白がれるタイプなので、いつも参考にしています。
この記事が気に入ったらサポートをしてみませんか?