初心者向け

Gitの超入門(VS Codeでも使える):初回設定・最初のコミット・リモート連携

インストール直後から10分で「履歴が残せる」「リモートにバックアップできる」状態へ。コマンドとVS Codeの両方で説明し、.gitignoreブランチの超基本も図解します。

関連:VS Codeの入れ方Maven/Gradle超入門

作業ツリー(Working Directory) ファイルを編集 ステージ(Index) git add ローカルリポジトリ git commit リモート git push

この記事のゴールと前提

  • Gitの基本の流れ(add → commit → push)が分かる
  • 初回設定(ユーザー情報・改行・ブランチ名)ができる
  • 最初のリポジトリ作成〜リモート連携まで完了する
  • VS Codeのソース管理ビューで同じことができる

前提:VS CodeGit(本体)が導入済み。

Step 0:初回設定(名前・メール・改行・デフォルトブランチ)

インストール直後に1回だけやればOKです。

# ← あなたの名前/メールに置き換え
git config --global user.name  "Your Name"
git config --global user.email "you@example.com"

# 改行コード:Windowsは true、macOS/Linux は input 推奨
git config --global core.autocrlf true    # Windows
# git config --global core.autocrlf input # macOS/Linux

# デフォルトブランチ名を main に統一
git config --global init.defaultBranch main

# 見やすいログ(お好みで)
git config --global format.pretty oneline
git config --global alias.last "log -1 --stat"
git config --global alias.tree "log --oneline --graph --decorate --all"

Step 1:リポジトリ作成と .gitignore

  1. 作業用フォルダを作成 → ターミナルで移動。
  2. git init でリポジトリ化。
  3. .gitignore を置いて、不要ファイルを履歴から除外。
mkdir hello-git && cd hello-git
git init
echo "# Hello Git" > README.md
.gitignore(Javaプロジェクト例)
# build / IDE
target/
build/
out/
.classpath
.project
.settings/
.gradle/
.idea/
*.iml

# OS / misc
.DS_Store
Thumbs.db
.gitignore(Node.js例)
node_modules/
dist/
.env
npm-debug.log*
yarn-error.log*

Step 2:ステージと最初のコミット

Gitは「作業ツリー → ステージ(インデックス) → リポジトリ」の三段構え。まずはステージへ載せます。

git status            # 変更の確認
git add README.md     # 変更をステージへ
git commit -m "初回コミット"

複数ファイルまとめてなら git add .。ただし余計なファイルを拾わないよう .gitignore を先に用意するのがコツ。

Step 3:リモート連携(GitHub等)

  1. GitHub/GitLab/Bitbucketなどで空のリポジトリを作成(READMEは未選択推奨)。
  2. ローカルからリモートURLを登録して、main を初回プッシュします。
# HTTPS 例(URLは自分のものに置き換え)
git remote add origin https://example.com/yourname/hello-git.git
git push -u origin main

# SSH 例(鍵を設定済みの場合)
# git remote add origin git@example.com:yourname/hello-git.git
# git push -u origin main

-u は、次回から git push だけで済むよう、追跡ブランチを結び付けるオプションです。

Step 4:ブランチの超基本

安全に作業するために、機能ごとにブランチを切ります。

# ブランチ作成&切り替え
git switch -c feature/readme-badge

# 変更 → 追加コミット
echo "Status: active" >> README.md
git add README.md
git commit -m "READMEにバッジ追加"

# mainへ取り込み(Fast-Forward)
git switch main
git merge feature/readme-badge
git push

競合が出たら、編集→git addgit commit の順で解決できます(VS Codeならエディタ内にコンフリクトマーカーが表示されます)。

VS Codeでの操作ポイント

  • ソース管理ビュー(左のY字アイコン):変更一覧→チェック(✓)でコミット。
  • ステージ/アンステージ:ファイル右の「+」「−」アイコンで操作。
  • ブランチ切替:左下のブランチ名をクリック→作成/切替。
  • 同期:ステータスバーの「⇅」で pull/push
  • 設定おすすめgit.autofetchtruediffEditor.ignoreTrimWhitespacefalse

