1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

小さな困りごとの山を解決!ブラウザで動く「SF-OS」が私のPC環境を救った話

Last updated at Posted at 2025-12-02

小さな困りごとを解決!ブラウザで動く「SF-OS」が私のPC環境を救った話

この記事はQiita Advent Calendar 2025
身の回りの困りごとを楽しく解決! by Works Human Intelligence
の12/3の参加記事です。

💡 はじめに:「PC難民」だった私を救ったブラウザデスクトップ

皆さん、新しいOSへの移行や古いPCの活用で困った経験はありませんか?

2024年以降、私はある大きな「困りごと」に直面しました。それは、Windows 10のサポート終了に備え、手持ちの古いPCでまずは、ChromeOS Flex、最近ではLinuxのZorinOS 18といった代替OSへの移行を試みたことです。

しかし、そこで見つけた新たな壁…それが「アプリ不足」と「環境の不統一」でした。

この問題を、私は自作のWebアプリ群、通称「SF-OS(Simple Fake Desktop OS)」を継続して維持開発することで「楽しく」解決しました。本記事では、SF-OSがどのようにして私の、そして多くのユーザーのPC環境の困りごとを解決したのかを、その開発経緯とともにご紹介します。

💻 困りごと①:OS移行の不安と「アプリがない」問題

1-1. 開発の原点:8インチタブレットの制約

SF-OSのアイデアは、約5年前、ストレージ容量が極めて限られた8インチWindowsタブレットを使っていた時の「ちょっとした作業のためのソフトがインストールできない」という切実な困りごとから生まれました。

「ちょっとしたメモ、画像リサイズ、簡単なコード実行…それだけのために大がかりなソフトはいらない!」

1-2. 2024年の決定的な課題:Windows 10サポート終了

2024年10月以降、私は実際にChromeOS Flexのみでの個人用PC生活を始めました。古いPCを延命できた喜びの裏で、以下の具体的な「困りごと」に遭遇しました。

遭遇した困りごと なぜ困るか SF-OSでの解決アプリ
ファイル管理 Linux的なTarファイルをGUIで手軽に展開できない。 TARアーカイブ・展開ツールを生成AIで作成。
業務対応 日本特有の電子印鑑が使えず、業務プロセスが継続できない。 電子みとめ印を生成AIで作成。
Webデザイン アイコン検索サイト(iconhunt.site)が突如サービス停止し、デザイン作業が滞る。 アイコン検索アプリを緊急追加して対応。
日本語文書 PDF結合や変換ツールはあっても、日本語フォントに対応しておらず文字化けする。 PDF結合など日本語対応のPDFツールを生成AIと会話しながら開発。

1-3. もう一つの困りごと:作業の継続性(ウィンドウ復元機能への挑戦)

SF-OSはWebサイトとして動作するため、ブラウザを閉じたり、PCを再起動したりすると、開いていたアプリのウィンドウは消えてしまい、作業を中断せざるを得ませんでした。これは「疑似OSもどき」としての大きな弱点でした。

この問題を解決するため、最近「ウィンドウ復元機能」の開発に着手しました。SF-OS終了時にウィンドウの状態を記録し、次回起動時に前回終了時の状態を再現することで、作業の継続性を確保します。

テスト動画

🛠️ 技術解説:jsPanelとlocalStorageによるウィンドウ状態の復元

SF-OSは、jsPanelというJavaScriptライブラリを利用して、ブラウザ上に自由な移動・サイズ変更・最大最小化が可能な「ウィンドウ」を生成しています。このライブラリが、OSのようなデスクトップ環境の土台です。

このjsPanelとブラウザのlocalStorageを組み合わせ、以下の手順で復元を実現しています。

【状態の取得と永続化】
まず、すべての開いているパネル(ウィンドウ)のID、位置、サイズ、コンテンツURL、そしてZ-Index(重なり順)などの情報を取得し、5秒おきにlocalStorageへ保存します。

// ウィンドウの状態をlocalStorageに保存する処理(抜粋)
function getActivePanelInfo() {
    const activePanels = jsPanel.getPanels();
    const panelInfoList = [];
    
    activePanels.forEach(panel => {
        // Z-Index(重なり順)や最小化状態も取得するのがポイント
        const zIndex = panel.style.zIndex ? parseInt(panel.style.zIndex) : 0;
        const isMinimized = panel.status === 'minimized'; // 最小化状態
        
        panelInfoList.push({
            // ... 位置、サイズ情報など ...
            zIndex: zIndex,
            isMinimized: isMinimized
        });
    });
    // localStorageに保存
    // savePanelStatesToLocalStorage(panelInfoList);
}
setInterval(getActivePanelInfo, 5000); // 5秒ごとに実行

【復元時の工夫とコアロジック】

復元時には、単にウィンドウを再表示するだけでなく、OSの挙動を模倣するための工夫を施しています。

