6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ターミナル駆動開発】ハッカソンでVS Codeを使わず、VimとCLI AI(Claude/Copilot)で開発してみた

6
Posted at

はじめに

この記事は、Progateハッカソン2026.02 powered by AWSの参加レポートを兼ねています。

今回のハッカソンでは、VS Codeを使用せず、ターミナルだけで開発を完結させるという試みに挑戦しました。

背景

メモリが8GBのWindows PCで、WSL2のUbuntuを使用して開発をしています。普段使い慣れているVisual Studio Codeを使用したいのですが、WSLでVS Codeを使うととてもPCが重くなり、開発体験が悪くなっていました。
加えて拡張機能でGitHub Copilotを使用すると更に重くなり...

そこで今回は、「ターミナルで開発を完結すれば、このPCでも快適に開発できるのでは?」というモチベーションで、CLI開発環境の構築と、どのようにツールを使用するかを記事としてまとめます。

この記事で紹介・解説すること

  • Neovim
    • LazyVimの操作
  • AIコーディングエージェント
    • GitHub Copilot CLI
    • Claude Code (+ Amazon Bedrock)

また、記事の後半で

  • Progateの公式Discordコミュニティ
  • Progateハッカソンについて
    • ハッカソンのモチベーション
    • 2026/03に開催予定のハッカソン

についても言及します!

Neovim

VS Codeを使わずに開発するため、まずはエディタを選びます。
私の場合はちょうど、Vim好きの方に捕まってしまった(?)ところだったので、特に考えることなくNeovimを選びました。

捕まった経緯↓
(一緒にコミュニティ運営をしていた方が企画してくださった、「はじめてのVim触ろう会!」の解説記事です)
Vimについて解説されているのでぜひ!(この記事では基本的なVim操作は省略しています)

ということで、Neovimのセットアップをします。
基本的には、公式の方法を参照しています。今回は最新バージョンをインストールしたく、AppImage (“universal” Linux package)の内容でインストールしました。

# Neovimのインストール
$ curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage

# セットアップ
$ chmod u+x nvim-linux-x86_64.appimage
$ sudo mkdir -p /opt/nvim
$ sudo mv nvim-linux-x86_64.appimage /opt/nvim/nvim
$ echo 'export PATH="$PATH:/opt/nvim/"' >> ~/.bashrc
$ source ~/.bashrc

# バージョン確認
$ nvim --version
NVIM v0.11.6
Build type: Release
LuaJIT 2.1.1741730670
Run "nvim -V1 -v" for more info

LazyVim

セットアップ

これでNeovimが使用可能になりましたが、自分としてはこのまま使用するのは大変なので、LazyVimもセットアップします。

ここも公式のガイドに従いインストールしていきます。

# 現在のNeovimファイルをバックアップ
$ mv ~/.config/nvim{,.bak}

# LazyVimのStarterをclone
$ git clone https://github.com/LazyVim/starter ~/.config/nvim
$ rm -rf ~/.config/nvim/.git

# Neovimを起動します
$ nvim

起動すると、lazy.nvimのポップアップが表示され、プラグインのインストールが行われます。

image.png

インストール完了後qを入力すると、ポップアップが閉じ、Neovimの画面(LazyVimのダッシュボード)になります。

image.png

:checkhealthを実行することで、環境の不足など、warning/errorを確認することができます。

操作方法

LazyVimを使って、どのようにCLIで開発するかを解説します。

エクスプローラと複数タブ

$ nvim ~/hackathon/project/progate_2026_02/rakko/

ディレクトリを指定してNeovimを起動すると、このようにExplorerが左側に表示されます。
spaceeを入力することで、このExplorerを表示・非表示の切り替えができます。

カーソルは、Vim操作の左hと右lに対応して、

  • Ctrl + hで左にあるExplorerへ、Ctrl + lで右にあるエディタへ移動
  • エディタで複数タブ開いているとき、
    Shift + hで左のタブへ、Shift + lで右のタブへ移動

というように操作できます。
タブを閉じたい場合は、spacebdです。(Buffer Deleteの略のようです)

image.png

リポジトリのソースコントロール

VS Codeのソースコントロールのような機能もあります。
Git管理されているリポジトリに対しては、上の画像のように、差分のある行がエディタ上に、差分のあるファイルがエクスプローラに表示されます。
また、例えば spaceghpの順に入力すると、カーソルが当たっている行に対する変更のプレビューを見ることができます。

image.png

Ctrl + /でターミナルを表示・非表示の切り替えができるので、Git操作自体はこのターミナルで行うことができそうです。

image.png

※ LazyGitというLazyVimと相性のよい?ツールもありますが、今回は省略します

定義・実装・参照へ移動

VS Codeでは Ctrl + クリックで定義に移動できるなどの、Code Navigationという機能があります。

これと同じことを、LazyVimでも行うことができます。
今回は、ハッカソンでTypeScriptのプロジェクトを開発していたため、TypeScriptのLSPを有効化します。
Normalモードで、:LazyExtrasと入力します。
ここで、拡張機能の設定ができるので、今回はlang.typescriptの行にカーソルを合わせ、xを入力して有効化します。

