LoginSignup
12
4

More than 5 years have passed since last update.

Elm日記1

Posted at

5分で書く

@suin さんが「5分でQiita記事書くのがおすすめ」と仰っていたので、実践してみます。

主旨

Elmについて学んだことや試したことを書きます。
ある程度まとめてから面白く書こうと思っていたら、いつまでも書かないでいたので、まとまりの悪い記事をちまちま書くことにしました。

Elmとは

コンパイルするとHTML、JavaScript、CSSを出力してくれる言語です。
素のJavaScriptを頑張って書こうとするとぐちゃぐちゃになりやすいですが、
Elmは言語のルールが厳格なので汚くなりにくい、きれいなソースを維持!
(間違ってたらごめんなさい)
公式サイト
日本コミュニティ
日本語ガイド(コミュニティの方々が素敵に訳してくださっています)
英語コミュニティのslackもありますが、ものすごい人数&チャンネル&英語オンリーなので、ついていけませんでした。辛うじてHappyNewYear!は読めました。

環境構築

ガイド見てやりました!
ただし、自分はスマホからいじれるようにしたかったので、
VPS(AWS Lightsail)を借りてそこにインストールしました。

  1. 借りる
  2. nodeをインストール
  3. elmをインストール

別にVPSじゃなくても、コンパイルしてできあがったHTMLたちをNetlifyにあげるとかすれば動作確認できますが、スマホでそれするのが面倒そうだったので。。。

スマホで何すんのよ

ガイド見ながらコマンド実行

Elmには、Replという、コマンドを単発で実行する機能があります。
ガイドを見ながらReplして、動きを確認しつつ学びたかったのです。

ひとさまのソースコードをコンパイルして実行

ElmはWebサーバー機能も持っています。
「elm reactor」と入力すると、ビルドしつつデプロイしてWebサーバーを起動してくれて、ブラウザからローカルにアクセスして動かせます。
さすがにスマホで開発するのはキビシイですが、githubからcloneしてきた、素晴らしいソースコードを実行してみるのに役立っています。

VPS特有のつまずき

「elm reactor」すると、localhost:8000にアクセスして動作確認できるようになるのですが、VPS上でそれをやっちゃうと、どうやってアクセスしたらいいもんだか…と困りました。
解決策としては2つ考えました。

  1. nginxなどのWebサーバーを別途インストールして、コンパイルしたHTMLたちをそこに置く(ためのshellを作っておく)
  2. nginxを使うのは同じなんだけど、リバースプロキシ(というものらしい)の設定をして、nginxに対してのリクエストをElm内Webサーバーに転送する

ふつうに1が良さそうなんですが、2を採用しました!
最初は、リクエストURLがelm/で始まるものだけ転送しようとしたのですが、HTML内で読み込んでいるCSSやJSのファイルたちが絶対パスで書いてあり(俺が書いたわけじゃねーっす。Elmが出力したものです)、思っていたような動きにならず、全てのリクエストをelmサーバーに転送することにしました。
(nginxとかリバースプロキシのあたりでつまずいていたら、@enmaさんが情報くださいました。感謝です。)

5分で書けたかな?

気がつけば40分書いていました…こんなに雑なのに…
5分って難しい。次回こそは。

12
4
6

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
12
4