技術

開発環境整理

  • Claude Code動かすために一旦全部整理した
  • もろもろの利便性を考えてWSL有効化してそこで全部やることにした
  • ネイティブUbuntuマシンはネイティブ環境じゃないといけないやつで使う?リアルタイムカーネルいれてみてもいいかも

インストール

Windows

Scoop

  • Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

PowerShell

  • scoop install pwsh

Git

  • scoop install git
  • プロキシ環境下の場合、GitBashでプロキシ設定を記載しておく
    • git config --global http.proxy <プロキシ>

Chrome

  • scoop bucket add extras
  • scoop install googlechrome

Wezterm-nightly

  • scoop bucket add versions
  • scoop install wezterm-nightly
    • WSL2上で新規Paneを開いたときにカレントを引き継ぐ場合、WSL2上で以下を実行する
      curl -fsSL https://raw.githubusercontent.com/wez/wezterm/main/assets/shell-integration/wezterm.sh -o ~/.wezterm.sh
      echo '. ~/.wezterm.sh' >> ~/.bashrc
      exec bash -l
      printf "\033]7;file://%s%s\033\\" "$HOSTNAME" "$PWD"

Dotfiles

  • git clone https://github.com/loppy-ai/dotfiles
  • さっきインストールしたPowerShell 7.xの管理者権限でmake_link_windows.ps1を実行

VSCode

  • scoop install vscode
  • 拡張機能
    • Windows
      • GitHub Copilot
      • Markdown All in One
      • Markdown Table
      • indent-rainbow
      • Zenkaku
    • WSL2
      • Windowsのもの
      • Claude Code for VS Code
    • コンテナ
      • devcontainer.jsonの customizations > vscode > extensions に記載することで、reopen時にインストールされる
  • 設定
    • Windows上
      • Terminal > Integrated: Font Size
        • 18
      • Markdown > Extension > List: Indentation Size
        • inherit
      • Dev > Containers: Execute In WSL
        • チェックをいれる
    • WSL2上
      • Extensions > Claude Code > Allow Dangerously Skip Permissions
        • チェックを入れる
        • Docker環境内だけで動かすからこれで大丈夫なはず
        • 別途やばいコマンドはNGにいれる予定

VisualStudio

  • そのうち

AndroidStudio

  • そのうち

QtCreator

  • そのうち
  • aqtinstallを使用する予定

usbipd-win

  • WindowsのUSBをWSL2に流す、みたいなやつ
  • そのうち

WSL2

本体

  • プログラムと機能で Linux用Windowsサブシステム を有効化しておく
  • wsl --install Ubuntu-24.04
  • プロキシ環境下の場合、以下に設定を追記する
    • ~/.bashrc
    • /etc/apt/apt.conf.d/99proxy

git

  • sudo apt install git
    • たぶん最初から入っている

tree

  • sudo apt install tree

Neovim

  • sudo apt install neovim

Docker

  • sudo apt install -y ca-certificates curl gnupg lsb-release
    • たぶん最初から入ってる
  • sudo mkdir -p /etc/apt/keyrings
  • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • sudo apt update | sudo apt install -y docker-ce docker-ce-cli containerd.io
  • sudo systemctl start docker
  • sudo systemctl enable docker
  • sudo usermod -aG docker $USER
  • プロキシ環境下の場合は、追加で以下の対応が必要
    • /etc/systemd/system/docker.service.d/http-proxy.confを作成
    • sudo systemctl daemon-reload && sudo systemctl restart docker で再起動

gh

  • 公式サイトを参照
    (type -p wget >/dev/null || (sudo apt update && sudo apt install wget -y)) \ && sudo mkdir -p -m 755 /etc/apt/keyrings \ && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \ && cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \ && sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \ && sudo mkdir -p -m 755 /etc/apt/sources.list.d \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ && sudo apt update \ && sudo apt install gh -y
  • gh auth login
    • Github.comを選択
    • SSHを選択
    • (SSHキーがなければ作る、passphraseは空欄・SSHキータイトルはデフォルトのGitHubCLI)
    • Paste an authentication tokenを選択
    • GUI環境でPATページにアクセス
      • Generate new token (classic)を新規作成
        • Noteにどこで使うtokenかを入力
        • Expiration : 90日にした
        • Select scopes : repo・read:org・admin:public_key
        • Generate token
    • トークンを貼り付けてログイン

uv

  • curl -LsSf https://astral.sh/uv/install.sh | sh
  • Python本体はコンテナで実施するので、インストールしない

Claude Code

  • 基本的にコンテナ内で動かすが、WSL2上にもインストールしておく
    • コンテナごとの認証を回避するために、以下を実施する
      • WSL2上で認証を実施
      • コンテナはその認証情報のファイルをマウントする
  • curl -fsSL https://claude.ai/install.sh | bash
  • cd projects
  • claude
    • テーマ選択 : 1. Dark mode
    • 認証 : 1. Claude account with subscription
      • 認証URLが生成されるので、コピーしてGUI環境のブラウザで貼り付け
      • ブラウザで生成された認証コードを貼り付け
    • フォルダを信頼する

