20150417 kintoneユーザー会発表資料
-
Upload
hiroponz -
Category
Engineering
-
view
189 -
download
4
Transcript of 20150417 kintoneユーザー会発表資料
April 17, 2015
佐藤 洋行 | ソフトウェアエンジニアHiroyuki SATO | Software Engineer
Spiber株式会社 | kintoneユーザー会
本社外観と研究所内(山形県、鶴岡市研究産業支援センター内)
会社概要
会社名 Spiber株式会社 (Spiber Inc.)
所在地 山形県鶴岡市覚岸寺字水上246番地2
設立年月日 2007年9月26日
代表者名 関山和秀
資本金(資本準備金) 25億3,458万円(25億2,458万円)
決算日 12月31日
役員数、従業員数 8名、75名(2015年4月1日現在)
CONFIDENTIAL
© Spiber Inc.
kintone 利用状況
サービス 利用中
kintoneスタンダードコース
ユーザー数 81
アプリ数 67
1日あたりのAPIリクエスト数 222
カスタマイズアプリ数 20
ゲストスペース数 1
セキュアアクセス ユーザー数 81
ディスク使用量 9.2GB
•2013年10月頃に導入
•2015年4月現在の利用状況
アプリの利用状況
アプリ名レコード数
フィールド数
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 あり
主なアプリ(レコード数順)
要 件
「発注書」を紙で印刷したい
とりあえず
JavaScript / CSSのカスタマイズできないか?
大変そう、早々にあきらめる…
それでは
PDF生成サービスを自作できないか?
REST APIを使えばできるはず…
できれば
Rubyで開発したい!
公式ライブラリが無い…
そこで
自作することにしました
Cyby
•Simple Cybozu REST API wrapper
•GitHubで公開中
•https://github.com/hiroponz/cyby
•Pull Requests Welcome!
•現在はレコードの取得のみに特化•「ActiveRecord」っぽくレコードを取得
コードサンプル(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
レコード全件を取得する
コードサンプル(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
条件を日付で指定する
コードサンプル(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
他の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" => [{...}, ...]}
$ gem install cyby
Spiberではkintoneが大好きなエンジニアを
募集しています
GitHub: hiroponz
Twitter: @hiroponz79