よくあるエラーと対処

  • pushが拒否される:リモートに先行コミットあり。git pull --rebase → コンフリクト解消 → git push
  • Permission denied (publickey):SSH鍵未設定。まずはHTTPS URLを使うか、SSH鍵を作って登録。
  • 改行がぐちゃぐちゃ:Windowsは core.autocrlf true、Mac/Linuxは input に設定し直し。
  • 間違ってステージしたgit restore --staged <file>(VS Codeなら右クリック「ステージ解除」)。
  • 直前のコミットメッセージを直したいgit commit --amend(共有後は使わないのが原則)。

コマンド早見表(保存版)

# 状態確認
git status
git log --oneline --graph --decorate --all

# 追加・除外
git add .            # すべて追加(.gitignore は除外)
git restore --staged FILE
git restore FILE

# ブランチ
git branch           # 一覧
git switch -c BR     # 作成&切替
git merge BR         # 取り込み

# リモート
git remote -v
git push -u origin main
git pull --rebase

次に読む記事

FAQ

GitとGitHubの違いは?

Gitはバージョン管理の仕組み(ツール)。GitHubはGitリポジトリをホスティングするサービスの1つです。

VS CodeとEclipse(EGit)のどちらを使えば?

どちらでもOK。VS Codeは軽量で直感的、EclipseはEGitでIDE内完結。この記事のコマンドは両方でそのまま使えます。

著者:まーくん|更新日:2025-09-05

初心者向けVS Codeの入れ方:Windows/Macの完全ガイド

最短10分で完了! 初心者向け VS Code の入れ方 Windows / Mac の手順を図で解説

「まずは道具を整える」が最短ルート。Visual Studio Code(VS Code)は軽快で拡張も豊富。ここでは WindowsmacOS の導入、日本語化おすすめ拡張初期設定Hello World までを迷わず終わらせます。

事前に知っておくこと

  • VS Codeは無料・軽量・拡張が豊富なエディタです(IDEではありません)。
  • 各言語を動かすには、別途実行環境(例:Node.js/Python/Javaなど)が必要です。
  • 公式:https://code.visualstudio.com/(ダウンロードはここから)
インストールの流れ(Windows/Mac共通)
ダウンロード インストール 日本語化 初期設定

Windowsに入れる(最短)

  1. 公式サイトへ:code.visualstudio.comWindows x64 をクリック。
  2. ダウンロードした VSCodeUserSetup-x64-*.exe を起動。
    セットアップでは次のチェックを推奨
    • Add “Open with Code” action to context menu(右クリックに追加)
    • Add to PATH(コマンドラインから code を使える)
    • デスクトップにショートカットを作成(任意)
  3. 完了後、スタートメニューから VS Code を起動。
インストールに失敗する/権限がない場合

管理者権限が必要な環境では、システム版ではなくユーザーインストーラーを使うと通りやすいです。

Macに入れる(最短)

  1. 公式サイトへ:code.visualstudio.commacOS をクリック(Universal版)。
  2. ダウンロードした .dmg を開き、Visual Studio Code.appApplications へドラッグ。
  3. 初回起動でブロックされたら:システム設定 → プライバシーとセキュリティ で「このまま開く」。
  4. ターミナルから code を使えるようにする:
    VS Codeで Cmd + Shift + P → 「Shell Command: Install ‘code’ command in PATH」を実行。

日本語化と言語パック

  1. 左サイドバーの拡張機能(四角いアイコン)を開く。
  2. Japanese Language Pack for Visual Studio Code を検索してインストール
  3. 右下の再起動ボタン、または「表示言語を変更」で日本語に切替。

最初にやる初期設定(コピペ可)

以下は「設定(JSON)」に追記するだけでOK。
コマンドパレットで 基本設定: 設定 (JSON) を開く → 右側のJSONに貼り付け。

{
  "editor.fontSize": 15,
  "editor.tabSize": 2,
  "editor.insertSpaces": true,
  "editor.rulers": [80, 100],
  "files.autoSave": "afterDelay",
  "files.autoSaveDelay": 800,
  "editor.renderWhitespace": "selection",
  "terminal.integrated.defaultProfile.windows": "PowerShell",
  "explorer.confirmDelete": false,
  "workbench.startupEditor": "newUntitledFile"
}

