PythonもJuliaもSQLもオンラインで、時にはiPadで、しかも無料で作業したい
目的
DesktopやLaptopを使うことなく、またLaptopを使う場合でも格安ChromebookやiPadといったデバイスからでも、JuliaやSQLをJupyter Notebook上で実行できるようなオンライン環境があるといいなと探していました。
JuliaやSQLの場合
Pythonをオンラインで使う方法はGoogle Colabを始め、アプリやいろんなサービスがあると思います。でもJuliaやSQLとなると途端にWindowsやMac, Ubuntuを使うことになるか、JuliaHubのような有料オンライン環境を使うことになります。もしくは自分のサーバーを持ち、そこにJupyterを実行させSSHで繋いで実行していく方法もあります。それも悪くはないんですが、気軽に個人的なプロジェクトを試したい時は、気軽に無料で始めれられる方がいいです。そして全部オンラインで済ませたい。それであれば時にはiPadでもキーボードがあれば作業できるからです。
Deepnote
Google Colabの次に人気なのはDeepnoteだと思います。Medium.com(特にTowards Data Science)を読んでいると、サンプルの環境としてGoogle Colabと同時にDeepnoteのリンクが貼られるのを見かけるようになりました。
Google ColabでもJuliaを実行はできるんですが、どうしても毎回毎回環境を作ってカーネルリスタートみたいなことをする必要がありました。いつも同じバージョンを使っているならともかく、新しいのを作るのも面倒になってしまったり、ダウンロードしたバージョンと、Jupyter Notebookのバージョン指定があってなくてうまく作動しなかったりと、Data Scienceとは必要外の作業に時間をとられてしまうことが多々ありました。
それに比べるとDeepnoteではカスタマイズしたDockerfileを使うことができます!
Deepnoteでは無料でも多分4-5つほどのプロジェクトが作成できますし、一つのプロジェクトでいくつものNotebookを作れるので、一度、DockerfileにJulia環境を作ってしまえば、そのプロジェクト内のNotebookはそのJulia環境ですぐに使えることができます。
iNeuron
似たようなことをしているのが、iNeuronです。インド人の友達が以前紹介してくれたインドの会社ですが、徐々に大きくなってきました。Neuro Lab はPythonはもちろん、Data ScienceやWeb Developmentの方の環境も提供しています。
インドの会社なので、ここが提供するオンライン授業も英語ですし、値段がアメリカのオンラインコースと比べるととても安い。試してみる価値はあります。
JuliaをDeepnoteで
私は自分でDockerfileで環境を作れるのがいいのでDeepnoteを使っていますが、無料では環境構築に時間がかかると途中で止まってしまうので、多くのものをプレインストールすることはできません。
その都度 Pythonの!pipのようにNotebook上でインストールする必要があります(後述)。
私が今使ってるDockerfileはこれです。
FROM deepnote/python:3.7
RUN wget https://julialang-s3.julialang.org/bin/linux/x64/1.8/julia-1.8.5-linux-x86_64.tar.gz && \
tar -xvzf julia-1.8.5-linux-x86_64.tar.gz && \
mv julia-1.8.5 /usr/lib/ && \
ln -s /usr/lib/julia-1.8.5/bin/julia /usr/bin/julia && \
rm julia-1.8.5-linux-x86_64.tar.gz && \
julia -e "using Pkg;pkg\"add IJulia DataFrames DataFramesMeta CSV HTTP StatsBase CategoricalArrays MLJ RDatasets BenchmarkTools Dates Glob ScientificTypes PrettyPrinting StableRNGs Gadfly\""
ENV DEFAULT_KERNEL_NAME "julia-1.8"
後はこれでENVIRONMENTのところでLocal ./Dockerfileを選べば終わりです。
一つJulia_Projectsなるものを作ってこの環境を選択してしまえば、このプロジェクトの環境はJuliaということになり、いくつものNotebooksを作成してもそれはJuliaを実行することができるので、Colabに比べて非常に簡単です。
他のパッケージを使う場合
PlotsやMakieのプレインストールも色々と試みてみましたが、どうしても途中で止まってしまいました。後でインストールはできるのですが、ご存知の通りJuliaはコンパイルが必要なのでその時間をとるためにどれを選択するかという話になります。ここではプロットにはRのggplot同様のGadflyというパッケージを使うようにしています。
もし他のパッケージを使う場合はどうすればいいでしょうか。たとえばDuckDBを使いたいとします。やり方はとてもシンプルです。
import Pkg; Pkg.add("DuckDB")
とするだけです。
今回はあえてデータフレームをデータベースに登録してSQLを使う形をとりましたが、Juliaを簡単に実行できるのはありがたいです。
書く事だけにあえて絞るために格安Chromebookを購入しましたが、Juliaを実行できてしまえるんですよね。
おまけ ChatGPT-4
ChatGPT-4が公開されたので、同じことができるか試してみました。GPT-3.5の時はデータが2021年までのデータをもとにトレーニングされていたようなのでJuliaのコードはいまいちでした。なのでGPT-4でどうなったか試してみた結果が次のとおりです。
いやあすごいですね、ChatGPT-4!
Discussion