20150417 kintoneユーザー会発表資料
TRANSCRIPT
![Page 1: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/1.jpg)
April 17, 2015
佐藤 洋行 | ソフトウェアエンジニアHiroyuki SATO | Software Engineer
Spiber株式会社 | kintoneユーザー会
![Page 2: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/2.jpg)
本社外観と研究所内(山形県、鶴岡市研究産業支援センター内)
会社概要
会社名 Spiber株式会社 (Spiber Inc.)
所在地 山形県鶴岡市覚岸寺字水上246番地2
設立年月日 2007年9月26日
代表者名 関山和秀
資本金(資本準備金) 25億3,458万円(25億2,458万円)
決算日 12月31日
役員数、従業員数 8名、75名(2015年4月1日現在)
CONFIDENTIAL
![Page 3: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/3.jpg)
© Spiber Inc.
![Page 4: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/4.jpg)
kintone 利用状況
サービス 利用中
kintoneスタンダードコース
ユーザー数 81
アプリ数 67
1日あたりのAPIリクエスト数 222
カスタマイズアプリ数 20
ゲストスペース数 1
セキュアアクセス ユーザー数 81
ディスク使用量 9.2GB
•2013年10月頃に導入
•2015年4月現在の利用状況
![Page 5: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/5.jpg)
アプリの利用状況
アプリ名レコード数
フィールド数
1日のAPIリクエスト数
カスタマイズ
発注簿 3,948 17 230 あり稟議申請 2,029 48 17 ありコンタクト状況管理 1,022 24 0 なし試薬管理表 648 36 0 あり機器一覧 644 53 0 なし企業一覧 627 18 0 なし契約書 554 18 0 なし立替経費精算 480 17 0 あり出張申請 341 38 0 あり
主なアプリ(レコード数順)
![Page 6: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/6.jpg)
要 件
「発注書」を紙で印刷したい
![Page 7: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/7.jpg)
とりあえず
JavaScript / CSSのカスタマイズできないか?
大変そう、早々にあきらめる…
![Page 8: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/8.jpg)
それでは
PDF生成サービスを自作できないか?
REST APIを使えばできるはず…
![Page 9: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/9.jpg)
できれば
Rubyで開発したい!
公式ライブラリが無い…
![Page 10: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/10.jpg)
そこで
自作することにしました
![Page 11: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/11.jpg)
Cyby
•Simple Cybozu REST API wrapper
•GitHubで公開中
•https://github.com/hiroponz/cyby
•Pull Requests Welcome!
•現在はレコードの取得のみに特化•「ActiveRecord」っぽくレコードを取得
![Page 12: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/12.jpg)
コードサンプル(1)
「アプリID」が”1”のアプリの「record_number」が”1”のレコードを取得するrequire 'cyby'app = Cyby::Kintone::App.new(1)record = app.where("record_number = 1").first
「name」の値を取得するputs record["name"]puts record.name
プレースホルダーを使用するrecord = app.where("record_number = ?", record_number).first
app.all.each do |record| puts record.record_numberend
レコード全件を取得する
![Page 13: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/13.jpg)
コードサンプル(2)
条件を「and」や「or」でつなぐapp.where("id >= ?", id_min) .and("id <= ?", id_max) .or("name like ?", name).each do |record| puts record.nameend
条件を日時で指定するapp.where("create_at < ?", Time.new(2015, 1, 1)).each do |record| puts record.nameend
app.where("delivery_day = ?", Date.new(2015, 1, 1)).each do |record| puts record.nameend
条件を日付で指定する
![Page 14: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/14.jpg)
コードサンプル(3)
指定のフィールドでソートする
取得するフィールドを限定する
組み合わせる
app.asc(“delivery_day").desc("id").each do |record| puts record.nameend
app.select("id", “name").each do |record| puts "#{record.id}: #{record.name}"end
app.select("id", "name", "delivery_day") .where("delivery_day < ?", delivery_day) .asc("delivery_day") .asc("id") do |record| puts "#{record.delivery_day}, #{record.id}, #{record.name}" # => "2015-01-01, 121, name"end
![Page 15: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/15.jpg)
他のgemと比較
https://github.com/jue58/kintone の場合
require 'kintone'api = Kintone::Api.new("example.cybozu.com", "Administrator", "cybozu")app = 8fields = ["record_id", "created_time", "dropdown"]query = Kintone::Query.new do field(:updated_time) > "2012-02-03T09:00:00+0900" and! field(:updated_time) < "2012-02-03T10:00:00+0900" order_by(:record_id) limit(10) offset(20) endquery.to_s# => "updated_time > \"2012-02-03T09:00:00+0900\" and updated_time < \"2012-02-03T10:00:00+0900\" order by record_id asc limit 10 offset 20"api.records.get(app, query, fields)# => {"records" => [{...}, ...]}
![Page 16: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/16.jpg)
$ gem install cyby
![Page 17: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/17.jpg)
Spiberではkintoneが大好きなエンジニアを
募集しています
![Page 18: 20150417 kintoneユーザー会発表資料](https://reader033.vdocuments.net/reader033/viewer/2022051400/55d05632bb61ebad7b8b474d/html5/thumbnails/18.jpg)
GitHub: hiroponz
Twitter: @hiroponz79