※ 迷ったら「ファイル → ユーザー設定 → 設定」からGUIで同様に変更できます。

初心者に効くおすすめ拡張

Japanese Language Pack

UIを日本語化。初回に入れておくと迷わない。

Prettier

コード自動整形。保存時フォーマットにするとキレイが続く。

ESLint

JavaScriptの品質チェック。チュートリアルに沿って初期化。

Python

Pythonを書くなら必須。Lint/デバッグも一括対応。

Java Extension Pack

Javaの開発向け(Language Support, Debuggerなど)。

GitLens

誰がいつどこを変更したかを可視化。学習にも役立つ。

保存時に自動整形(Prettier)
{
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true
}

Hello World(保存→実行)

ここではインストール直後でも試せる HTML を例にします(ブラウザで動く)。

<!doctype html>
<html lang="ja">
<meta charset="utf-8">
<title>Hello VS Code</title>
<h1>Hello VS Code!</h1>
<p>編集→保存→ブラウザで開けばOK。</p>
  1. VS Codeでフォルダを作成(例:hello-vscode)。
  2. 上のコードを index.html として保存。
  3. エクスプローラーで右クリック→既定のブラウザで開く
    Live Server拡張を入れると自動リロードで快適)

※ Python や Node.js を実行したい場合は、それぞれ Python / Node.js を別途インストールしてから実行してください。

よくあるつまずき

  • code コマンドが使えない:Macは「Shell Command: Install ‘code’ command in PATH」を実行。Windowsはインストーラーで「Add to PATH」を有効にして再起動。
  • 日本語が文字化け:右下のエンコーディングを UTF-8 に切替。保存時に再エンコード可。
  • 拡張がインストールできない:ネットワーク/プロキシ設定を確認(設定で「proxy」を検索)。
  • フォントが見づらいeditor.fontSizeeditor.lineHeight を上げる。等幅フォントの導入も効果的。

次に読むと効率が上がる記事

FAQ

VS Code と Visual Studio は別物?

別物です。VS Codeは軽量エディタ、Visual StudioはWindows向けの大型IDEです。初心者にはVS Codeが扱いやすいです。

どの言語を始めるのが良い?

WebならJavaScript、データ分析ならPython、業務システムならJavaが定番。VS Codeはどれにも対応できます。

著者:まーくん|更新日:2025-09-04

Eclipseで最初のJavaプロジェクトを作る(パッケージ/クラス設計の基本)

初回プロジェクトの作成から、正しいパッケージ設計・クラス分割・動作確認までをステップ形式で解説。記事のとおりに進めれば、Eclipseで「動くJavaアプリ」を作りながら、現場でも通用する設計の土台が身につきます。

本記事のゴールと前提

  • Eclipseで新規Javaプロジェクトを正しく作れる
  • 適切なパッケージ構成クラス分割で小さなアプリを組み立てられる
  • Run As > Java Application で実行して結果を確認できる

JDKやEclipseの導入がまだの方は、先に 導入記事(JDK設定まで) をご覧ください。

新規プロジェクト作成(Eclipse)

  1. File > New > Java Project を選択。
  2. Project namefirst-java-project(空白や日本語は避ける)
  3. JREUse an execution environment JRE: JavaSE-21(またはインストール済みJDK)
  4. Project layout:既定のままでOK(ソースは src
  5. Module(module-info.java)について:最初は作らないほうが簡単。もし自動作成された場合は一旦削除して構いません。
  6. Finish(初回だけ「Open Associated Perspective?」は Yes でOK)。

続けて、src を右クリック → New > Package でパッケージを作ります(次章)。

パッケージ設計の基礎(命名規則と層)

パッケージは全部小文字で、逆ドメイン形式が一般的です。個人開発や学習では com.example から始めると無難。

com.example.todo
├─ domain      (アプリの中心的なデータ構造:Taskなど)
├─ repository  (データの保存・取得:DBやメモリ)
├─ service     (業務ロジック:検証・集約・操作)
└─ app         (UI層/エントリポイント:mainメソッド)
    
  • domain:ビジネスで扱う名詞(Task, User, Order など)
  • repository:データのCRUDを隠蔽。後でDBに差し替えても他層に影響が少ない
  • service:ユースケース(「タスク追加」「完了にする」等)の手順を1か所に集約
  • app:入出力部分。今回はコンソール。将来Web/UIに変わっても他層は再利用できる

この4層に分けるだけで、コードの見通しと拡張性が大幅に上がります。

サンプルで学ぶ:コンソールToDoアプリ

最小限のToDo管理を作ります。タスクの追加/一覧/完了を、レイヤごとに役割分担して実装します。

1) domain:エンティティ(Task)

