Julia言語で奏でる詩

80億分の1のあなたへ
 

Julia言語をさくらサーバーで使ってみる.

カテゴリー: API, CGI, julia言語, さくらサーバー


以前にスタンダードプランのさくらサーバーにJulia言語をインストールし,Julia言語をさくらサーバー上で使えるようにしました.
さくらサーバー(スタンダート)にJulia言語をインストールする
今後,Julia言語を使用してのデータ分析・可視化などのサイトを作りたいと思って環境構築したのですが,直近の目標はLINE Botを作成しようと思っています.

今回行ったこと

今回,できたことはCGIを利用して,Julia言語でGET,POSTを受け取るところまでです.
本当は3連休を利用して最低限LINEに応答できるところまでは作りたかったのですが,Webの知識が足りず全く達成できませんでした.過去に,Azure,IBM cloud,Firebase,Heroku環境などでチャットボットを作成したことがあり,さくらサーバー上でFlaskの環境も構築したことがあったので材料は揃っており,できるかと思ったのですが,考えが甘かったようです.

今回試したこと(失敗に終わっています)

以下の3種類のいずれかでGET,POSTを受け取りレスポンスできる環境を構築したかったのですが,ローカル環境ならばわかるのですが,さくらサーバー上でどうやったら動くのかがわからず断念しました.
(どなたかわかる方がいましたら教えてください)
HTTP.jl
シンプルにWebサーバーが構築できる.
Genie.jl
おそらく1番有名なJulia言語のWebフレームワーク.さくらサーバー上で動かすこともできませんでした.
(必要なモジュールをインストールできていないだけかもしれません)
Merly.jl
Julia言語のWebフレームワーク.Genieよりも低機能だけれどもシンプルに作成できるイメージ.

実際の内容

まずはサンプルページ
※日々いじっているので表示されないこともあるかもしれません.

さくらサーバー上に適当なフォルダを作成し,以下の2ファイルを格納します.
・.htaccess
・index.cgi(実際はJulia言語のプログラムファイル)
また,ファイルの権限を僕は”755″にしています.Internal Errorの場合は権限を疑っても良いかもしれません.

まずは,.htaccess

# ほぼおまじないです
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
# RewriteRule ^(.*)$ /***自分の指定するフォルダ***/index.cgi/$1 [QSA,L]
# 僕の場合は,www/julia-server/line/
RewriteRule ^(.*)$ /julia-server/line/index.cgi/$1 [QSA,L]

次にindex.cgiです.
(拡張子は.cgiですが,中身はJulia言語です)

#!//home/***自身のJulia言語が格納されているパス***/julia-1.5.4/bin/julia
# ↑ おそらくすごく重要1

# こちらもすごく重要2
print("Content-type: text/html \n\n")

# 以下は自由で大丈夫だと思います.
println("<h1>Hello World!!</h1>")
println("<p>This page is written by Julia lang </p>")

# リクエスト内容は環境変数の中に格納されています
# 以下は例です
# GET or POST
println(ENV["REQUEST_METHOD"] , "</ br>")
# クエリパラメータ
println(ENV["QUERY_STRING"], "</br>")
# 以下を実行記述すると環境変数の一覧が確認できます
@show ENV

# また,POSTされたデータは以下で取得できます
req = readline()
@show req

終わりに

大した内容ではないのですが,全世界約76億人の中には僕と全く同じ悩みを抱えている人が1人でもいるかもしれないので,記録として残しておくことにしました.
この3連休に本当はマーケティングミックスモデル(MMM)などのデータ分析系にも手をつけたかったのですが,惨敗でした.viやbash,Webの基本的な仕組みなど,つまみ食い程度に知識が増えています.いつかこれらが体系的になり実を結んだら嬉しいですね.まだまだ先は長そうです.
(1人でやり続けるのは大変ですね.自分のペースでできるのは良いのですが)