image.png

LazyVimを再起動すると、拡張機能の有効化が反映されます。
コードのエラーなども表示されるようになりました。

image.png

関数や変数にカーソルを当てて、

  • gdを入力: 定義に移動 (go to definition)
  • gIを入力: 実装に移動 (go to implementation)
  • grを入力: 参照に移動 (go to references)

grを入力してreferencesを表示した例
image.png

CLIのAIコーディングツール

ターミナルだけで開発する準備ができたので、加えてターミナルで操作できるAIコーディングツールを使いましょう。

GitHub Copilot

学生はGitHub Education経由で、GitHub Copilot Proを無料で使用できます。

そのGitHub Copilotですが、CLIツールがあります。

# インストール
$ npm install -g @github/copilot

# 起動
$ copilot

認証周りは省略しますが、起動しました。

image.png

● Loaded env: .github/copilot-instructions.md

と表示されていますね。これは、指示するたびに必ず読まれるファイルで、開発しやすいようプロンプトを書いて指示に従わせることができます。
プロンプトはよくこの記事を参考にさせていただいています。

Claude Code

ここでようやく、冒頭で紹介したハッカソンに関連する話です。

今回、ある程度自由に利用できるAWS環境を提供いただき、そこで開発を行うというハッカソンに参加していました。
そこで、以下のドキュメントを参考にAmazon BedrockをAPIとして使用してClaude Codeを動かす体験をしてみました。

# Claude Codeのインストール
$ curl -fsSL https://claude.ai/install.sh | bash

# AWS認証 (自分はaws-cliを使用)
# 認証するIAMロール(またはIAMユーザー)にBedrockへのアクセス権限が必要
$ aws configure

# ClaudeでBedrockを使用するための設定
export CLAUDE_CODE_USE_BEDROCK=1
export AWS_REGION=us-east-1

# 使用するモデルの設定
# 例: 各モデルのデフォルトを特定のBedrock推論プロファイルIDに固定
export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-5-20250929-v1:0'

# 起動
$ claude

実際起動し、/statusを見てみると、API provider: AWS Bedrockと表示されていることがわかります。

image.png

ハッカソンでターミナル駆動開発を実践

ハッカソンでは、実際は以下のように開発をしていました。
タブを複数開き、

  • Claude Code
  • GitHub Copilot CLI
  • npm run devでサーバー起動
  • Git操作 + 時々Neovim起動して中身確認

をしていました。

image.png

フロントエンドの挙動を見るためにGoogle Chromeを使用するとPCが重くなるケースはありましたが、ほぼVibe Coding(AIに指示を出してコードを生成させる)で差分だけgit diffで随時確認してからgit commit、というように実装する分には、自分のPCにしてはかなり快適な開発ができたという印象でした。

コミュニティとハッカソンの紹介

コミュニティ: Progate 公式Discord

「コミュニティ運営を一緒にしていた方」という表現をしましたが、そのコミュニティが、このDiscordサーバーです。

Discordサーバー内でイベントを企画・運営したり、アドベントカレンダー企画をしていました。

たまには大きいイベントを運営することも?

コミュニティ運営についてもアドベントカレンダーで記事が投稿されているので、ぜひご覧ください。(コミュニティ運営部も募集中!)

Progateハッカソン

今回参加したProgateハッカソンですが、定期的に開催されています。
3月に開催されるハッカソンを紹介しておきます。

関西圏ではGONENGOとProgateが共同主催している58ハッカソンというイベントがあります。

まとめ

今回のハッカソンで、このターミナルで完結する開発環境を試し、Qiita記事でLazyVimについて更に理解を深めるという一連の流れはとても楽しかったです。

最後に、アドベントカレンダーに投稿されたハッカソンに関する記事を紹介します。

「PCが重いからターミナルだけで開発してみよう」という挑戦・実験の機会を、ハッカソンという場に設定したことが正しいかはわかりませんが、実際に

「やってみたいことに1つ挑戦してみる」

という場にハッカソンは最適だと思います。

自分が初めて参加したハッカソンの最終発表で、上の記事を書いている方々のチームが「結論から言うと、完成しませんでした」と言っていたことを鮮明に覚えています。

技術力の高い人たちが賞をただ競い合う場ではなく、これから挑戦したい・勉強したいと思っている人たちが互いに高め合うためにハッカソンがあると考えています。
初心者も上級者も関係なく、もしハッカソンに興味があれば、開発を楽しむ場として参加してみてほしいと改めて思いました。

ハッカソンで出会った人と仲良くなって次のハッカソンでチームを組んで一緒に出たり、別のイベントで再会したり、SNSだけ交換してみたりと、純粋にコミュニティを求めてハッカソンに参加するのも個人的にはおすすめしたいです。
「開発」という共通の楽しみ・苦労を同じ時間・空間で感じている人たちだからこそ作られる新しい関わり・コミュニティ? があるかもしれません。


あとがき

この記事を書いている今は新しくPCを入手してしまったので、「VS Codeは重くて使用できない」という悩みはなくなりそうです。
Vimは好きなので、しばらくは新PCではVS CodeとVimを併用して開発してみます...

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?