SlideShare a Scribd company logo
1 of 23
Download to read offline
Simplest API Server
“miq”
Good Coding Friends LT
Yuki Ito / @publmag1 / acomagu / s1230004
みなさん
RDBは好きですか
そこそこ好き: 11人
嫌い: 0人
なるほどね。
じゃあ、
SQLは好きですか?
そこそこ好き: 0人
ふつう: 5人
嫌い: 5人
なるほどねー
めっちゃわかるぅ〜☆(ゝω・)v
3日前に陥った状況
- WebサーバーにちょっとしたDBが必要
- NoSQL微妙
- RDB使いたいけど、SQL書きたくない
- 書いてもいいけど、サーバーのロジックと混ぜたくない
- できることならHTTP/JSONで通信したい
- でもFirebaseとかは使いたくない
- 今回のアプリケーションにはちょっと大げさかな...
だから一昨日からつくった
だから一昨日からつくった
miq
miq: micro query-runner server
- コンパクトなAPIサーバー
- YAMLの設定ファイルにしたがって動作
- SQLを実行して結果をJSONにして返すのみ
- (現状)できること
- クエリの実行
- Pathパラメータ、URLクエリ、POST Body(JSON)から変数を受け取
れる
- トランザクション
- 複数クエリの実行
- できないこと
- 認証
- なのでそのまま外部には公開できない
- データになんらかの処理をしてからJSONを返却
つかいどころ
つかいどころ
- SQLをコードに書きたくない人
- Microservicesごっこしたいひと
それ、単に二度手間なだ
けじゃね?
Benefits
Benefits
- SQL Injectionのリスクが減る(必ず静的プレース
ホルダが使用される)
- SQLの事前コンパイルし忘れがない
- そのアプリケーションがどんなSQL オペレーショ
ンをするのかひと目でわかる
- やっぱり生のSQL実行よりJSONから読むほうが
簡単
github.com/acomagu/miq
Thank you!

More Related Content

What's hot

Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースよしだ あつし
 
コマンドライン使いもLibreOffice
コマンドライン使いもLibreOfficeコマンドライン使いもLibreOffice
コマンドライン使いもLibreOfficeKiwamu Okabe
 
歌舞伎座tech発表資料 RxJSの中を追う
歌舞伎座tech発表資料 RxJSの中を追う歌舞伎座tech発表資料 RxJSの中を追う
歌舞伎座tech発表資料 RxJSの中を追うwilfrem
 
Rubyでやろう。データ解析導入編( CSV, XML, JSON)
Rubyでやろう。データ解析導入編( CSV, XML, JSON)Rubyでやろう。データ解析導入編( CSV, XML, JSON)
Rubyでやろう。データ解析導入編( CSV, XML, JSON)NAKAOKU Takahiro
 
LT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきたLT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきたShingo Inoue
 
データベース実践入門読書会スペシャル #nseg
データベース実践入門読書会スペシャル #nsegデータベース実践入門読書会スペシャル #nseg
データベース実践入門読書会スペシャル #nsegko ty
 
ど素人向けエンジニア勉強会(第2回)
ど素人向けエンジニア勉強会(第2回)ど素人向けエンジニア勉強会(第2回)
ど素人向けエンジニア勉強会(第2回)YukiIwasaki2764
 
Free Serverというナウでヤングなサービス
Free ServerというナウでヤングなサービスFree Serverというナウでヤングなサービス
Free Serverというナウでヤングなサービスnemumu
 
NUTハッカソン2014成果報告
NUTハッカソン2014成果報告NUTハッカソン2014成果報告
NUTハッカソン2014成果報告Joe_noh
 
Reudy on Ruby1.9
Reudy on Ruby1.9Reudy on Ruby1.9
Reudy on Ruby1.9Glass_saga
 
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorbSpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorbYoutarou TAKAHASHI
 
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Y Watanabe
 
俺とモデリング
俺とモデリング俺とモデリング
俺とモデリングMasayuki KaToH
 
NPMで便利なツールの紹介
NPMで便利なツールの紹介NPMで便利なツールの紹介
NPMで便利なツールの紹介Amuro Nishizawa
 
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaPgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaToshi Harada
 

What's hot (20)

Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
 
コマンドライン使いもLibreOffice
コマンドライン使いもLibreOfficeコマンドライン使いもLibreOffice
コマンドライン使いもLibreOffice
 
歌舞伎座tech発表資料 RxJSの中を追う
歌舞伎座tech発表資料 RxJSの中を追う歌舞伎座tech発表資料 RxJSの中を追う
歌舞伎座tech発表資料 RxJSの中を追う
 
