DIVE INTO CODE

2019年05月20日

RailsとGitHubって何が違うの?

Aws4 request&x amz signedheaders=host&x amz signature=35b1555198df35bcdf55fe4c3959dc2d6b0103202b873405646a1c937d25cea8

こちらの記事では、Rails(レイルズ)とGitHub(ギットハブ)って何が違うの? という疑問にお答えします。
「Rails」も「GitHub」も、単語としては聞いたことがあるけれど、実際はどんなものなのかよく分からないという方はぜひこの記事で違いを知ってくださいね。

【こんな方におすすめ】
・これからRuby on Railsを学びたい方
・GitHubについて知りたい方
・プログラマーの業務に興味がある方
・プログラミングスクールを検討している方

【目次】
1. Railsは道具、GitHubは保管場所
・RailsとGitHubは全然違う
2. どうしてGitHubを使うの?
3. GitとGitHubの違い
4. どちらも手軽に使える、RailsとGitHub
・GitHubのセキュリティは?
5. GitHubはRailsで作られている!
6. まとめ

■話し手
DIVE INTO CODE 代表 野呂 浩良
■聞き手
StartGate 永田 拓也

Railsは道具、GitHubは保管場所

では、「RailsとGitHubって何が違うの?」というご質問でしたね。

はい、何が違うんでしょう。

Railsはですね、Webアプリケーション、「インターネットにアクセスして使うためのシステム」を作るものなんですよ。
GitHubっていうのはWebアプリケーションを作るものではなくて、作ったシステムのソースコードという元のファイルを保存しておく場所なんです。
なので、RailsはWebアプリケーションを作るための「フレームワークという道具」。GitHubは、作ったシステムの元ファイル、つまり、元となっている「ファイルを保管しておく場所」です。全然違うんですよ。

なるほど。そもそも、「道具」と「保管場所」みたいな。

道具と保管場所

そうです。「道具」と「保管場所」。「何が違うの?」っていう時点で「そもそも違いますから」っていう話ですね。

ふーん。でも、結構これは分からないという人が多いって聞きます。

そうですね。たとえば、用語だけを聞いている営業の方とかマーケティングの方々って結構いると思うんですよ。そういった場合に「GitHub」「Rails」とか単語だけを聞いても、よく分からないですよね。

そうですね。そういうところで、勘違いが起きちゃう。

RailsとGitHubは全然違う

そうです。基本的には「こういうシステムを作りたい」「じゃあマッチングシステムを作りたい」「新しい新規事業でプロトタイプを作りたいよね」なんて時に、Railsを使って、Rubyという開発言語で作っていくんですよ。
作っていって、「これで動きますね、できましたね」っていうものを、「じゃあ、他の開発のエンジニアと共有して、共同でよりスピーディーに開発しましょう」となった段階で、 GitHubを使って、ファイルを共有して、他のメンバーと一緒に「チーム開発」 というのをするんですよ。その時に使うのがGitHubです。

ほぉ〜。じゃあ、全然本当に違いますね!

全然違います(笑)

どうしてGitHubを使うの?

Railsは「システムを作るもの」だと思うのですが、GitHubは「プロジェクト管理とかをする場所」ということですか。

そうです。 ひとつのファイルを同時に編集したりするのって、複数人で管理していると大変 なんですよ。Microsoft Excelのスプレッドシートをふたりで共有して、それをGoogleドライブとかに入れておいて…とかね。あと、社内のドライブに入れて共有したりすると、編集の順序を気にする必要があるじゃないですか。

はい。

編集がかちあわないようにファイルを共有しますよね。チーム開発をする時も同じようにイメージしてやらなきゃいけないんですけど、でも、常にリアルタイムで共有するというのはなかなか難しい。 なんでかというと、ファイル数が多すぎるため、全体がすべて結びついてしまっているためです。
 
そこで、全て、もう何百個もあるファイル一式を共有する必要があるのですが、共有するにはすごく手間がかかってしまいます。そこでGit(ギット)というファイルを管理するツールがあるんですけど、そのGitというもので、ファイル一式を管理しておきます。GitをGitHubで共有しておくと、誰がいつ何を編集したのが全部綺麗に分かるようにできている んですよ。

誰がいつ何を編集したか分かる

へえ〜。

GitとGitHubの違い

GitとGitHubの違い

だから、GitHubを理解するためにはGitを理解しないといけないんです。

なるほど。ちなみに Gitって、何なんですか?