function restorePanelsFromLocalStorage() {
    const jsonString = localStorage.getItem('sfos_panel_states');
    if (!jsonString) return;
    let savedStates = JSON.parse(jsonString);

    // 🌟 1. 技術的ポイント:Z-Indexの昇順で並べ替え
    // パネルを重ねた順序(重なり順)を再現するため、zIndexの小さい順にソートして生成します。
    savedStates.sort((a, b) => a.zIndex - b.zIndex);

    // 2. 各状態を反復処理し、パネルを復元
    savedStates.forEach(state => {
        
        // 🌟 2. 技術的ポイント:最小化パネルの復元回避策
        if (state.isMinimized) {
            // 最小化パネルは、ライブラリの制限で元の位置(-9999pxなど)に復元すると画面外になるため、
            // あえてランダムな可視位置で復元し、ユーザーに情報を提供
            var randomLeft = Math.floor( Math.random() * 11 ) * 10 + 20;
            var randomTop = Math.floor( Math.random() * 11 ) * 10 + 70;

            // jsPanel.create(ランダム位置設定) ...
            
        } else {
            // 通常表示のパネル: 元の位置・サイズ・Z-Indexで正確に復元
            const panelConfig = {
                // ... 元の位置・サイズ設定 ...
                zIndex: state.zIndex,
            };
            // jsPanel.create(panelConfig) ...
        }
    });
}

このアプローチにより、SF-OSはOSのような「セッション管理」の機能を実現し、ユーザーの「困りごと」である「作業の中断」を防いでいます。


🚀 解決策:生成AIを活用した「SF-OS」の開発加速

これらの具体的な「困りごと」を乗り切れた最大の要因は、2024年に爆発的に普及した「生成AI」でした。

2-1. 開発プロセスの劇的な変化

以前は「既存のスニペット紹介サイトのコードを地道に改変・統合」してアプリを作っていましたが、生成AIの登場でプロセスが一変しました。

現在の開発プロセス:
「Tarファイルを展開するGUIツールをJavaScriptで」とAIに指示
→ AIがコードスニペットを生成
→ SF-OS環境に統合し、即座にテスト

この「困りごと発生」→「AIに要件定義」→「アプリ化」というサイクルが確立した結果、SF-OSのアプリ数は爆発的に増加しました。

日付 アプリ数 増加の背景
2022/08/30 60個 コア機能の確立期
2024/11/09 148個 生成AIによる生産性向上OS移行支援の本格化(困りごとの集中解決)
現在 239個 かなり広いジャンルの困りごとの網羅を達成し、今後も機能追加を継続

2-2. SF-OSのコアコンセプト:Anywhere, AnyDevice, AnyOS

SF-OSが目指すのは、OSやデバイスに縛られず、どこでも同じ環境で困りごとを解決できることです。

  • Anywhere: インターネットがあればどこでもアクセス可能。
  • AnyDevice: PC、タブレット、スマホ、どのデバイスでも使える。
  • AnyOS: Windows、Linux、ChromeOS Flex… どのOSのブラウザ上でも動作し、環境の違いによる混乱をなくす。

✨ 困りごとの種類別に見るSF-OSの豊富な機能

SF-OSは、現在239個のアプリを搭載し、あらゆる分野の「ちょっとした困りごと」を解決します。

3-1. 【開発・学習の困りごと】を解決

代替OSへの移行時、環境構築で困る開発者のために、複雑な設定なしにコードが動く環境を提供します。

  • Monaco新エディタ(高機能なWeb版VS Code)
  • Pythonエディタ / JS簡易実行環境
  • Mermaid図(コードから図を生成)
  • CodePenアプリ / Repl.itアプリ(外部SaaSへの窓口)

3-2. 【画像・PDF処理の困りごと】を解決

プロ用ソフトや外部サービスに頼らなくても、手軽に処理できるようにします。

  • WebP⇒JpegSVG⇒画像変換
  • 画像超解像処理(AI活用)
  • OGP画像切抜 / BG-Image-Remover(Web/SNS特化)
  • 見開きPDFビューワ / 簡易PDF結合(日本語対応)

3-3. 【ニッチな日常の困りごと】を解決

日常生活で突発的に発生する困りごとにも対応します。

  • シンプル家計簿 / 割り勘
  • ストップウォッチ / タイマー付きカメラ
  • あみだくじ生成 / ビックリマンシール風画像(楽しさも追求)

3-4. 【未来の困りごと】にも備えるAI統合

SF-OSは、単なるツール集ではなく、WEBGPUなど最新技術を統合するデスクトップを目指しています。

  • 軽量WebLLM:ブラウザ内AIチャット
  • SF-OS-AI検索:アプリの使い方をAIが説明
  • EasyMemo:AIによる翻訳機能を統合

結び:困りごと解決のキーは「自立」と「生成AI」

SF-OSの開発は、「他者のサービスに依存せず、必要な機能は自前のプラットフォームに内包する」という哲学に基づいています。Canvaのような巨大なサービスは内包できませんが、「日常の作業の90%」はブラウザ内で完結させ、残りの10%をスムーズに外部サービスへ繋ぐ「ブリッジ」の役割を果たすことを目指しています。

Windows 10サポート終了、新しいOSへの移行、外部サービスの停止、日本語対応の壁、そして作業継続性の課題——これらの身の回りの困りごとは、生成AIによる高い生産性SF-OSの自立的なワークスペース戦略によって、楽しく、そして実用的に解決することができました。

皆さんも、ご自身のPC環境の困りごとを、身近なWeb技術と生成AIを使って解決する喜びを体験してみませんか?


【デモサイト等はこちら】

Happy Coding!

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?