Rubyでやろう。データ解析導入編( CSV, XML, JSON)
Rubyでやろう。データ解析導入編( CSV, XML, JSON)Rubyでやろう。データ解析導入編( CSV, XML, JSON)
Rubyでやろう。データ解析導入編( CSV, XML, JSON)
 
LT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきたLT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきた
 
データベース実践入門読書会スペシャル #nseg
データベース実践入門読書会スペシャル #nsegデータベース実践入門読書会スペシャル #nseg
データベース実践入門読書会スペシャル #nseg
 
Mongoざっくり紹介
Mongoざっくり紹介Mongoざっくり紹介
Mongoざっくり紹介
 
Webページで学ぶJavaScript2013 第6回
Webページで学ぶJavaScript2013 第6回Webページで学ぶJavaScript2013 第6回
Webページで学ぶJavaScript2013 第6回
 
ど素人向けエンジニア勉強会(第2回)
ど素人向けエンジニア勉強会(第2回)ど素人向けエンジニア勉強会(第2回)
ど素人向けエンジニア勉強会(第2回)
 
Free Serverというナウでヤングなサービス
Free ServerというナウでヤングなサービスFree Serverというナウでヤングなサービス
Free Serverというナウでヤングなサービス
 
NUTハッカソン2014成果報告
NUTハッカソン2014成果報告NUTハッカソン2014成果報告
NUTハッカソン2014成果報告
 
Reudy on Ruby1.9
Reudy on Ruby1.9Reudy on Ruby1.9
Reudy on Ruby1.9
 
とあるApi
とあるApiとあるApi
とあるApi
 
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorbSpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
 
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
 
About Reauire.js
About Reauire.jsAbout Reauire.js
About Reauire.js
 
俺とモデリング
俺とモデリング俺とモデリング
俺とモデリング
 
Webページで学ぶJavaScript2013 第8回
Webページで学ぶJavaScript2013 第8回Webページで学ぶJavaScript2013 第8回
Webページで学ぶJavaScript2013 第8回
 
NPMで便利なツールの紹介
NPMで便利なツールの紹介NPMで便利なツールの紹介
NPMで便利なツールの紹介
 
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaPgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-ja
 

Similar to Simplest API Server "miq"

AWS Casual 02: ふつうのRedshiftパフォーマンスチューニング
AWS Casual 02: ふつうのRedshiftパフォーマンスチューニングAWS Casual 02: ふつうのRedshiftパフォーマンスチューニング
AWS Casual 02: ふつうのRedshiftパフォーマンスチューニングMinero Aoki
 
20200212 KumaMCN GTFS勉強会
20200212 KumaMCN GTFS勉強会20200212 KumaMCN GTFS勉強会
20200212 KumaMCN GTFS勉強会Syota Yano
 
サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごとYugo Shimizu
 
B 2-1 はじめての Windows Azure
B 2-1 はじめての Windows AzureB 2-1 はじめての Windows Azure
B 2-1 はじめての Windows AzureGoAzure
 
Jsf アプリ作ったった
Jsf アプリ作ったったJsf アプリ作ったった
Jsf アプリ作ったったOda Shinsuke
 
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付SpaTakahiro Tsuchiya
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
HTML5 NIGHT 08. Web × パフォーマンス技術
HTML5 NIGHT 08. Web × パフォーマンス技術HTML5 NIGHT 08. Web × パフォーマンス技術
HTML5 NIGHT 08. Web × パフォーマンス技術Yoichiro Takehora
 
Amazon Redshift ことはじめ
Amazon Redshift ことはじめAmazon Redshift ことはじめ
Amazon Redshift ことはじめShiro Miyazaki
 
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)parrotstudio
 
bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩Satoshi Yamada
 
今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQLSoudai Sone
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編Kazuya Numata
 
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園Y Watanabe
 
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLBYuki KAN
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)ShogoOkazaki
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutesYohei Sasaki
 

Similar to Simplest API Server "miq" (20)

AWS Casual 02: ふつうのRedshiftパフォーマンスチューニング
AWS Casual 02: ふつうのRedshiftパフォーマンスチューニングAWS Casual 02: ふつうのRedshiftパフォーマンスチューニング
AWS Casual 02: ふつうのRedshiftパフォーマンスチューニング
 
20200212 KumaMCN GTFS勉強会
20200212 KumaMCN GTFS勉強会20200212 KumaMCN GTFS勉強会
20200212 KumaMCN GTFS勉強会
 
サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごと
 
