コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

月曜日、人は人生に絶望するとエルムをはじめてしまうのだ

絶望の一週間がはじまります

おはようございます。僕です。今日も月曜日が来てしまいました。新しい元号になって気持ちを切り替えようとした矢先に気分が滅入りますね。


さて、そんなわけで本日は新元号ということで新言語に手をだすとかやっていこうと思います。新元号だけに……。はい。まあそういうのいいね…。んで、Elmやっていこうと思います。以前ちょっと対話環境でいじってたんですけどね。もう少し実践的にいじれるようにしていきたいなって思ったんでいじっていきます。

【Elm】
Elmは、ウェブブラウザベースのグラフィカルユーザインタフェースを宣言的に作成するためのドメイン固有プログラミング言語である。Elmは純粋関数型言語であり、ユーザビリティ・パフォーマンス・堅牢性を重視して開発されている。静的かつ強力な型検査によって「事実上一切の実行時例外が起こらない」ことを売りにしている。
Wikiより

これをおもむろにやります。

公式
elm-lang.org


やってみた

導入します。

# 導入コマンド elmコマンドが使えるようになります
$ npm install -g elm
# 適当なファイルつくってその中にプロジェクトつくります
$ elm init
$ elm install [追加するライブラリ]

そう、僕は平気でグローバルインストールして色々と環境を汚染してしまうクズなんだ。こんなんだから誰も僕を愛さないのだ……。

んで、準備ができたら確認のためにWebサーバを起動します。

# Webサーバ起動 (--port [ポート番号])
$ elm reactor
Go to <http://localhost:8000> to see your project dashboard.

デフォルトは8000番らしいです。--portでポート番号指定できるそうです。8000番は激戦区なんで被ったりしたら変更しよう。
f:id:andron:20190501092352p:plain
起動したところをみてみるとこんな感じです。そこから作ったelmファイルを開くとなんか色々表示されます。


んでとりあえずハローワールドを作ってみた。
f:id:andron:20190501113450p:plain

以下クソコード

import Html exposing (..)
-- elm/time 追加
import Time exposing (..)

toJpnWeekday : Weekday -> String
toJpnWeekday weekday =
  case weekday of
    Mon -> "月"
    Tue -> "火"
    Wed -> "水"
    Thu -> "木"
    Fri -> "金"
    Sat -> "土"
    Sun -> "日"

main =
  div [] [ 
     h1 [] [text ("Hello, "++(toJpnWeekday Mon)++"曜日")]
  ]

とりあえず以前よりやりたかった静的サイト作りは普通になんとかできそうな手ごたえを得た(それだけ)。時刻関係の操作はまだよくわかんね。まあ突如として人生に絶望して始めてしまっただけだし今日の成果はこんなところで。

参考
Introduction · An Introduction to Elm
Elm Packages


感想

人生に絶望してはじめてしまったのですが、国内情報がみじんもないのとアップデートが激しすぎるのでとりあえず分かる範囲をひろいながらやっていこうと思った。ちなみに今回はElm 0.19.0で動作確認してます。timeがdateと併合したとかtoStringが効かなかったりとか、それの影響なのかよくわかんなかった。あと、これをやるメリットとかはちょっとよくわかってないです。

あ、ここによると2019年わざわざ学ぶ必要のない言語とかにあげられていたりする…。絶望……。
Study of Programming Languages Not to Learn in 2019


人は人生に絶望するとどうにかしたいと無駄なあがきをしてしまうのだ……。