SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Build Dockerfile with
Haskell
ひげ
本題
Elixir しってるひと?
Elixir
2012年生まれ
Rails コミッタが Erlang に感銘を受けて作成
動的型付け言語
ErlangVM 上で動作
平行処理につよい
Phoenix がつよい
WebSocketを抽象化した機構
Elixir
2012年生まれ
Rails コミッタが Erlang に感銘を受けて作成
動的型付け言語
ErlangVM 上で動作
平行処理につよい
Phoenix がつよい
WebSocketを抽象化した機構
“型検査” 欲しいじゃん
いま型検査が熱い!
最近流行りの Go と Rust は静的型付け
JavaScript : TypeScript が人気
Python : Type Hinting
Ruby : Ruby3 になんらかの型検査を
Elixir : 入れたいらしい
しかし Elixir はまだ...
そこで…
Elchemy
Elchemy
Elm => Elixir のトランスパイラ
2017年2月に first commit
両者のいいとこどり
Elm
純粋関数型・静的型付けな AltJS
Haskellに似た構文(中身はかなり違う)
The Elm Architecuture の DSL
総和を求める関数(Elchemy)
これが
module Hello exposing (..)
sum : List Int -> Int
sum list =
case list of
first :: rest ->
first + sum rest
[] ->
0
総和を求める関数(Elixir)
こうなる
defmodule Hello do
use Elchemy
@spec sum(list(integer)) :: integer
curry sum/1
def sum(list) do
case list do
[first | rest] ->
(first + sum(rest))
[] ->
0
end
end
end
あたらしい言語を試したい!
どうする??
Docker
悲しい現実…
無いなら作る(常識)
開発スピードがはやい…
ならば...!
GitHub のリリースをチェックして
自動で Dockerfile つくって
コミットしてくれれば良い !
探せばありそう
ありそうでも作る(ぇ
車輪の再発明のすすめ
メリット
機能追加が楽
使い方を調べる必要がない
プログラミングができる
どや顔ができる(図太ければ)
デメリット
車輪の再発明
何の言語で作るか?
Haskell
(ここからが本編)
Haskell で Dockerfile を構築
する CLI を作る
一連の流れ
できた(完)
matsubara0507/dockwright
まとめ
Elchemy : Elm => Elixir なトランスパイラ
型安全な Elixir プログラミングが行える
Elchemy の Docker Image が無かったので作った
他人のリポジトリのリリースから Dockerfile を構
築する CLI ツールを作った
おまけ
続き (Elchemy のはなし) を
Elixir Festa 2018
で LT してくる!
おしまい

Contenu connexe

Similaire à Build Dockferile with Haskell

Similaire à Build Dockferile with Haskell (10)

Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
 
Elixir lang bootstrap
Elixir lang bootstrapElixir lang bootstrap
Elixir lang bootstrap
 
Elixirハンズオン2
Elixirハンズオン2Elixirハンズオン2
Elixirハンズオン2
 
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」
 
Yesodを支える技術
Yesodを支える技術Yesodを支える技術
Yesodを支える技術
 
Linq to XXXX(Reactive Extensionsの紹介)
Linq to XXXX(Reactive Extensionsの紹介)Linq to XXXX(Reactive Extensionsの紹介)
Linq to XXXX(Reactive Extensionsの紹介)
 
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介
 
Rubyでalexaプログラミング
RubyでalexaプログラミングRubyでalexaプログラミング
Rubyでalexaプログラミング
 
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていることSwiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
 

Plus de Nobutada Matsubara

Plus de Nobutada Matsubara (20)

Haskell で作る競技型イベントの裏側
Haskell で作る競技型イベントの裏側Haskell で作る競技型イベントの裏側
Haskell で作る競技型イベントの裏側
 
Marp Next Theme: Colors
Marp Next Theme: ColorsMarp Next Theme: Colors
Marp Next Theme: Colors
 
Marp Next Tips !
Marp Next Tips !Marp Next Tips !
Marp Next Tips !
 
Haskell で CLI
Haskell で CLIHaskell で CLI
Haskell で CLI
 
貧者のための「cron」
貧者のための「cron」貧者のための「cron」
貧者のための「cron」
 
Elixir Programming with Type checking
Elixir Programming with Type checkingElixir Programming with Type checking
Elixir Programming with Type checking
 
MixML 作ってみる
MixML 作ってみるMixML 作ってみる
MixML 作ってみる
 
Elm でなんかつくる
Elm でなんかつくるElm でなんかつくる
Elm でなんかつくる
 
Haskell と Elm と JSON の話
Haskell と Elm と JSON の話Haskell と Elm と JSON の話
Haskell と Elm と JSON の話
 
ADVENTAR の Bot を作る with Haskell
ADVENTAR の Bot を作る with HaskellADVENTAR の Bot を作る with Haskell
ADVENTAR の Bot を作る with Haskell
 
Haskell Backpack 事始め
Haskell Backpack 事始めHaskell Backpack 事始め
Haskell Backpack 事始め
 
GitHub での Haskell の色が変わったんで
GitHub での Haskell の色が変わったんでGitHub での Haskell の色が変わったんで
GitHub での Haskell の色が変わったんで
 
日記って続かないよね...
日記って続かないよね...日記って続かないよね...
日記って続かないよね...
 
「7つの言語、7つの世界」を読む
「7つの言語、7つの世界」を読む「7つの言語、7つの世界」を読む
「7つの言語、7つの世界」を読む
 
Lisper はじめました (再)
Lisper はじめました (再)Lisper はじめました (再)
Lisper はじめました (再)
 
Haskell で LINE Bot を作ってみた
Haskell で LINE Bot を作ってみたHaskell で LINE Bot を作ってみた
Haskell で LINE Bot を作ってみた
 
Marp colors
Marp colorsMarp colors
Marp colors
 
Marp Tips
Marp TipsMarp Tips
Marp Tips
 
Whitespcae 入門
Whitespcae 入門Whitespcae 入門
Whitespcae 入門
 
入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !
 

Build Dockferile with Haskell