【ゼロから始めるFlutter×GitHub入門】第1回:なぜアプリ開発にGit/GitHubが必要なのか?

実はこの連載、「初心者に教える講座」というより「私自身がGitHubをちゃんと学び直す記録」に近いです。
30年近くWEB制作をやってきても、Gitはなんとなく使っているだけ…という方、実は多いのではないでしょうか。私もその一人でした。

せっかくなので、これから一緒に基礎から整理していこうと思います。今回は、黒い画面(ターミナル)を開く前の「そもそもなぜGit/GitHubが必要なのか」というところから始めます。

目次

うっかり動かなくなったコードを、1秒で元に戻せる

アプリ開発をしていると、こんな経験はありませんか?

  • 昨日まで動いていたのに、今日いじったら急に動かなくなった
  • どこを直したら良くなったのか、逆に何を壊したのかわからない
  • 「とりあえず前のバージョンに戻したい」のに、戻し方がわからない

Gitは、いわばコードのタイムマシンです。作業のたびに「記録(コミット)」を残しておけば、いつでもその時点の状態に戻れます。上書き保存しかできないエディタとは違い、「過去のどの時点にも戻れる」という安心感が生まれます。

バックアップをクラウドに置く安心感

パソコンが壊れた、うっかりファイルを消してしまった——長く開発をしていると、一度はヒヤッとする瞬間があります。

GitHubにコードを置いておけば、パソコンとは別の場所(クラウド)にも同じ記録が残ります。万が一の時も、GitHubから取り出せば作業を再開できます。Dropboxでのバックアップと考え方は近いですが、Gitの場合は「いつ・何を変えたか」という履歴ごと残せるのが大きな違いです。

Git(記録を取る道具)とGitHub(置き場・共有サイト)の違い

ここ、最初に混乱しやすいポイントです。

  • Git:自分のパソコンの中で、変更履歴を記録していく「道具(ソフト)」
  • GitHub:その記録をインターネット上に置いて、保管したり他の人と共有したりする「場所(サービス)」

たとえるなら、Gitが「日記帳に日々の記録をつける行為」、GitHubが「その日記帳を預けられるクラウド金庫」というイメージです。日記をつけること自体はGitの役目、それを安全な場所に保管して必要なら見せられるようにするのがGitHubの役目、と考えるとイメージしやすいかもしれません。

アカウント作成と初期設定(SSH接続まで)

ここからは実際の準備です。

  1. GitHubアカウントを作成する
    github.com にアクセスし、メールアドレス・ユーザー名・パスワードを登録します。
    ※ユーザー名は後から変更もできますが、公開される名前なので落ち着いて決めましょう。
  2. SSHキーを作成する
    パソコンとGitHubを安全にやり取りするための「鍵」を作成します。ターミナルで以下を実行します。 ssh-keygen -t ed25519 -C "[email protected]"保存先を聞かれたら、特にこだわりがなければそのままEnterでOKです。
  3. 公開鍵をGitHubに登録する
    作成された公開鍵(.pubが付くファイル)の中身をコピーし、GitHubの Settings → SSH and GPG keys → New SSH key から貼り付けて登録します。
  4. 接続確認をする ssh -T [email protected]「Hi ユーザー名! You’ve successfully authenticated」のようなメッセージが出れば成功です。
$ ssh -T [email protected]

# これが返ってきたら成功
# Hi ○○ You've successfully authenticated, but GitHub does not provide shell access.

やらかしレスキュー策:SSH接続で “Permission denied” と出たら

初回設定で意外とつまずくのがここです。焦らず、次の順番で確認してみてください。

  • SSHキーを作成した場所と、登録した公開鍵の中身が一致しているか
  • ssh-add でキーがエージェントに登録されているか(ssh-add ~/.ssh/id_ed25519 のように追加)
  • GitHub側に登録した公開鍵が、末尾まで欠けずコピーできているか(改行やスペースの混入もよくある原因です)

一つずつ潰していけば、大抵はここで解決します。

次回予告

次回は、実際にFlutterプロジェクトをGitHubにアップロードするところまで進みます。最初の壁になりやすい .gitignore の設定や、git add / git commit / git push の基本コマンドを扱う予定です。

私自身もまだ勉強中の身なので、つまずいたところも正直に書いていこうと思います。よろしければ、次回もお付き合いください。

目次