memorandums

日々の作業ログです。

repl.itで標準入力の文字コード指定が難しい

昨年から担当授業の言語をJavaからRubyに変える必要がありました。

学科の演習室パソコンはシンクラ&WindowsなのでRubyRails開発の環境セットアップが難しいのです。。。できなくはなさそうですがシンクラのイメージ構築は業者任せなので細かい設定ができません。もちろん私にも知識はないし調べる余裕もないので。

で、クラウドに逃げました。

Rubyの演習はpaiza.ioを。RailsはCloud9を使いました。

paiza.ioは日本の会社が開発していることもありUIも日本語ベースでよかったのですが、標準入力は予め用意しておく必要がありました。インタラクティブに操作しながらメニューを表示してまた入力する。。。といったことがしにくかったんですね。

そこで、昨日から探索したところ、以前から知っていたrepl.itが良くなっているようで。

特に、標準入力はCloud9のようにほぼターミナルのように扱うことができます。

Repl.it - The world's leading online coding platform

これはいいや、と早速、本日の演習から使いはじめてみました。UIの言語を選択することができないので英語ですがメニューはそれほど多くないので難しくはありません。

ちなみに、Railsアプリの開発もできるようです。手順がちょっと一工夫(ターミナルウィンドウを表示する操作)が必要なので、一応、忘れないように画面記録してみました。

www.youtube.com

ターミナルもどきが使えるのでrailsコマンドも使えます。db:migrateもしてくれます。いやはや凄い。単体パソコンとは多少使い勝手が異なりますが、慣れれば何とかなります。

で、本題。

本日は、初回講義ということでRubyの復習(ちなみに私の担当授業は3年生向けで、1年の前期に別の先生がRubyを教えています)でした。

で、問題がわかったコードが以下。

puts gets

これで日本語(マルチバイト文字)を入力すると。。。以下のエラーが表示されました。

あれあれ
"\xE3" on US-ASCII
(repl):1:in `puts'
(repl):1:in `puts'
(repl):1:in `

'

repl.itのサーバ側で動いているVMのLANGを見ると設定なし。。。ということでたぶんUS-ASCIIになっているんだと思うんです。そこにWebページからUTF-8の文字列が入力されたけどUS-ASCIIとして解釈されて文字化けが起こった。。。Ruby自体はUTF-8ですが。

そこで、上記のRailsアプリの動画の手順と同じように、ターミナルを開いてLANGを設定して手動で実行してみました。無事動作しました。

f:id:ke_takahashi:20190410193156p:plain

でも、そのままrunボタンを押しても結果は上記の通りエラーになります。ターミナルでの設定内容を反映するため以下の赤丸印を押すと別タブが開かれて、そこではLANGの設定を反映した状態でRubyを再実行できました。

f:id:ke_takahashi:20190410192138p:plain

でも、やはりrunボタンでの実行ではムリです。。。うーん。

ちなみに、コードを以下のように書き換えてみました。

puts gets + "さん"

結果は以下の通りでした。

f:id:ke_takahashi:20190410193419p:plain

ターミナルウィンドウではうまく動きました。

f:id:ke_takahashi:20190410193458p:plain

おしい。。。

.profileか.bashrcを書き換えてみたんですが。。。プロジェクトを再度開くとその設定は消えてしまいます。どうしようもないなぁ。。。

なんかありそうですけどね。。。とりあえず今日はここまで。



■追記 上記の問題、部分的に解消する方法がありました。一応。。。

memorandums.hatenablog.com