package com.example.todo.domain;

import java.time.LocalDateTime;
import java.util.Objects;

public class Task {
  private final long id;
  private String title;
  private boolean done;
  private final LocalDateTime createdAt;

  public Task(long id, String title) {
    this.id = id;
    this.title = title;
    this.done = false;
    this.createdAt = LocalDateTime.now();
  }

  public long getId() { return id; }
  public String getTitle() { return title; }
  public boolean isDone() { return done; }
  public LocalDateTime getCreatedAt() { return createdAt; }

  public void rename(String newTitle) {
    if (newTitle == null || newTitle.isBlank()) {
      throw new IllegalArgumentException("タイトルは1文字以上で入力してください。");
    }
    this.title = newTitle;
  }

  public void markDone() { this.done = true; }

  @Override
  public String toString() {
    return (done ? "[x] " : "[ ] ") + id + ": " + title + " (" + createdAt + ")";
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof Task)) return false;
    Task task = (Task) o;
    return id == task.id;
  }

  @Override
  public int hashCode() {
    return Objects.hash(id);
  }
}

2) repository:データ取得

package com.example.todo.repository;

import com.example.todo.domain.Task;
import java.util.List;
import java.util.Optional;

public interface TaskRepository {
  Task save(Task task);
  Optional<Task> findById(long id);
  List<Task> findAll();
}
package com.example.todo.repository;

import com.example.todo.domain.Task;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

public class InMemoryTaskRepository implements TaskRepository {
  private final Map<Long, Task> store = new ConcurrentHashMap<>();

  @Override
  public Task save(Task task) {
    store.put(task.getId(), task);
    return task;
  }

  @Override
  public Optional<Task> findById(long id) {
    return Optional.ofNullable(store.get(id));
  }

  @Override
  public List<Task> findAll() {
    List<Task> list = new ArrayList<>(store.values());
    list.sort(Comparator.comparing(Task::getCreatedAt));
    return list;
  }
}

3) service:業務ロジック

package com.example.todo.service;

import com.example.todo.domain.Task;
import com.example.todo.repository.TaskRepository;

import java.util.List;
import java.util.concurrent.atomic.AtomicLong;

public class TaskService {
  private final TaskRepository repository;
  private final AtomicLong sequence = new AtomicLong(1L);

  public TaskService(TaskRepository repository) {
    this.repository = repository;
  }

  public Task add(String title) {
    if (title == null || title.isBlank()) {
      throw new IllegalArgumentException("タイトルを入力してください。");
    }
    long id = sequence.getAndIncrement();
    Task task = new Task(id, title.trim());
    return repository.save(task);
  }

  public List<Task> list() {
    return repository.findAll();
  }

  public Task complete(long id) {
    Task task = repository.findById(id)
        .orElseThrow(() -> new IllegalArgumentException("指定IDのタスクが見つかりません: " + id));
    task.markDone();
    repository.save(task);
    return task;
  }

  public Task rename(long id, String newTitle) {
    Task task = repository.findById(id)
        .orElseThrow(() -> new IllegalArgumentException("指定IDのタスクが見つかりません: " + id));
    task.rename(newTitle);
    repository.save(task);
    return task;
  }
}

4) app:エントリポイント(Main)

package com.example.todo.app;

import com.example.todo.repository.InMemoryTaskRepository;
import com.example.todo.repository.TaskRepository;
import com.example.todo.service.TaskService;

import java.util.Scanner;