claude-monitor

  • uv tool install claude-monitor
  • claude-monitor --plan pro --timezone Asia/Tokyo
  • .bashrcにエイリアス設定
    • alias cm='claude-monitor --plan pro --timezone Asia/Tokyo'
    • source .bashrc

Codex

  • そのうち

開発の始め方

  1. WindowsのVSCodeでWSLに接続し、プロジェクトのフォルダを開く
  2. プロジェクトのフォルダ配下に以下を作成する(テンプレートがある場合はコピーする)
project/
    .devcontainer/
        Dockerfile
        devcontainer.json
    compose.yaml
  1. コマンドパレットから Dev Containers: Reopen in Container を選択する
  2. ビルドされて環境ができあがり、設定したWorkspaceで開発ができる

それぞれのファイルについて

  • 例として、C++とPythonを合わせた環境を作る

.devcontainer/Dockerfile

  • コンテナの設計図
  • これを読み込んでビルドして、イメージを作る
FROM mcr.microsoft.com/devcontainers/base:ubuntu-24.04
ARG DEBIAN_FRONTEND=noninteractive

# apt-get時に使用するプロキシ
ARG HTTP_PROXY
ARG HTTPS_PROXY
ARG NO_PROXY

RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    gdb \
    git \
    ca-certificates \
    curl \
    pkg-config \
    python3 \
    python3-pip \
    python3-venv \
    && rm -rf /var/lib/apt/lists/*

.devcontainer/devcontainer.json

  • VSCodeにこのコンテナにどう接続して開発するかを教える設定
  • Reopen in Container時に読み込まれる
  • featuresはClaude Codeをコンテナにいれてくれる
  • mountsでClaude Codeの認証系をマウントしてコンテナで使えるようにする
{
    "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.schema.json",
    "name": "cpp-python-dev",
    "dockerComposeFile": ["../compose.yaml"],
    "service": "dev",
    "workspaceFolder": "/workspace",
    "remoteUser": "vscode",
    "shutdownAction": "stopCompose",
    "customizations": {
        "vscode": {
            "extensions": [
                "Anthropic.claude-code",
                "ms-vscode.cpptools-extension-pack",
                "ms-python.python"
            ],
            "settings": {
                "terminal.integrated.defaultProfile.linux": "bash"
            }
        }
    },
    "features": {
        "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
    },
    "mounts": [
        "source=${localEnv:HOME}/.claude.json,target=/home/vscode/.claude.json,type=bind,consistency=cached",
        "source=${localEnv:HOME}/.claude,target=/home/vscode/.claude,type=bind,consistency=cached"
    ]
}

compose.yaml

  • どう起動するかの定義
services:
    dev:
        build:
            context: .
            dockerfile: .devcontainer/Dockerfile
            args:
                プロキシ設定(FROMで持ってくるためのやつ)
        environment:
            プロキシ設定(持ってきたやつの中でapt-getするため)
        command: sleep infinity
        volumes:
            - .:/workspace:cached
        init: true

        # compose単体で使うのであれば、以下を有効化する
        # VSCodeのdevcontainer.jsonで指定している場合は不要
        # working_dir: /workspace
        # user: vscode

DockerImage/Volume全削除

  • docker system prune -a --volumes -f
  • ChatGPTが「核を落としてDocker環境を消すコマンドです」って言ってて笑ってしまった

参考にしたサイト

Scoopを使った環境構築 - Qiita
Scoop とは ScoopはWindows用のパッケージ管理ツールです。 Scoopを導入することでUbuntuの apt 、RHLE/CentOSの yum 、macの brewのようなことができるようになります。 Windowsにおけ...
GitコマンドをProxy環境可で利用する。 - Qiita
プロキシを設定する Gitを使っていると、環境によってはプロキシ経由でアクセスする必要が出てきます。 そんな時は、以下の設定を実行することで、プロキシ経由でアクセスすることが出来ます。 git config --global http.pr...
プロキシのある環境でDockerを動かす方法 - Qiita
日立製作所の小出です。この記事ではDockerを使う際にプロキシを設定する方法と、それに関連するDockerの挙動について説明します。 はじめに 会社からインターネットに接続するためにはプロキシを経由する必要がある、というのはありがちなシチ...
Dev Containerで安全にclaude codeを使う - Qiita
まとめ Dev Containerの中でClaude Codeを起動することでプロジェクト内のファイルのみへのアクセスを許可することで意図しないファイルの変更・削除・作成などを避けることができます claude codeの設定には以下の設定...

コメント

タイトルとURLをコピーしました