Jawsug福岡 201606 up
Jawsug福岡 201606 upJawsug福岡 201606 up
Jawsug福岡 201606 up
 
B 2-1 はじめての Windows Azure
B 2-1 はじめての Windows AzureB 2-1 はじめての Windows Azure
B 2-1 はじめての Windows Azure
 
Jsf アプリ作ったった
Jsf アプリ作ったったJsf アプリ作ったった
Jsf アプリ作ったった
 
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Cockatoo
CockatooCockatoo
Cockatoo
 
HTML5 NIGHT 08. Web × パフォーマンス技術
HTML5 NIGHT 08. Web × パフォーマンス技術HTML5 NIGHT 08. Web × パフォーマンス技術
HTML5 NIGHT 08. Web × パフォーマンス技術
 
Amazon Redshift ことはじめ
Amazon Redshift ことはじめAmazon Redshift ことはじめ
Amazon Redshift ことはじめ
 
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
 
bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩
 
今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL
 
100311 Dev Fest2010
100311 Dev Fest2010100311 Dev Fest2010
100311 Dev Fest2010
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編
 
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
 
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutes
 

More from Yuki Ito

僕が構文解析にこんなにも時間をかけてしまった理由 〜Yacc/Bisonにおけるノウハウ〜
僕が構文解析にこんなにも時間をかけてしまった理由 〜Yacc/Bisonにおけるノウハウ〜僕が構文解析にこんなにも時間をかけてしまった理由 〜Yacc/Bisonにおけるノウハウ〜
僕が構文解析にこんなにも時間をかけてしまった理由 〜Yacc/Bisonにおけるノウハウ〜Yuki Ito
 
fisher-lazyつくったはなし
fisher-lazyつくったはなしfisher-lazyつくったはなし
fisher-lazyつくったはなしYuki Ito
 
Waylandでも動くキーリマッパーを作りたかった話
Waylandでも動くキーリマッパーを作りたかった話Waylandでも動くキーリマッパーを作りたかった話
Waylandでも動くキーリマッパーを作りたかった話Yuki Ito
 
みんなのコンポーネント志向 Web開発
みんなのコンポーネント志向 Web開発みんなのコンポーネント志向 Web開発
みんなのコンポーネント志向 Web開発Yuki Ito
 
Mutexを実装する implementation of mutex
Mutexを実装する implementation of mutexMutexを実装する implementation of mutex
Mutexを実装する implementation of mutexYuki Ito
 
フロントエンド温泉にサーバーレスでダイブする(Public)
フロントエンド温泉にサーバーレスでダイブする(Public)フロントエンド温泉にサーバーレスでダイブする(Public)
フロントエンド温泉にサーバーレスでダイブする(Public)Yuki Ito
 
NNTPについて簡単すぎる説明
NNTPについて簡単すぎる説明NNTPについて簡単すぎる説明
NNTPについて簡単すぎる説明Yuki Ito
 

More from Yuki Ito (7)

僕が構文解析にこんなにも時間をかけてしまった理由 〜Yacc/Bisonにおけるノウハウ〜
僕が構文解析にこんなにも時間をかけてしまった理由 〜Yacc/Bisonにおけるノウハウ〜僕が構文解析にこんなにも時間をかけてしまった理由 〜Yacc/Bisonにおけるノウハウ〜
僕が構文解析にこんなにも時間をかけてしまった理由 〜Yacc/Bisonにおけるノウハウ〜
 
fisher-lazyつくったはなし
fisher-lazyつくったはなしfisher-lazyつくったはなし
fisher-lazyつくったはなし
 
Waylandでも動くキーリマッパーを作りたかった話
Waylandでも動くキーリマッパーを作りたかった話Waylandでも動くキーリマッパーを作りたかった話
Waylandでも動くキーリマッパーを作りたかった話
 
みんなのコンポーネント志向 Web開発
みんなのコンポーネント志向 Web開発みんなのコンポーネント志向 Web開発
みんなのコンポーネント志向 Web開発
 
Mutexを実装する implementation of mutex
Mutexを実装する implementation of mutexMutexを実装する implementation of mutex
Mutexを実装する implementation of mutex
 
フロントエンド温泉にサーバーレスでダイブする(Public)
フロントエンド温泉にサーバーレスでダイブする(Public)フロントエンド温泉にサーバーレスでダイブする(Public)
フロントエンド温泉にサーバーレスでダイブする(Public)
 
NNTPについて簡単すぎる説明
NNTPについて簡単すぎる説明NNTPについて簡単すぎる説明
NNTPについて簡単すぎる説明
 

Simplest API Server "miq"