18
April 17, 201 5 佐藤 洋行 ソフトウェアエンジニア Hiroyuki SATO Software Engineer Spiber 株式会社 kintone ユーザー会

20150417 kintoneユーザー会発表資料

Embed Size (px)

Citation preview

Page 1: 20150417 kintoneユーザー会発表資料

April 17, 2015

佐藤 洋行 | ソフトウェアエンジニアHiroyuki SATO | Software Engineer

Spiber株式会社 | kintoneユーザー会

Page 2: 20150417 kintoneユーザー会発表資料

本社外観と研究所内(山形県、鶴岡市研究産業支援センター内)

会社概要

 会社名  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ユーザー会発表資料

© Spiber Inc.

Page 4: 20150417 kintoneユーザー会発表資料

kintone 利用状況

サービス 利用中

kintoneスタンダードコース

ユーザー数 81

アプリ数 67

1日あたりのAPIリクエスト数 222

カスタマイズアプリ数 20

ゲストスペース数 1

セキュアアクセス ユーザー数 81

ディスク使用量 9.2GB

•2013年10月頃に導入

•2015年4月現在の利用状況

Page 5: 20150417 kintoneユーザー会発表資料

アプリの利用状況

アプリ名レコード数

フィールド数

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ユーザー会発表資料

要 件

「発注書」を紙で印刷したい

Page 7: 20150417 kintoneユーザー会発表資料

とりあえず

JavaScript / CSSのカスタマイズできないか?

大変そう、早々にあきらめる…

Page 8: 20150417 kintoneユーザー会発表資料

それでは

PDF生成サービスを自作できないか?

REST APIを使えばできるはず…

Page 9: 20150417 kintoneユーザー会発表資料

できれば

Rubyで開発したい!

公式ライブラリが無い…

Page 10: 20150417 kintoneユーザー会発表資料

そこで

自作することにしました

Page 11: 20150417 kintoneユーザー会発表資料

Cyby

•Simple Cybozu REST API wrapper

•GitHubで公開中

•https://github.com/hiroponz/cyby

•Pull Requests Welcome!

•現在はレコードの取得のみに特化•「ActiveRecord」っぽくレコードを取得

Page 12: 20150417 kintoneユーザー会発表資料

コードサンプル(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ユーザー会発表資料

コードサンプル(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ユーザー会発表資料

コードサンプル(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ユーザー会発表資料

他の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ユーザー会発表資料

$ gem install cyby

Page 17: 20150417 kintoneユーザー会発表資料

Spiberではkintoneが大好きなエンジニアを

募集しています

Page 18: 20150417 kintoneユーザー会発表資料

GitHub: hiroponz

Twitter: @hiroponz79