【パート1】ChatGPTをデスクトップ上から使えるようにデスクトップアプリ化してみた|Node.js & Electron

公開日: 2023/5/15

最近、ChatGPTという物がとても注目されています。

私自身も、実際に使用してみてその性能に驚きました。

簡単な質問はもちろん、前提条件を指定した文章の作成や、プログラミングのコード作成までできてしまいます。

今回はその便利なChatPGTをデスクトップアプリ化し、どこからでも質問を行えるようにしていきたいと思います。

1. 概要・環境

今回の概要と環境です。

概要

Node,jsのフレームワーク「Electron」を使用して、ChatGPTをデスクトップアプリ化し、いつでも即座に表示して質問を行える環境を作る。。

環境

  • OS:Windows11
  • 主な言語:Node.js
  • フレームワーク:Electron
  • コードエディタ:Visual Studio Code

2. 環境説明


ざっくりと、今回使用していく環境の中で重要な物を解説していきます。

不要な方は読み飛ばして下さい。

2-1. Node.js

Node.jsを一言で表すと、「サーバーサイドで使用できるJavaScript」です。

一般的なWebアプリケーションでは、

  • 画面周り:HTML, CSS, JavaScript
  • システム周り:色々、例(PHP, Ruby, C#, Java, Python …)

という構成になっていると思います。

ですが、Node.jsを使用する事で以下のようにする事が可能です。

  • 画面周り:HTML, CSS, JavaScript
  • システム周り:Node,js(JavaScript)

他にも非同期処理が得意だったり、オンラインゲームのようなリアルタイムの通信がSocket.ioなどを使用して簡単に実装できたり、色々な特徴があります。

Node.jsの実行速度も、Googleが開発している「V8」というJavaScriptの実行エンジンを使用しているので、他のインタプリンタ言語と比較しても高速らしいです。

2-2. Electron

簡単に説明すると、「デスクトップアプリをWebの技術で開発できるNode.jsフレームワーク」です。

HTML, CSS, JavaScript, Node.js で作成したWebアプリケーションやWebサイトなどを、デスクトップアプリとして表示できます。

また、公開されているWebサイトへのURLを使用し、そのサイトをデスクトップアプリとして表示する事もできるので、「C#など別言語で作成したWebアプリケーションをデスクトップアプリ化する」という事も実現可能です。

3. 環境設定1:Node.jsのインストール

公式のドキュメントや他サイトなどを参考に、Node.jsをインストールします。

インストールが終了したら、「Windows(マークの)キー + Rキー」を押し、出てきた欄に「cmd」と入力して「OK」を押して下さい。


コマンドで「node -v」を入力をした後エンターを押し、画像のような「V **.**.* (*は数字)」の表示が出てきたらNode.jsのインストール完了です。


4. 環境設定2:プロジェクトフォルダの作成

今回のプロジェクトフォルダを作成します。

フォルダを作成する場所はどこでも大丈夫です。

自分の場合は、「C: > Users > ユーザー名 > Documents > My Program」という形で配置しました。


5. 環境設定3:package.jsonの作成

「Visual Studio Code」で先ほどのプロジェクトフォルダを開きます。


「ctrl + shift + @」でターミナルを開き以下のコマンドを実行します。

  npm init -y


6. 環境設定4:Electronのインストール

引き続き、ターミナルで以下のコマンドを入力します。

  npm install -D electron

正常に実行された場合、プロジェクトフォルダ内に「node_modules」というファイルが追加されます。

7. main.jsの作成

メインの実行プログラムを作成していきます。

以下の様になるようindex,jsファイルを作成してください。

      Desktop-GPT/
      ┠ node_modules/
      ┠ index.js  ←
      ┠ package-lock.json
      └ package.json


作成を行ったら以下のコードを入力します。

      // モジュールのインポート
    const { app, BrowserWindow } = require('electron');

    // メインウィンドウの変数
    let mainWindow = null;

    // ウィンドウを作成する関数を定義
    function createWindow () {
      // メインウインドウを作成
      mainWindow = new BrowserWindow({
        width: 1000,
        height: 1000,
        webPreferences: {
          nodeIntegration: false,
        },
      });

      // パスを指定
      let mainPath = 'https://chat.openai.com';
      mainWindow.loadURL(mainPath);

      // ウィンドウが閉じられた時にmainWindowにnullを設定する
      mainWindow.on('closed', () => {
        mainWindow = null;
      });
    }

    // アプリケーションが起動した時に呼び出されるイベントリスナー
    app.on('ready',() => {
      // メインウィンドウの作成
      createWindow();
    });

このコードはElectronを使用してアプリケーションを作成する時の基本的なコードです。

コード内の「パスを指定」という部分で、現在はChatGPTのURLを表示していますが、ここをローカルのHTMLファイルに指定し、自身で作成したWebアプリケーションを起動させることも可能です。

    // パスを指定 (ローカルのHTMLファイルへの指定に変える場合)
    // let mainPath = 'https://chat.openai.com';
    let mainPath = ‘file://’, + __dirname + ‘/index.html’;
    mainWindow.loadURL(mainPath);

今回はChatGPTを使用したいので、mainPathに代入する物は最初のままにしてください。

8. main.jsの起動

とりあえず、ChatGPTのページをデスクトップアプリケーションとして起動できるコードが完成したので、ひとまずは起動していきます。

「Visual Studio Code」内で開かれているターミナル内に、以下のコマンドを入力し、実行してください。

      npx electron index.js 


「npm」ではなく「npx」なので注意してください。

npxはパッケージを実行する為のコマンドラインツールであり、ローカルのパッケージのコマンドを直接実行する事ができます。

実行し、以下の画像のようにChatGPTの画面が表示されたら完了です。


9. パート1のまとめ

内容が多いので、ひとまずはパート1として「初期設定 ~ デスクトップアプリとしての起動」までを行いました。

このままでは単純にページが表示されているだけなので、時点以降では簡単に表示・非表示ができるようにしたり、パッケージングをしてexeファイルを作ったりしていきたいと思います。