分散型Webアプリの新境地!HeyPuter/puterで始める次世代開発


分散型Webアプリの新境地!HeyPuter/puterで始める次世代開発

HeyPuter/puter

2025-08-22

「HeyPuter/puter」は、一言で言うと「ブラウザ上で動くオペレーティングシステム(OS)」です。でも、ただのOSじゃありません。これはインターネットを基盤とした、分散型Webアプリケーションを構築するためのオープンソースのフレームワークなんです。JavaScriptを書いて、ブラウザ上で動くOSのような環境を作り、ファイルシステム、ウィンドウ管理、GUIツールキットなどを活用することができます。これは、まるでブラウザの中に、自分だけの「パソコン」を作るようなイメージですね。

これは、ソフトウェア開発の新しい可能性を広げてくれるツールです。以下にいくつかのメリットを挙げてみましょう。

GUIアプリケーション開発の簡素化
GUI(グラフィカル・ユーザー・インターフェース)を持つアプリケーションを開発するのは、通常はかなり大変です。しかし、このフレームワークを使うと、ファイルシステムやウィンドウ管理などの基盤がすでに用意されているため、非常に効率的にGUIアプリケーションを開発できます。

Webアプリケーションの新しい可能性
従来のWebアプリは単一のページやサービスとして存在することが多いですが、これを使えば、複数のアプリケーションが連携し、ファイルやデータを共有する、よりリッチな「エコシステム」を構築できます。まるで、ブラウザ上で動くデスクトップ環境をまるごと作ってしまうような感覚です。

分散型アプリケーションの開発
「puter」は、分散型のアーキテクチャを持つことができます。これは、単一のサーバーに依存しない、より強固でスケーラブルなアプリケーションを構築する上で非常に有利です。

フルスタック開発者のスキルアップ
フロントエンド開発者が、ファイルシステムやGUIコンポーネントといったOSの概念に触れる良い機会になります。バックエンド開発者も、ブラウザ上でのロジックの構築や、新しいアーキテクチャの可能性を学ぶことができます。

導入はとてもシンプルです。今回は、npmを使った導入方法を説明します。

Node.js と npm のインストール
まず、開発環境にNode.jsとnpmがインストールされているか確認しましょう。

プロジェクトの作成
ターミナルで以下のコマンドを実行し、新しいプロジェクトを作成します。

mkdir my-puter-project
cd my-puter-project
npm init -y

「puter」のインストール
次に、puter を依存関係としてインストールします。

npm install @puter/core

これで、プロジェクトの準備が整いました!

簡単な「Hello World」アプリケーションを作ってみましょう。

index.html の作成

まず、アプリケーションの実行基盤となるHTMLファイルを作成します。

<!DOCTYPE html>
<html>
<head>
    <title>My first puter app</title>
</head>
<body>
    <div id="root"></div>
    <script src="main.js"></script>
</body>
</html>

このHTMLは、JavaScriptで構築されるGUIアプリケーションの「土台」となります。

main.js の作成

次に、アプリケーションのメインロジックを記述するJavaScriptファイルを作成します。

import { createApplication } from '@puter/core';

// アプリケーションを非同期で初期化
async function main() {
    const app = await createApplication({
        root: document.getElementById('root'), // HTMLのどこに描画するか指定
        apps: {
            'hello-app': async () => {
                // アプリケーションのコードをここに記述
                return {
                    name: 'Hello App',
                    icon: 'path/to/icon.png', // アプリのアイコン
                    main: async (context) => {
                        // ウィンドウを作成
                        const window = context.createWindow({
                            title: 'Hello',
                            width: 400,
                            height: 300
                        });

                        // ウィンドウにコンテンツを追加
                        const content = document.createElement('div');
                        content.innerText = 'Hello, puter!';
                        content.style.padding = '20px';
                        window.appendChild(content);

                        // ウィンドウを表示
                        window.show();
                    }
                };
            }
        }
    });

    // アプリケーションを起動
    app.run();
}

main();

このコードでは、createApplication 関数を使って、新しいアプリケーションを定義しています。'hello-app' という名前のアプリを登録し、その中でウィンドウを作成して「Hello, puter!」というテキストを表示しています。

アプリケーションの実行

このHTMLファイルとJavaScriptファイルを用意して、live-serverなどのローカルサーバーで実行すれば、ブラウザでOSのような環境が表示され、その中に「Hello App」が動くのが確認できます。


