はじめに
第1章 Stackとは
第2章 Hello, Yesod!
第3章 文字列はString型?
第4章 言語拡張
第5章 Template Haskell
第6章 わいわいWAI
第7章 ハンドラーとルーティング
第8章 Shakespeareanテンプレート
第9章 データベース
第10章 Yesodを自習するに当たって
第11章 Middlewareを作ってみよう - Katipによるリクエストロガー
あとがき
このたびは『遠回りして学ぶYesod入門』を手に取っていただき誠にありがとうございます。
唐突ですが、筆者はHaskellが好きです。
純粋な部分と副作用のある部分とを明確に書き分けることができるHaskellが好きです。
強力な型システムを持つHaskellが好きです。静的に型検査されるHaskellが好きです。
高階関数でよく抽象化されるHaskellが好きです。
とりあえずHaskellが好きです。
この気持ちを誰かに広めたいというのが本書を書いた動機です。
それならば入門書を書くべきじゃないの?と思われるかもしれませんが、すでに入門書としておすすめできるもの1がありますので別の形でHaskellの普及に貢献できればと思いました。今のところHaskellは、入門書を読んだ後の道しるべが少ない、書籍としてまとまったものがほぼない2ので本書を通じてこの点を少しでも埋めることにしました。ウェブアプリケーション開発にHaskellが使えることを示すことで、Haskellに入門する人が増えるかなという淡い期待もあります。
いろいろ思惑があって書くことにした本書ですが、自分がYesodを始めるときにほしかった内容・構成を思い出しながら書きましたので、きっと役立つもののはずです。Yesodは大きなライブラリーでいろいろな要素が詰まっており最初は大変だとは思いますが、いろいろな要素が詰まっているからこそ、これらを理解することで別のライブラリーを使う場合やみなさんがアプリケーションを書く場合にも応用ができるでしょう。
これを読んだみなさんが生活を便利にするウェブアプリケーションや、あわよくばキラーアプリケーションと呼ばれるものを作ってくれることを期待しています。
本書では、Haskellの入門書程度の内容について読み書きできるようになった方に向けて、現実的なアプリケーションへの第一歩としてYesodを始めるときに知っておくべき情報と、Yesodの初歩的な解説を行っています。またもう1つの目的として、Yesodは比較的重量級のフレームワークであり学習曲線が急峻なのですが、その厚いフレームワークがどんな面倒を見てくれるのか、あえてYesodを使わずにWebアプリケーションを作ってみて、それを理解できることを目指して書きました(ここがタイトルの「遠回り」のゆえん)。
ここまでの情報を簡単に列挙すると次の通りです。
・対象読者
─Haskellの入門書程度が読み書きできる人
─Haskellでより現実的なアプリケーションを書けるようにステップアップしたい人
─HaskellでWebアプリケーションが作りたい人
・書かれてあること
─Yesodに入門する前に知っておくべき情報
・ビルドツールStack
・文字列String・Text・ByteString
・Web Application Interface
・言語拡張
・コンパイル時計算Template Haskell
─Yesodの初歩的な解説
・リクエスト・レスポンス・ルーティング
・テンプレート言語Shakespeareanシリーズ
・データベース
YesodはHaskellのウェブアプリケーションフレームワークです。
公式サイト3から売り文句を取ってくると次の通りです。
実行時バグをコンパイル時エラーに Turn runtime bugs into compile-time errors
Yesodでは(アプリ内でのリンクの)リンク切れやXSS攻撃に対する脆弱性・文字コードに関する問題などをコンパイル時に検出できます。(この辺りを検出するために独自のalt-HTML・alt-JS・alt-CSSを書かないといけないのですが。)
非同期が簡単に Asynchronous made easy
ストレートなコードを書くだけで、グリーンスレッドやイベントベースのシステムコールでノンブロッキングな非同期な処理になる(そうです)。
スケーラブルで高性能 Scalable and Performant
Yesodはシンプルでよく抽象化されたコードでよいパフォーマンスが出るようになっていますが、直接メモリーにアクセスするライブラリーも提供しておりCに近い性能を出すこともできます。(そこまでやったことはありませんが。)
軽量な文法 Light-weight syntax
ルーティングテーブルの準備やデータベーススキーマの作成・フォームの扱いなどの実装でのボイラープレートをシンプルなDSLを使うことで削除することができます。そしてそれらのDSLはコンパイル時に検査されます。(反対にいうとそれらのDSLを覚える必要があります。これらのDSLがどういうHaskellコードに展開されるのか気になるときもあります。)
本書に関するお問い合わせはkazuki.okamoto+doujin@kakkun61.comまで。
本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。
本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。
本書籍は、技術系同人誌即売会「技術書典4」で頒布されたものを底本としています