目次

はじめに

本書の内容
Yesodとは
お問い合わせ先
リポジトリとサポートについて
表記関係について
免責事項
底本について

第1章 Stackとは

1.1 Hello World with Stack
1.2 まとめ

第2章 Hello, Yesod!

2.1 プロジェクト作成
2.2 生成されたファイル
2.3 まとめ

第3章 文字列はString型?

3.1 String
3.2 Text
3.3 ByteString
3.4 まとめ

第4章 言語拡張

4.1 言語拡張とは
4.2 RecordWildCards
4.3 TupleSections
4.4 ViewPatterns
4.5 NoImplicitPrelude
4.6 DeriveDataTypeable
4.7 TypeFamilies
4.8 GADTs
4.9 MultiParamTypeClasses
4.10 FlexibleContexts
4.11 FlexibleInstances
4.12 EmptyDataDecls
4.13 GeneralizedNewtypeDeriving
4.14 MonomorphismRestriction
4.15 まとめ

第5章 Template Haskell

5.1 生成されるコードを見てみる
5.2 コード生成
5.3 Quasi Quotes
5.4 まとめ
5.5 参考文献

第6章 わいわいWAI

6.1 Hello, WAI!
6.2 ルーティング
6.3 クエリーパラメーター
6.4 HTTPメソッド
6.5 まとめ

第7章 ハンドラーとルーティング

7.1 サンプルコードの準備
7.2 ビルド
7.3 ルーティング
7.4 Homeハンドラー
7.5 Commentハンドラー
7.6 まとめ

第8章 Shakespeareanテンプレート

8.1 Hamlet
8.2 Julius・Lucius・Cassius
8.3 まとめ

第9章 データベース

9.1 モデル
9.2 操作
9.3 まとめ

第10章 Yesodを自習するに当たって

第11章 Middlewareを作ってみよう - Katipによるリクエストロガー

11.1 Middleware
11.2 多機能ロガーKatip
11.3 リクエストロガーの開発
11.4 まとめ

あとがき

はじめに

 このたびは『遠回りして学ぶ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

   ・文字列StringTextByteString

   ・Web Application Interface

   ・言語拡張

   ・コンパイル時計算Template Haskell

  ─Yesodの初歩的な解説

   ・リクエスト・レスポンス・ルーティング

   ・テンプレート言語Shakespeareanシリーズ

   ・データベース

Yesodとは

 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まで。

リポジトリとサポートについて

 本書に掲載されたコードと正誤表などの情報は、次のURLで公開しています。

 https://github.com/impressrd/support_yesod

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

底本について

 本書籍は、技術系同人誌即売会「技術書典4」で頒布されたものを底本としています

試し読みはここまでです。
この続きは、製品版でお楽しみください。