HeyPuter/puter




【エンジニア向け】Nextcloud導入の極意:データの主権を取り戻す方法

まず、コントに入る前に、Nextcloudが一体何なのか、そしてなぜソフトウェアエンジニアにとって重要なのかを簡単に解説します。Nextcloudは、一言で言えば「自分でホストできるプライベートクラウドストレージ」です。DropboxやGoogle Driveといったサービスと機能は似ていますが、決定的に違うのは、データがあなたの管理下にあるサーバーに置かれるという点です。


ダイエット中の俺が解説!Frappe/HRMSで実現するスマート人事!

今日はね、みんながソフトウェアエンジニアとしてバリバリ働く上で、とっても役に立つかもしれない強力なツール、その名も「frappe/hrms」について、コント風に解説していくぞ!ダイエット中の俺と一緒に、この素晴らしいオープンソースHR・給与計算ソフトウェアの魅力に迫ってみよう!


ラーメン屋の親父が語る!Pythonだけで作るWebアプリ「Reflex」

なんだか、小難しい顔してパソコンいじってるな。WebアプリをPythonだけで作ろうとしてるのかい? え? 難しくてなかなか前に進めない、だと?ったく、最近の若いもんは、すぐ諦めるからいけねぇ。だが安心しな。俺がとっておきの秘策を教えてやる。


バグ潰しに疲れたエンジニアへ:DirectusでAPI/CMS開発を終わらせる方法

ああ、バグ潰し. ..。コードと格闘するソフトウェアエンジニアなら誰もが通る道ですよね。そのお疲れ、よくわかります。「またこのAPIの認証設定か. ..」「DBスキーマの変更が全プロジェクトに響く. ..」「管理画面のデザイン修正、いつまでやるんだ!」と、コントのように叫びたくなるときもありますよね。


【エンジニア必携】AIコードアシスタントを「一元管理」!cc-switchで開発フローを劇的に効率化

コントのようなやり取りで解説するのは少し難しいですが、「farion1231/cc-switch」というツールの、ソフトウェアエンジニアにとっての価値、導入方法、そしてサンプルコードの考え方を、コンビニ店員と常連のお客さんのようなフレンドリーな会話調で、分かりやすく丁寧にお伝えしますね!


【脱・手作業】Reactエンジニアよ、動画編集もコードで「自動課金」せよ!Remotion入門

まさにRemotionは、私たちが普段ウェブサイトを作るのと同じ感覚で、Reactのコンポーネントを組み合わせて「MP4動画」を錬成できるライブラリです。ゲーム課金に例えるなら、「ガチャの演出をポチポチ手で作るんじゃなくて、スクリプトを組んで全パターンの排出アニメーションを自動生成する」みたいなチート級の効率化が可能になります。


Reanimated徹底解説:React Nativeアニメーションの未来か?

さあ、今日は「Reanimated」という素晴らしいライブラリについてお話ししましょう!React Nativeでアニメーションを実装する際に、標準のAnimatedライブラリを使うことが多いですよね。でも、「もっと滑らかに動かないかな…」「UIスレッドがブロックされてカクつく…」なんて感じたことはありませんか?そんな悩みを解決してくれるかもしれないのが、このReanimatedなんです!


C言語で魅力的なUIを LVGLではじめる組み込み開発

LVGLは、マイクロコントローラー(MCU)やマイクロプロセッサー(MPU)上で動作する、オープンソースのグラフィックスライブラリです。C言語で書かれており、非常に軽量でありながら、最新のスマートフォンやPCのようなリッチで美しいユーザーインターフェース(UI)を簡単に実現できます。


【エンジニア必見】Cinnamon/kotaemonでドキュメント管理を自動化する魔法

Cinnamon/kotaemonは、オープンソースのRAG(Retrieval-Augmented Generation)ベースのツールで、自分のドキュメントとチャットできる優れものなんだ。簡単に言うと、大量のドキュメントの中から関連情報を探し出して、それを基にAIが回答を生成してくれる仕組みだよ。


「情報を探す時間」を消滅させるAIパートナー:MineContextの技術スタック(PythonによるRAGとElectron/ReactによるUX)

「落ち着け、相棒!見ろ、このキーワードだ. ..volcengine/MineContext、electron、react、python. ..そして『コンテキストアウェアなAIパートナー』だと!?これはただの事件じゃない、ソフトウェア開発における『生産性の殺人事件』だ!」