OpenCodeで始めるWebアプリ開発入門|Next.jsとReactでAIコーディング
OpenCodeを使ったWebアプリ開発の始め方を解説。Next.jsとReactの環境構築からAIコーディング支援機能まで、実践的なチュートリアルを紹介します。
OpenCodeで始めるWebアプリ開発入門|Next.jsとReactでAIコーディング
AIコーディングツールが急速に進化する中、OpenCodeはオープンソースで高機能な開発環境として注目を集めています。本記事では、OpenCodeを使ってWebアプリを開発する方法を、Next.jsとReactを例に詳しく解説します。初心者でもステップバイステップで進められるよう、環境構築からAI支援機能の活用までをカバーします。
OpenCodeとは?
OpenCodeは、AIアシスタントを内蔵したコードエディタです。VS Codeをベースに、コード生成・補完・リファクタリングなどのAI機能をシームレスに利用できます。特筆すべきは、ローカルLLMにも対応しており、プライバシーを保ちながらAIの恩恵を受けられる点です。
主な特徴
環境構築
1. OpenCodeのインストール
公式サイト(https://opencode.ai)からOSに合わせたインストーラをダウンロードします。macOSの場合はHomebrewでもインストール可能です。
brew install --cask opencode
2. Node.jsの準備
Next.jsを使用するため、Node.js v18以上が必要です。nvmを使ってインストールすることをおすすめします。
<h1>nvmのインストール</h1>
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
<h1>Node.js v20をインストール</h1>
nvm install 20
nvm use 20
プロジェクトの作成
OpenCodeを起動し、ターミナルを開きます。以下のコマンドでNext.jsプロジェクトを作成します。
npx create-next-app@latest my-app --typescript --tailwind --eslint
cd my-app
プロンプトに従い、App Routerを使用するかどうかなど選択します。今回は「Yes」で進めます。
AI支援機能の活用
コード生成
OpenCodeの左サイドバーにあるAIアイコンをクリックし、チャットパネルを開きます。例えば「ToDoアプリのリストコンポーネントを作成して」と入力すると、コードを生成してくれます。
// 生成されたコード例
interface Todo {
id: number;
text: string;
completed: boolean;
}
export default function TodoList() {
const [todos, setTodos] = useState<Todo[]>([]);
const [input, setInput] = useState('');
const addTodo = () => {
if (input.trim()) {
setTodos([...todos, { id: Date.now(), text: input, completed: false }]);
setInput('');
}
};
return (
<div>
<input value={input} onChange={(e) => setInput(e.target.value)} />
<button onClick={addTodo}>追加</button>
<ul>
{todos.map(todo => (
<li key={todo.id}>{todo.text}</li>
))}
</ul>
</div>
);
}
コード補完
エディタ上でコードを書いていると、自動的に補完候補が表示されます。Tabキーで受け入れられます。特に型定義や繰り返しパターンで効果を発揮します。
リファクタリング
コードを選択し、右クリックメニューから「AI: リファクタリング」を選ぶと、改善案を提案してくれます。例えば、上記のToDoリストをよりReactらしくリファクタリングしてもらいましょう。
実践:シンプルなブログアプリ
ページ構成
データ管理
今回は簡易的にローカルのJSONファイルを使用します。
data/posts.jsonを作成[
{
"id": 1,
"title": "OpenCode入門",
"content": "OpenCodeは..."
},
{
"id": 2,
"title": "Next.jsの基本",
"content": "Next.jsは..."
}
]
ルーティング
app/page.tsx で一覧を表示し、app/posts/[id]/page.tsx で詳細を表示します。
// app/page.tsx
import posts from '@/data/posts.json';
import Link from 'next/link';
export default function Home() {
return (
<ul>
{posts.map(post => (
<li key={post.id}>
<Link href={/posts/${post.id}}>{post.title}</Link>
</li>
))}
</ul>
);
}
// app/posts/[id]/page.tsx
import posts from '@/data/posts.json';
import { notFound } from 'next/navigation';
export default function Post({ params }: { params: { id: string } }) {
const post = posts.find(p => p.id === Number(params.id));
if (!post) notFound();
return (
<article>
<h1>{post.title}</h1>
<p>{post.content}</p>
</article>
);
}
AIでスタイリング
チャットで「記事一覧をカード形式でスタイリングして」と依頼すると、Tailwind CSSのクラスを提案してくれます。
デバッグとテスト
OpenCodeのターミナルでnpm run devを実行し、ブラウザで確認します。エラーが発生した場合、AIチャットにエラーメッセージを貼り付けると解決策を提案してくれます。
*この記事はOpenCodeを日常的に使用し、AIエージェントにSSH経由でNixOSをインストールさせるなどの実践経験を持つSioが監修しています。DeepSeek APIのヘビーユーザーとして、実際のコスト感や制限事項を反映しています。*
まとめ
OpenCodeを使えば、AIの支援を受けながら効率的にWebアプリ開発を進められます。特にNext.jsとReactの組み合わせは、AIが生成するコードの品質が高く、初心者でもスムーズに開発できます。ぜひこの機会にOpenCodeを試してみてください。