public class Main {
  private static void printHelp() {
    System.out.println("=== ToDo Commands ===");
    System.out.println(" add <title>     : タスク追加");
    System.out.println(" list             : 一覧表示");
    System.out.println(" done <id>        : 完了にする");
    System.out.println(" rename <id> <t>  : タイトル変更");
    System.out.println(" help             : コマンド一覧");
    System.out.println(" exit             : 終了");
    System.out.println("=====================");
  }

  public static void main(String[] args) {
    TaskRepository repo = new InMemoryTaskRepository();
    TaskService service = new TaskService(repo);

    try (Scanner sc = new Scanner(System.in)) {
      printHelp();
      while (true) {
        System.out.print("> ");
        String cmd = sc.next();
        switch (cmd) {
          case "add":
            String title = sc.nextLine().trim();
            System.out.println("追加: " + service.add(title));
            break;
          case "list":
            service.list().forEach(System.out::println);
            break;
          case "done":
            long id = sc.nextLong();
            System.out.println("完了: " + service.complete(id));
            break;
          case "rename":
            long rid = sc.nextLong();
            String nt = sc.nextLine().trim();
            System.out.println("変更: " + service.rename(rid, nt));
            break;
          case "help":
            printHelp();
            break;
          case "exit":
            System.out.println("Bye.");
            return;
          default:
            System.out.println("不明なコマンド。help を参照してください。");
        }
      }
    }
  }
}

5) 実行と確認

  1. Package ExplorerMain を右クリック → Run As > Java Application
  2. コンソールに > が出たら成功。以下の例を試す:
add 牛乳を買う
add 本を10ページ読む
list
done 1
rename 2 本を15ページ読む
list
exit

メモリ内リポジトリなので、Eclipseを終了するとデータは消えます。後日、ファイル保存やDBに差し替えてみましょう(repository層だけ差し替えればOK)。

設計の基本原則(最初に押さえる3点)

  1. 関心の分離(SoC):入出力(app)と業務ロジック(service)とデータアクセス(repository)を分ける。
  2. 不変条件の保持:domainのコンストラクタ/メソッドで不正な状態を拒否(例:タイトルの空文字禁止)。
  3. 依存方向は内側へ:app → service → repository → domain の一方向。下位層は上位層を参照しない。

この3つを守るだけで、クラスが巨大化しにくく、機能追加や差し替えが楽になります。

よくあるエラーと対処

  • Could not find or load main classMain のパッケージ宣言(package com.example.todo.app;)とフォルダ構成が一致しているか確認。
  • 違うJREで実行されるProject > Properties > Java Build Path → JRE System Library をJDK21に。Project FacetsCompiler のバージョンも見直し。
  • module-info.javaが邪魔:最初は削除してOK。モジュールは慣れてから。
  • 文字化けPreferences > General > Workspace > Text file encoding を UTF-8 に。コンソールも UTF-8 (必要なら VM引数に -Dfile.encoding=UTF-8)。
  • ビルドされないProject > Build Automatically を有効化。ダメなら Project > Clean…

Eclipse便利設定(最初に済ませると幸せ)

  • Save Actions:保存時に自動整形・不要import削除(Preferences > Java > Editor > Save Actions)。
  • FormatterPreferences > Java > Code Style > Formatter でプロファイル作成(チーム運用の第一歩)。
  • Organize Imports:ショートカット割当(例:Windows: Ctrl+Shift+O, Mac: ⌘⇧O)。
  • Quick FixCtrl+1 / ⌘1 で警告から即修正。

この次に知りたい情報

導入〜完成チェックリスト

  • Java Project を first-java-project で作成した
  • com.example.todo 配下に domain/repository/service/app を作成した
  • 各クラスを入力し、エラーがない(電球マークはQuick Fixで解消)
  • MainRun As で実行してコマンドが動作した
  • Save Actions / Formatter を設定してコードが自動整形される

FAQ

パッケージ名は日本語でもいい?

推奨しません。英小文字+ドット区切り(例:com.example.todo)に統一しましょう。

クラスは1ファイル1クラス?

基本は1ファイル1公開クラス(public)です。小規模の補助クラスはパッケージプライベートで同パッケージに置いてOK。

テストはどう書く?

次段のMaven/Gradle導入後に JUnit を使うのが定番です。まずは service のメソッド単位から始めましょう。

著者:まーくん|更新日:2025-08-25