Gitは ファイルの履歴管理ツール です。編集履歴の管理みたいなイメージだと思ってください。例えばMicrosoft Word文書とかで、契約書とかの編集履歴をつけられたりするじゃないですか。 誰が何を編集したのか、ということを管理するためだけの、開発者向けのツール なんですよ。

それをもっと応用していこう、ということになってGitHubっていう場所ができた。

そうです。Gitを使う場合、黒い画面でカタカタ打ち込むことでしか確認ができなかったんですよ。だから、内容をかなり理解してないと使いこなせないとか、見た目がなかなかわかりにくいという難点もありました。さらに、Gitはそれぞれの端末の中で動くんですよ。

GitとGitHub

ああ〜…

それぞれのGitはそれぞれの端末の中でしか見られませんでした。 複数人で編集できるように大元のファイルをどこかに置いて共有するとしても、別のコンピュータに大元のファイルを用意して、そこに全員がアクセスして編集するのって、ちょっと面倒くさいし、見にくいじゃないですか。
じゃあ、Gitを共有するためのシステムがあったら楽だよね、といってインターネット上に公開し、そこにみんな送ってよ、といって GitHubを作った んですよ。

なるほど。じゃあちょっと昔のMicrosoft ExcelがGitで、GoogleスプレッドシートがGitHub。 

そうです。そんな感じです。それを言うとMicrosoftから怒られますけど(笑)

今はもう、できるよって(笑)

例えばそんなイメージで覚えてもらえると…

わかりやすい感じで。なるほど。

だから、全然違います。

ふーん、なるほど。

どちらも手軽に使える、RailsとGitHub

Railsで作ったアプリケーションは基本的にGitHubを使って管理される ことがほとんどです。

それは相性がいいということですか?

相性がいいというよりは、手軽に作れるし手軽に使えるので、っていう手軽さのかけ算みたいな感じですかね。他にも似たようなツールはあるんですけど、ただ 手軽で使いやすくて、多くの人たちが使ってるからGitHubを使う
あとは、Railsの場合、社外とやりとりをすることも結構多い んですよ。業務委託の人と一緒に開発したりとか。

うんうん。

新規事業を生みだしたり、新しいサービスをつくったりするために向いているものなので、スタートアップで開発人数が少ない中で、「業務委託の人にも力を借りたい」とか「リモートワークでもいいか」とかやり取りをします。そういう中で、「インターネットに直接アクセスして、気軽に」といったときに、GitHubは選ばれる傾向があります。

GitHubのセキュリティは?

気になるセキュリティの部分とかはどうなんですか。

そうですね。ログインしたときに、その人だけしか入れないようにセキュリティの制限はできるので、基本はそれで担保される感じですよね。

これは結構世界中でも使われている

そうですね。

GitHubはRailsで作られている!

で、非常にややこしいのが、最後にすごく混乱することを言うんですけど、GitHubはRailsで作られているんですよ。

わ!やばい、最後にきた!…なるほど、でも、それこそみんなが会社で作っているものがRailsで作られていて、そのRailsの管理をGitHubでできる。

そうです、もうわけわからないです(笑)

わけわからないところで(笑)

だからRailsとGitHubって言われるんです。Railsで作られている、世界で最も使われているアプリケーションってもしかしたらGitHubかもしれないですよ。

GitHub自体のソースコードはどこで管理されているの?といわれたら、GitHub?

ほんとかな?(笑)

どうかわからないですけど、というところですね。

そうですね。面白いですね。

そういう関連が、RailsとGitHubにはある。

そうです。非常に親和性があって歴史的な繋がりがあるんですよね。

すごいですね、そのへんの歴史を見てみたいです。

面白いと思います。

まとめ

  1. RailsはWebアプリケーションを作るフレームワーク
  2. GitHubはアプリケーションの元ファイルを管理するための保管場所
  3. GitHubはRailsで作られている

それでは、RailsとGitHubの違いについて、両方を活用してWebアプリケーションを作る場合の流れを例に、おさらいしましょう。
Rubyという開発言語を使って、Railsをフレームワークとして使用したWebアプリケーションを作成します。
その際に、Gitを使って、プログラムを動かすために必要なファイル一式の編集履歴を管理します。そして、そのGitの編集履歴をGitHubを使って共有しながらチームで開発を進めていきます。

一般的に業務としてWebアプリケーションを制作する場合、GitHubなどの編集履歴共有システムを使いながらチームで開発します。
プログラミングスクールDIVE INTO CODEでは、Railsを使用したWebアプリケーション制作はもちろんのこと、GitHubを利用したチーム開発もスクール生同士で学ぶことができます。

DIVE INTO CODEのことをもっと知ってみませんか?