SlideShare a Scribd company logo
1 of 66
HaskellとWeb開発 田中英行 (@tanakh) tanaka.hideyuki@gmail.com
本日の概要 HaskellとWebアプリ HaskellのWebフレームワーク今昔 ナウいHaskellのWebフレームワーク紹介 Yesod入門
HaskellとWebアプリ
なぜ、HaskellでWebアプリを書くのか? 速さ statically typed 安全性 type-safe, XSS/SQL injection 記述力 言わずもがな 雇用対策(他人に保守できない)
なぜ、HaskellでWebアプリを書くのか?
なぜ、HaskellでWebアプリを書くのか?
なぜ、HaskellでWebアプリを書くのか?
なぜ、HaskellでWebアプリを書くのか?
現在の世の中の情勢 LAMP! RoR! Django! Node.js! これは潰したい
スクリプト言語の場合 お手軽 PHPとか 書き換えると直ぐに反映 優れたフレームワークの存在 Ruby on Rails symfony Django
なぜコンパイル言語でWebアプリは流行らないか? 毎度コンパイルするのが面倒 Webフレームワークの不在 Javaはそこそこ使われていたりする ScalaのLiftとか? ネイティブなのはあまり聞かない
Haskellでは…? Haskellインタプリタライブラリを用いた開発サーバの登場 コンパイル不要 書き換え即反映 新世代Webフレームワークの台頭 2010年あたりから 高速文字列ライブラリ、UTFサポートの充実、Iterateeなど優れたI/Oライブラリの整備が後押しか?
これなら書ける!
HaskellでのWeb開発今昔
昔々… Web開発はCGIが主流 (環境変数)標準入力からの入力と、標準出力への出力が出来ればOK おおよそどんなプログラミング言語でも可能 Web黎明期にはPerlがよく使われていた
CGI Haskellでは、かなり昔からCGIを書くためのライブラリが「標準に」入っていた 現在はHaskell Platform モナディックライブラリ CGIモナドとしてプログラムを書くと、CGIとしてだけでなく、FCGI、SCGI、はたまたスタンドアロンサーバとしても動作可能
HTMLライブラリ Text.HTML これもかなり初期から標準搭載
例 import Network.CGI import Text.Html main :: IO () main = runCGI (handleErrorscgiMain) cgiMain :: CGI CGIResult cgiMain = output $ renderHtml $ do thehtml <<     [ header $ thetitle << "Test Page!"     , body <<       [ h1 << "Hoge-"       , paragraph <<         [ primHtml "Hello, World!" ]]]
参考:pficommonのCGIライブラリ HaskellのCGI+HTMLを下敷きに作った class my_cgi : public xhtml_cgi{ public:   void run(){     html__{       head__{         title__{           text__("Test"); }}         body__{         h1__ text__("Hoge-");         p__{           text__("Hello, World!"); }}}} }; int main(){ run_cgi(my_cgi()).run(); }
Functional Online Judge http://d.hatena.ne.jp/tanakh/20050919#p1 拙作謎のオンラインジャッジ CGI+HTML+HaskellDB+Sqlite
こういうのの何がいいのか? コンパイルが通れば、ill-formedなHTMLが生成されない コンパイルが通れば、XSSされない
何が問題なのか? 必要なものが揃っていない Session 永続データ パスルーティング などなど DBにアクセスするものはあったけど IOモナドを介する貧弱なインターフェース
参考:HaskellDB SQLを生で書くのはいけない EDSL ill-formedなSQLの生成を防止 型安全性 SQLインジェクション防止
参考:GHCの日本語対応 HaskellのChar型は元々32bit HaskellのString = Charのリスト Unicodeが普通に扱えるはずだが… GHC 6.x から utf8文字列受付->utf8-string->IOレイヤでの自動エンコード・デコード
WASH http://www.informatik.uni-freiburg.de/~thiemann/WASH/ Haskellの第一世代型Webフレームワーク 状態を持てる(継続ベースっぽい) XMLを中に書ける(HSP)
HSP(Haskell Server Pages) EmbededなXMLコード page :: (?a :: Application, ?s :: Session) => Element page =   <HTML>     <TITLE>Counter</TITLE>     <BODY>       <P>         This page has been accessed         <%           do{ n <- countPage             ; return [ <IMG SRC=(i:".gif") /> | i <- show n ]             }         %>         times.       </P>       <P>         You have visited this page <% countSession %> times.       </P>     </BODY>   </HTML>
Happs 同世代のフルスタックWebフレームワーク DBを使わない独自の永続データ 独自のマイグレーション
そして月日は流れて… 第二世代型のフレームワークに
Haskellを取り巻く環境の変遷とHaskellのナウいWebフレームワーク
最近のHaskell 2009~2010年頃、突如としてHaskellのWebフレームワークが同時多発的に登場 特に有望そうな物 Happstack Happsの改良 Snap ハイパフォーマンスを謳う Yesod フルスタック
何が起こったか? Hackage(http://hackage.haskell.org/)の登場(2006~) HaskellのCPANのようなもの Hackageへの優れたライブラリの蓄積(2008~) 既存のライブラリを置き換えるようなものの登場 ByteString/Text Unicodeの扱い Iteratee Haskellコミュニティーの成長
Haskellの文字列処理の変遷 String (=[Char]) とても自明で、InductiveでRecursiveな定義 Haskell標準に豊富にあるリスト操作関数がそのまま使える 2008年頃まで、Haskellコミュニティーは何も疑問に思うことなく過ごしていた…
Stringの欠点 メモリを大量に食う(4*ptr+32bit/char) 遅い(一文字ごとにderef2回) ‘H’ ‘E’ ‘L’
ByteStringの登場 単なるByte Arrayをメモリ表現として持つByteStringの登場 爆速 適当に書いたコードだとC++より速い Fusion map f (map g str) をmap (f.g) strに変換するなど かなりアグレッシブ
Textの登場 ByteStringはエンコーディングを考慮しないバイト列だった HaskellのCharはUTF32 そのままByteStringにできない UTF16でエンコードされた16ビット列を表すTextの登場 先日リリースされたHaskell Platform 2011.2.0.0から標準に
Iteratee 次世代I/O 次のすべてを満たす夢のような手法 高速 composable 安全 リソースの速やかな開放
Iterateeの適当な説明 Enumerator Enumeratee Iteratee 入力データを生成 入力データを変換 入力データを消費
そんなこんなで 新しいWebフレームワークの登場する土壌が整いまして…
Happs/Happstack http://happstack.com/ 結構昔からあるフレームワーク 最近Happstackという名前に 高速化 Iteratee化など 利用例 happstack.com gitit (http://wiki.tanakh.jp/) patch-tag (http://patch-tag.com/)
Happstack フルスタックなWebフレームワーク サーバー (happstack-server) 永続データ (happstack-state) テンプレーティング
Snap http://snapframework.com/ 2010年開発開始 libevを用いた高速な実装 Googleの人が開発?(CopyrightにGoogle Inc) 利用例 snapframework.com darcsden (http://darcsden.com/) barley (http://barley.tanakh.jp/)
Snapベンチマーク Pongベンチマーク
Snapの状況 だが、最近は開発が停滞気味 ひと通り完成か? フレームワークと言うには機能が少ない セッションない 永続データない ファイルアップロード機能が最近付いた テストのカバレッジチェック等がきっちりと行われている
Snap周辺ライブラリ Heist テンプレーティングライブラリ xmlで記述 特定のタグでHaskellコードを呼び出せる スニペットと呼ばれる xmlhtml 既存のhtmlライブラリがしょぼいので、新しく作られた これは便利
Heiste例 <bind tag="longname">  Einstein, Feynman, Heisenberg,  and Newton Research Corporation  Ltd.<sup>TM</sup></bind><p>  We at <longname/> have research expertise in many  areas of physics.  Employment at <longname/> carries significant   prestige. The rigorous hiring process developed by   <longname/> is leading the industry.</p>
Yesod http://docs.yesodweb.com/ フルスタックなWebフレームワーク HaskellのQuasiQuoteを積極的に用いた(おそらく)初めてのフレームワーク WAIを介して様々な方法で実行できる 豊富な周辺ライブラリ
Yesodベンチマーク Pongベンチマーク
Yesodを利用したサイト http://docs.yesodweb.com/ yackage http://www.haskellers.com/ http://photos.snoyman.com/ http://www.search-once.com/homepage/
WAI (Web Application Interface) Webアプリケーションのための近代的な汎用インターフェース Yesodの人による type Application = Request -> Iteratee ByteString IO Response type Middleware = Application -> Application
WAI(2) Yesodアプリ CGI FCGI Snapアプリ WAI Standalone その他アプリ devel webkit
Warp Yesod作者が作った、Iterateeベースの高性能WAIバックエンドHTTPサーバ
Yesod入門
インストール ghcをインストールする $ cabal update $ cabal install yesod
最初のサンプル {-# LANGUAGE TypeFamilies, QuasiQuotes,  MultiParamTypeClasses, TemplateHaskell #-}importYesoddataHelloWorld = HelloWorldmkYesod“HelloWorld” [parseRoutes|/ HomeR GET|]instanceYesodHelloWorldwhereapproot_ = ""getHomeR = defaultLayout[hamlet|HelloWorld!|]main = warpDebug 3000 HelloWorld
scaffold $ mkdir test $ cd test $ yesod 質問に答える テンプレができる!
ビルド $ cabal configure $ cabal build dist/build/…/… を実行! ブラウザで見る
Hamlet/Cassius/Julius HTML/CSS/JSの各種DSL それぞれQuasiQuoteとして用いる !!! <html     <head         <title>#{pageTitle pc}         ^{pageHead pc}     <body         $maybe msg <- mmsg             <div #message>#{msg}         ^{pageBody pc}
Hamlet/Cassius/Julius hamlet/default-lauout.hamlet テンプレ hamlet/homepage.hamlet 各ページ Handler/Root.hs これらを読み込むコード これらのファイルは、“コンパイル時”に読まれ、パーズされ、型検査され、well-formedなHTML等しか生成されないことが保証される
Web Route Quasi <Foundation>.hs QuasiQuoteでパスを作成 mkYesodData"Test" [$parseRoutes| /static StaticR Static getStatic /authAuthRAuthgetAuth /favicon.ico FaviconR GET /robots.txt RobotsRGET / RootR GET /user/#String/configConfigR GET POST /user/#String/post/#IntPostR POST |]
Type Safe URL ルートに対して、それぞれデータ型が生成される Hamletへのリンク挿入時、それを利用出来る 404 error free! <ul  <li     <a href=@{PortR “Hoge” 123}>ポスト     <a href=@{ConfigR “Hoge”}>設定
persistent 永続データを扱うライブラリ Non Relational 割り切った設計 Sqlite, PostgresSQL, MongoDBなど、バックエンドのシームレスな切り替え QuasiQuoteによるレコード定義 自動マイグレーション
persistent例 share2 mkPersist (mkMigrate "migrateAll") [persist| User ident String     name String Update     password String Maybe Update longName String Update default="" desc Text Update default="" UniqueUserident UniqueUserName name Post     user UserIdEq In     content Text replyToPostId Maybe replyToUserUserId Maybe     date UTCTimeDesc |]
devel-server wai-handler-develを使うと、ghc-apiを利用してコードをコンパイルせずに実行出来る コードの変更を監視して、自動リロードされる hamletの変更も監視 スクリプト言語のような書き心地! 本番運用はコンパイルして高速に実行
webkit-handler WebアプリをスタンドアロンGUIアプリのように実行出来る
i18n Yesod 0.8.1から追加 http://www.yesodweb.com/blog/non-poly-hamlet-i18n
デモ ご期待ください!

More Related Content

What's hot

SQLによるDynamoDBの操作
SQLによるDynamoDBの操作SQLによるDynamoDBの操作
SQLによるDynamoDBの操作Sugawara Genki
 
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡Aya Komuro
 
Sbtのマルチプロジェクトはいいぞ
SbtのマルチプロジェクトはいいぞSbtのマルチプロジェクトはいいぞ
SbtのマルチプロジェクトはいいぞYoshitaka Fujii
 
RESTとRailsスタイル
RESTとRailsスタイルRESTとRailsスタイル
RESTとRailsスタイルToru Kawamura
 
081108huge_data.ppt
081108huge_data.ppt081108huge_data.ppt
081108huge_data.pptNaoya Ito
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews, Inc.
 
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちService worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちKinuko Yasuda
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
Closure Compiler Updates for ES6
Closure Compiler Updates for ES6Closure Compiler Updates for ES6
Closure Compiler Updates for ES6Teppei Sato
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るMasashi Shinbara
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Teppei Sato
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroKenta Suzuki
 
Crawler Commons
Crawler CommonsCrawler Commons
Crawler Commonschibochibo
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsmganeko
 
Rubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピングRubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピングTakuro Sasaki
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りましたTomoharu ASAMI
 
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds411周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41Kazumune Katagiri
 

What's hot (20)

SQLによるDynamoDBの操作
SQLによるDynamoDBの操作SQLによるDynamoDBの操作
SQLによるDynamoDBの操作
 
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡
 
Sbtのマルチプロジェクトはいいぞ
SbtのマルチプロジェクトはいいぞSbtのマルチプロジェクトはいいぞ
Sbtのマルチプロジェクトはいいぞ
 
RESTとRailsスタイル
RESTとRailsスタイルRESTとRailsスタイル
RESTとRailsスタイル
 
081108huge_data.ppt
081108huge_data.ppt081108huge_data.ppt
081108huge_data.ppt
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちService worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたち
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
Closure Compiler Updates for ES6
Closure Compiler Updates for ES6Closure Compiler Updates for ES6
Closure Compiler Updates for ES6
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
200k/sec
200k/sec200k/sec
200k/sec
 
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
 
Crawler Commons
Crawler CommonsCrawler Commons
Crawler Commons
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
 
Rubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピングRubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピング
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りました
 
Asset Pipeline for Perl
Asset Pipeline for PerlAsset Pipeline for Perl
Asset Pipeline for Perl
 
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds411周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41
 

Similar to Yesod勉強会

第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjax第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjaxKensaku Komatsu
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインShumpei Shiraishi
 
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイルJavaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイルMaaya Ishida
 
JAX-RS(LT)
JAX-RS(LT)JAX-RS(LT)
JAX-RS(LT)winplus
 
今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミング今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミングSwapSkills
 
Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~Shinichi Tomita
 
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22Yohei Sasaki
 
みんなでWAIWAI Webアプリ
みんなでWAIWAI WebアプリみんなでWAIWAI Webアプリ
みんなでWAIWAI WebアプリKiwamu Okabe
 
WordBench Saitama vol.6
WordBench Saitama vol.6WordBench Saitama vol.6
WordBench Saitama vol.6masaaki komori
 
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Sho Ito
 
プロジェクト2B 最終発表
プロジェクト2B 最終発表プロジェクト2B 最終発表
プロジェクト2B 最終発表Kodai Takao
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseオフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseyoshikawa_t
 
最新技術動向(2011年上期)
最新技術動向(2011年上期)最新技術動向(2011年上期)
最新技術動向(2011年上期)Mahito Ogura
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化maruyama097
 
About rails 3
About rails 3About rails 3
About rails 3issei126
 
JavaからScalaへ
JavaからScalaへJavaからScalaへ
JavaからScalaへtakezoe
 

Similar to Yesod勉強会 (20)

第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjax第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjax
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
 
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイルJavaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイル
 
JAX-RS(LT)
JAX-RS(LT)JAX-RS(LT)
JAX-RS(LT)
 
SocketStream入門
SocketStream入門SocketStream入門
SocketStream入門
 
今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミング今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミング
 
Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~
 
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22
 
Antのススメ
AntのススメAntのススメ
Antのススメ
 
みんなでWAIWAI Webアプリ
みんなでWAIWAI WebアプリみんなでWAIWAI Webアプリ
みんなでWAIWAI Webアプリ
 
WordBench Saitama vol.6
WordBench Saitama vol.6WordBench Saitama vol.6
WordBench Saitama vol.6
 
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5
 
いまさらJavaScript
いまさらJavaScriptいまさらJavaScript
いまさらJavaScript
 
プロジェクト2B 最終発表
プロジェクト2B 最終発表プロジェクト2B 最終発表
プロジェクト2B 最終発表
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseオフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
 
最新技術動向(2011年上期)
最新技術動向(2011年上期)最新技術動向(2011年上期)
最新技術動向(2011年上期)
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化
 
About rails 3
About rails 3About rails 3
About rails 3
 
JavaからScalaへ
JavaからScalaへJavaからScalaへ
JavaからScalaへ
 

More from Hideyuki Tanaka

ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...Hideyuki Tanaka
 
IdrisでWebアプリを書く
IdrisでWebアプリを書くIdrisでWebアプリを書く
IdrisでWebアプリを書くHideyuki Tanaka
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるHideyuki Tanaka
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門Hideyuki Tanaka
 

More from Hideyuki Tanaka (8)

ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
 
Xpath in-lens
Xpath in-lensXpath in-lens
Xpath in-lens
 
IdrisでWebアプリを書く
IdrisでWebアプリを書くIdrisでWebアプリを書く
IdrisでWebアプリを書く
 
手書きスライド
手書きスライド手書きスライド
手書きスライド
 
Monad tutorial
Monad tutorialMonad tutorial
Monad tutorial
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
Icfp2009
Icfp2009Icfp2009
Icfp2009
 

Recently uploaded

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

Yesod勉強会