LoginSignup
1
2

話題のCode InterpreterでChatGPT環境にNode.jsをインストールしてみる

Last updated at Posted at 2023-07-12

インストールというか環境に設置だけ出来たって話です。 2023年7月12日時点話題ですが、ちょっとしたらやれるようになりそうな気がしますよね。

(半分釣りタイトルになってしまいました。期待した人すみません。)

Python使えるらしいけどNode.js使えないのかな

コードインタープリター、話題ですね。

Code InterpreterはPythonの実行ができますが、Node.jsなど他の実行環境は使えないみたいです。

数日前の使えるようになったタイミングでもこんなこと言われてました。

スクリーンショット 2023-07-12 16.25.48.png

ネットワークには繋がらない問題

Pythonのコードを実行できたりしますが、環境上ネットワークに繋げられない制約とのことです。

voltaというNode.jsのインストーラーを入れようかと思いお願いしてみましたが、ネットワークアクセスは禁止していてcurlとかは使えない模様でした。

curl https://get.volta.sh | bash これを実行してください。

スクリーンショット 2023-07-12 16.30.20.png

データをアップロードすると扱えるらしい

こちらの記事を見てたら日本語フォントをアップロードして使うことができていました。

ということはNode.jsのバイナリをアップロードしたらいけそうなのでは?

Node.jsのインストールにチャレンジ

バイナリファイルをDLして環境で実行できないか試してみます。

ファイルをDL - Linux x86_64(AMD64)

バイナリは何をDLするべきかって話ですが、 環境はLinuxベースのx86_64(AMD64) と教えてくれました。

スクリーンショット 2023-07-12 16.34.51.png

ということでLinux Binaries (x64)をDLしてみます。

スクリーンショット 2023-07-12 16.35.59.png

ファイルの解凍

DLすると圧縮ファイル形式なので、アップロードして解凍してもらいます。

スクリーンショット 2023-07-12 16.46.05.png

スクリーンショット 2023-07-12 16.46.33.png

無事に解凍してもらえたみたいです。

/mnt/data/nodejs-x64 に保存される模様です。

ちなみにChatGPTが書いたここでのコードはこんな感じらしいです。記事の最後に書きますが、このコードになるまで自分でデバッグ繰り返してくれました。恐ろしい。。

# Import the tarfile and os modules again
import tarfile
import os

# Define the path of the new tar file
tar_file_path = "/mnt/data/node-v18.16.1-linux-x64.tar.xz"

# Define the directory where to extract the new tar file
extract_dir = "/mnt/data/nodejs-x64"

# Create the directory if it doesn't exist
os.makedirs(extract_dir, exist_ok=True)

# Open the tar file
with tarfile.open(tar_file_path, "r:xz") as tar:
    # Extract the tar file
    tar.extractall(path=extract_dir)

# List the files in the extracted directory
os.listdir(extract_dir)

解凍されたフォルダ内のファイルを教えてもらう

問題なく進んできたので一覧表示してもらいます。

スクリーンショット 2023-07-12 16.51.49.png

本体がいそうなbinフォルダ内が気になりますね。

さらに聞いたら一覧が表示されました。

スクリーンショット 2023-07-12 16.53.04.png

"/mnt/data/nodejs-x64/node-v18.16.1-linux-x64/bin/node"としてインストールできた

パスを通してないですが、この場所に展開できた模様です。

/mnt/data/nodejs-x64/node-v18.16.1-linux-x64/bin/node

スクリーンショット 2023-07-12 16.59.29.png

実行権限を付与

念の為バイナリに実行権限を付与しておきます。

スクリーンショット 2023-07-12 17.40.08.png

os.chmodは使えるみたいですね。

# Import the tarfile and os modules again
import tarfile
import os
import stat

# Open the tar file
with tarfile.open(tar_file_path, "r:xz") as tar:
    # Extract the tar file
    tar.extractall(path=extract_dir)

# Change the permissions of the node binary to add the execute permission
os.chmod(node_bin_path, os.stat(node_bin_path).st_mode | stat.S_IEXEC)

# Check the permissions of the node binary
os.stat(node_bin_path)

インストール"は"できたっぽい

ぽいって感じですが。。。実行は怪しい雲行き。

スクリーンショット 2023-07-12 17.13.43.png

実行してみる

まずはそのまま実行してみると予想通りの反応です。
Pythonのみサポートと怒られます。

スクリーンショット 2023-07-12 17.02.15.png

PythonのみサポートらしいのでPythonで実行してもらう

PythonのみサポートらしいのでPythonからShell実行してもらいます。

Pythonだとsubprocessを使えばシェルコマンド実行できるっぽいので以下をお願いしてみます。

subprocess.run(["/mnt/data/nodejs-x64/node-v18.16.1-linux-x64/bin/node"], shell=True)

スクリーンショット 2023-07-12 17.09.30.png

ぐぬぬ。。

まぁそうですよね。subprocessは使えないようにしてる模様です。

os.system()だとどうでしょ?

スクリーンショット 2023-07-12 17.14.18.png

うん、まぁ予想通り。この辺が一旦限界ですかねぇ。

悪あがきでSeleniumからJavaScriptを実行...?

まぁ予想通りですが、これもできないです。

スクリーンショット 2023-07-12 17.16.28.png

参考:

まとめ

ファイルの解凍と設置、ファイルの一覧表示などはできて、権限付与もできて、 Node.jsのインストールっぽい状態まではいけた 感じがします。実行ができない状態です。

  • できなかった
    • ネットワークアクセス
    • Python以外のプログラミング実行
    • シェルコマンドの実行
      • Pythonでもsubprocessやos.systemなどのコマンド実行系はできない
  • できた
    • ファイルの一覧取得
    • 解凍
    • ファイルに権限の付与

コードを書く => エラーが出て直すを再帰的にやってくれる がすごかった

最後によもやま話です。

現状やれることは限られてますが、これ使ってみててやばいなって思ったポイントです。

途中の解凍して一覧表示する際に何回かChatGPT自身でエラーがでて、コードを修正てしを繰り返してくれていました。

エンジニアたちがやるようなプロセスを勝手にやってくれるの凄すぎますね。

現時点だとローカルでの処理が出来るので、 データ分析のためにPython勉強してますって人はもう現時点で(勉強)要らないかも しれませんね。

ネット接続や他言語の実行とかも出来るようになっていったらいよいよコード書かなくていい時代に...みたいなこと思ってましたがもうこれはその時代になったと思っていいんでしょうね。

現時点だと特定の領域に限られますが時間の問題な感じがすごいです。

考えさせられます。

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