Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

こだわりのkintone

14,009 views

Published on

kintone devCamp 2015 こだわりのkintone
http://www.kintonedevcamp.com/

2015 (C) Cybozu, Inc.

Published in: Technology
  • Be the first to comment

こだわりのkintone

  1. 1. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. kintone開発チームの kintoneの使い方 kintone devCamp 2015 @ama_ch
  2. 2. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. 自己紹介 ▌天野 祐介 (@ama_ch) ▌プログラマ ▌kintone開発チームリーダー ▌新卒入社7年目 ▌主にUIを実装
  3. 3. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. kintone開発チームのご紹介
  4. 4. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. 東京 大阪
  5. 5. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. 開発の流れ ▌要件&シナリオ検討 ▌機能設計 ▌仕様検討 ▌実装&コードレビュー ▌受け入れ試験自動化 ▌試験 ▌リリース 開発メンバーの役割
  6. 6. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. kintone開発チームの kintoneの使い方
  7. 7. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. 要件管理アプリ シナリオ 機能イメージ 仕様書リンク PG PG
  8. 8. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. タスク管理アプリ タスク説明 試験結果 実装内容 PG PG
  9. 9. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. 受け入れ試験アプリ 操作手順 期待結果
  10. 10. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. 日報
  11. 11. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. つぶやき(ピープル機能)
  12. 12. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. 実況スレ
  13. 13. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. まとめ ▌kintone開発チームはkintoneのヘビーユーザー ▌タスク管理から日常コミュニケーションまでkintoneを 活用 ▌kintoneはkintoneによってできているのです!!
  14. 14. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. ありがとうございました!
  15. 15. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. Appendix 1: ビルド結果通知
  16. 16. 2015 © Cybozu, Inc.2015 © Cybozu, Inc. × 文言変更コミットがある 場合はブラウザ拡張で Pull Requestにボタンを 表示 ボタンクリックで Jenkinsジョブをキック してkintoneアプリに反映 Appendix 2: 文言変更をkintoneアプリに反映
  17. 17. kintone配属200日記 東京第2開発部 kintoneチームPG 前田浩邦 2015 © Cybozu, Inc.
  18. 18. 自己紹介 • 前田 浩邦 (マエタ ヒロクニ) • 2014年4月 新卒入社 • 2014年10月 kintoneチームにPGとして配属 2015 © Cybozu, Inc.
  19. 19. kintone配属200日記 • 2014年10月: kintoneチームに配属!まずは不具合改修から • 2014年11月: 新規機能実装 • 2015年になってから • まとめ 2015 © Cybozu, Inc.
  20. 20. kintone配属200日記 • 2014年10月: kintoneチームに配属!まずは不具合改修から • 2014年11月: 新規機能実装 • 2015年になってから • まとめ 2015 © Cybozu, Inc.
  21. 21. 不具合管理アプリ 2015 © Cybozu, Inc.
  22. 22. 改修した不具合のいくつか • 表示されないツールチップ • 1秒ごとに下に伸びるダイアロ グ (Firefox) 2015 © Cybozu, Inc.
  23. 23. 不具合改修の進み方 • 1. 原因調査 • ダイアログの高さを再計算しているところが怪しそう? • 高さの仕様がFirefoxと他のブラウザで違う? • 2. 実装 • Firefox専用の高さの計算を別箇用意 • 3. 別のプログラマによるレビュー • 計算は正しいか • 他のブラウザに影響はしていないか? ここに気付くために丸一日費やすことも。。。 2015 © Cybozu, Inc.
  24. 24. kintone配属200日記 • 2014年10月: kintoneチームに配属!まずは不具合改修から • 2014年11月: 新規機能実装 • 2015年になってから • まとめ 2015 © Cybozu, Inc.
  25. 25. 機能: パンくずのスタイルの変更 • 新しいパンくず • いままでのパンくず 2015 © Cybozu, Inc.
  26. 26. スタイルを変更するには? • DOM要素を入れ替えるだけ? • 実は、別のページを埋め込んで表示 • DOMを入れ替えるのは不可能 通常のレコード詳細画面を埋め込んで表示 2015 © Cybozu, Inc.
  27. 27. 今回の実装 • 子ページ・親ページ・サーバ間でパンくずのリレー • 各子ページごとに個別対応 • レコード詳細、レコード一覧、出力されたファイル、…etc 子ページ 親ページ サーバ 1. 準備できました 2. パンくずください 3. パンくずです4. これを表示してね 2015 © Cybozu, Inc.
  28. 28. 実装の進み方 • 自動テストの結果はkintoneに通知 • 今回のループの主な要因 • 親ページがデータ取得に失敗 (どこかでリレーが途切れた?) • 出力されたファイルでの対応が漏れていた • なぜか Internet Explorer でだけ動かない 少し実装 少し動かす 自動テスト 完了!本体に統合レビュー 2015 © Cybozu, Inc.
  29. 29. パンくずの実装完了 約50回 2015 © Cybozu, Inc.
  30. 30. kintone配属200日記 • 2014年10月: kintoneチームに配属!まずは不具合改修から • 2014年11月: 新規機能実装 • 2015年になってから • まとめ 2015 © Cybozu, Inc.
  31. 31. 2015年になってからもいろいろやりました • レコード一覧画面のヘッダ固定 • エスケープ漏れ緊急改修 • MySQLのオートインクリメントが勝手にリセット • KAIZEN合宿 2015 © Cybozu, Inc.
  32. 32. KAIZEN合宿 • 普段の業務とは離れてPGが自由に機能実装 • 不便に感じることや社内外のユーザーから要望が多いものをつくる • 私はコードのリファクタリングをしていました 2015 © Cybozu, Inc.
  33. 33. kintone配属200日記 • 2014年10月: kintoneチームに配属!まずは不具合改修から • 2014年11月: 新規機能実装 • 2015年になってから • まとめ 2015 © Cybozu, Inc.
  34. 34. まとめ • 振り返ってみると • つくるのが大変だった機能はやっぱり思い入れが深い • 今では • kintone本体だけでなく、cybozu.comのインフラ関連の仕事も • まだまだ知らないことがたくさん • なんとかキャッチアップすべく、日々勉強しています 2015 © Cybozu, Inc.
  35. 35. わたしたちが 正しいkintoneクエリにたどりつくまで 小林 大輔 サイボウズ株式会社 kintone開発チーム 2015 © Cybozu, Inc.
  36. 36. 自己紹介 小林大輔 kintone開発チーム プログラマー(PG) 4年目 2015 © Cybozu, Inc.
  37. 37. kintoneクエリ? 2015 © Cybozu, Inc.
  38. 38. kintoneクエリとは? ▌kintoneのレコードの絞り込み条件を文字列で書き表したもの ▌使われているAPI 条件を満たしているレコードを取得するAPI など 2015 © Cybozu, Inc.
  39. 39. 価格 >= 10000 order by 商品ID asc 2015 © Cybozu, Inc.
  40. 40. 間違っているクエリはどれ? 数値 = 123 数値 > 123 文字列1行 = “ABC” 文字列1行 > “ABC” チェックボックス = “選択肢1” チェックボックス in (“選択肢1”) 2015 © Cybozu, Inc.
  41. 41. 間違っているクエリはどれ? 数値 = 123 数値 > 123 文字列1行 = “ABC” 文字列1行 > “ABC” チェックボックス = “選択肢1” チェックボックス in (“選択肢1”) 2015 © Cybozu, Inc.
  42. 42. 昔のkintoneクエリは・・・ 数値 = 123 数値 > 123 文字列1行 = “ABC” 文字列1行 > “ABC” チェックボックス = “選択肢1” チェックボックス in (“選択肢1”) 2015 © Cybozu, Inc.
  43. 43. レコードアクセス権の設定API 2015 © Cybozu, Inc.
  44. 44. APIの違い ▌レコード取得API クエリは保存されない。画面には影響しない。 ▌レコードアクセス権の設定API クエリが保存される。 レコードアクセス権の設定画面を開くと、 保存したクエリが画面に表示される。 2015 © Cybozu, Inc.
  45. 45. 2015 © Cybozu, Inc.
  46. 46. 立ちはだかった問題 ▌フィールドと演算子の組問題 ▌クエリ関数問題 ▌ANDとORの混在問題 2015 © Cybozu, Inc.
  47. 47. フィールドと演算子の組問題 数値 > 123 日時 > “2015-01-01” 文字列 > “ABC” 数値 in (123) 日時 in (“2015-01-01”) 文字列 in (“ABC”) 2015 © Cybozu, Inc.
  48. 48. 表が必要= > in like 文字列1行 文字列複数行 数値 計算 チェックボックス 日付 日時 2015 © Cybozu, Inc.
  49. 49. クエリ関数問題 • ユーザ選択 in (LOGINUSER()) • 日時 > LAST_MONTH() • 日時 < THIS_YEAR() • 日時 > NOW() • 日時 = TODAY() レコードアクセス権の設定APIでは使用できない 2015 © Cybozu, Inc.
  50. 50. ANDとORの混在問題 ▌(価格 > 100 AND 価格 < 200) OR チェックボックス in (“A”) 2015 © Cybozu, Inc.
  51. 51. 立ちはだかった問題 ▌フィールドと演算子の組問題 ▌クエリ関数問題 ▌ANDとORの混在問題 2015 © Cybozu, Inc.
  52. 52. 自動テスト 単体テスト APIテスト ブラウザテスト 400 ケース以上 130 ケース以上 2015 © Cybozu, Inc.
  53. 53. お問い合わせ 今まで使えていた演算子 が使えない! 2015 © Cybozu, Inc.
  54. 54. 原因 仕様を容易に変更してはならない 文字列1行 > “ABC” 仕様を変更するときは十分予告してから 2015 © Cybozu, Inc.
  55. 55. 仕様の厳密化 2015 © Cybozu, Inc.
  56. 56. SC部との連携 kintone 開発チーム PG SC部 2015 © Cybozu, Inc.
  57. 57. リリースノートの充実 2015 © Cybozu, Inc.
  58. 58. Beta & Deprecated 2015 © Cybozu, Inc.
  59. 59. そのほかの取り組み ▌アクセスログからAPIの使用状況を分析 ▌さらなるテストの充実、不用意な仕様変更を防止 2015 © Cybozu, Inc.
  60. 60. 正しく動作し、安心できるAPIを提供します 2015 © Cybozu, Inc.
  61. 61. kintone テストのウラ側 サイボウズ 品質保証部 渡邉 豊幹 2015 © Cybozu, Inc.
  62. 62. 渡邉 豊幹(わたなべ ゆうき) 新卒入社5年目 品質保証部で kintone の試験を担当(QA) kintoneQA チーム 東京3人、松山11人、上海3人で構成 2015 © Cybozu, Inc.
  63. 63. 試験 kintone のリリースサイクル 実装 仕様 リリース 2015 © Cybozu, Inc.
  64. 64. 要件管理アプリ 仕様 実装 試験 リリース PG PM 仕様書 言語(日/英/中)は 考慮されてい る? 監査ログは 出力され る? バージョンアッ プした場合は? エラーケース は? 仕様検討段階から QA も参加 2015 © Cybozu, Inc.
  65. 65. 試験仕様書 アプリ 試験仕様書 QA 試験 リリース 仕様 実装 使用できる文字列 や範囲が定められ ている? デザイン変更は ツアーに影響な い? REST API の 確認は必要? タイムゾーンと サマータイムは 考慮されている? 過去不具合に基づく QA 内レビュー 2015 © Cybozu, Inc.
  66. 66. 0 5000 10000 15000 20000 25000 30000 35000 リリース 仕様 実装 試験 新デザイン対応版 34000項目 12月リリース版 12800項目 数千~数万項目の手動テストを実施 各バージョンの試験項目数 (項目) 2015 © Cybozu, Inc.
  67. 67. 0 100 200 300 400 500 リリース 仕様 実装 試験 数百件の不具合を検出し、改修検討 各バージョンの不具合検出数 新デザイン対応版 507件 12月リリース版 235件 (件) 2015 © Cybozu, Inc.
  68. 68. 0 50 100 150 200 250 リリース 仕様 実装 試験 改修期間と目標件数を定めて改修 各バージョンの改修不具合数 12月リリース版 217件(件) 2015 © Cybozu, Inc.
  69. 69. 409 374 331 289 246 226 94 25 20 11 0 100 200 300 400 500 1位 レコード画面 2位 フォーム作成画面 3位 スペース 4位 通知 5位 一覧(絞り込み) 1位 レコード画面 1位 レコード画面 3位 プラグイン 1位 レコード画面 1位 レコード画面 8位 REST API 19位 JS API 34位 プラグイン 37位 JS カスタマイズ 44位 API トークン ※ kintone の各機能・画面を48に分類機能ごとの検出不具合数 リリース 仕様 実装 試験 不具合頻出箇所をチームで共有 (件) 2015 © Cybozu, Inc.
  70. 70. QA による手動のテストのほか、 PG と連携して自動テストを作成(API、各機能) cybozu.com conference 2015 http://www.slideshare.net/cybozucommunity/20151118-55276768 リリース 仕様 実装 試験 品質改善に向けた取り組み 2015 © Cybozu, Inc.
  71. 71. 仕様 実装 試験 リリース フィードバック アプリ .com 評価箱 不具合管理 アプリ 要件管理アプリ 不具合 要望 リリース後フィードバックを収集 2015 © Cybozu, Inc.
  72. 72. フィードバック アプリ .com 評価箱 不具合管理 アプリ 要件管理アプリ 不具合 要望 0 50 100 150 200 250 社外報告各バージョンで改修した不具合数 (件) 2015 © Cybozu, Inc. 仕様 実装 試験 リリース リリース後フィードバックを収集
  73. 73. まとめ ・仕様段階から不具合を未然に防ぐため QA チームも検討に参加 ・改修目標件数を定め、バージョンごとの 品質改善に努めている ・フィードバックを取り入れながら不具合を改修 2015 © Cybozu, Inc.
  74. 74. ありがとうございました 2015 © Cybozu, Inc.
  75. 75. セキュリティ標準から見る kintone のセキュリティ機能 セキュリティチーム 伊藤彰嗣 Copyright (C) Cybozu,Inc.
  76. 76. 自己紹介 • 伊藤 彰嗣(@springmoon6) • 品質保証部セキュリティチーム所属 • サイボウズの CSIRT(Cy-SIRT)の窓口担当 Copyright (C) Cybozu,Inc. 東京 上海 製品のセキュリティ検証 脆弱性情報の管理 外部組織との連携 製品のセキュリティ検証
  77. 77. 統制 製品運用 ここが気になる.com のセキュリティ Copyright (C) Cybozu,Inc.
  78. 78. ここが気になる.com のセキュリティ 558 177 154 0 100 200 300 400 500 600 Copyright (C) Cybozu,Inc. 運用 統制 製品
  79. 79. cybozu.com のセキュリティ Copyright (C) Cybozu,Inc. http://www.slideshare.net/cybozucommunity/ss-47645321
  80. 80. お客様が求めること 御社の製品は業界で認められたセキュリティ標準に従って 開発が行われていますか? 81 112 0 20 40 60 80 100 120 2014 年 2015 年 Copyright (C) Cybozu,Inc.
  81. 81. セキュリティ標準? Copyright (C) Cybozu,Inc.
  82. 82. OWASP ASVS v3 https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project アプリケーションセキュリティ検証標準プロジェクト 検査の対象範囲、厳密さのレベルを整理し、標準化 Copyright (C) Cybozu,Inc.
  83. 83. OWASP ソフトウェアセキュリティに関する 情報共有と普及啓発を目的とした OSS コミュニティ Copyright (C) Cybozu,Inc.
  84. 84. 検証のレベル感 Copyright (C) Cybozu,Inc. レベル3(33 項 目) 発展レベル2(59 項 目) 標準的レベル1(87 項目) 最低限満たすべきもの
  85. 85. 対応している質問項目の例 Copyright (C) Cybozu,Inc. No. 質問項目 回答 v1.1 アプリケーションで利用している 全てのソフトウェアを識別してい ますか? サイボウズでは各製品が利用し ている OSS を棚卸して管理して います。 V5.10 SQL クエリを発行する際には、フ レームワークを用いることで SQL インジェクションの影響を受けな いように設計されていますか? SQL 文の組み立ては全てプレー スホルダで実装されています。 V7.7 アプリケーションで使う暗号化ア ルゴリズムは、FIPS 140-2 または、 標準に準拠していますか? FIPS140-2 に準拠しています。
  86. 86. 対応していない質問項目の例 Copyright (C) Cybozu,Inc. No. 質問項目 回答 v2.27 パスワード辞書による弱いパス ワードやよく使われるパスワード を利用することは制限されていま すか? 制限されていません。 V16.3 サーバー側でアップロードされた ファイルのウイルスチェックを 行っていますか? サーバー側でアップロードされ たファイルのウイルススキャン は行っておりません。各サー バーにはホスト型の IPS を導入 し、許可されたプロセス以外動 作しないようにしております。
  87. 87. kintone の準拠状況(レベル1) 71 12 3 0 10 20 30 40 50 60 70 80 対応済み 未対応 対象外 対応率:82 % Copyright (C) Cybozu,Inc.
  88. 88. 2016 年 2 月リリース版で 新たに準拠する機能 Copyright (C) Cybozu,Inc.
  89. 89. V3.17 ログインセッションの破棄 Copyright (C) Cybozu,Inc.
  90. 90. まとめ Copyright (C) Cybozu,Inc. • 標準に準拠すると同じ物差しで評価できる • OWASP ASVS v3 を使って準拠状況を確認 セキュリティ標準に沿って開発 • ログインセッションを破棄する機能が搭載 新しく搭載される機能
  91. 91. お気軽にご質問ください! 終了後は Twitter アカウント @springmoon6 でも受け付けます Copyright (C) Cybozu,Inc.
  92. 92. kintone の バージョンアップを 振り返る kintone プロダクトマネージャー サイトウコウイチ 2015 © Cybozu, Inc.
  93. 93. ご挨拶 ▌プロダクトマネージャー kintoneプロジェクトに2012年より参加 cybozu.com 全体のリリース管理 kintone の開発計画の策定、要件管 理 以前担当していた製品のプロモーション で、ネタキャラ扱いされたことがあります。 93 2015 © Cybozu, Inc.
  94. 94. 2011年11月7日 94 2015 © Cybozu, Inc.
  95. 95. 95 2015 © Cybozu, Inc.
  96. 96. 2015年実績 4回のリリース 8回の緊急リリース 96 2015 © Cybozu, Inc.
  97. 97. 2011年11月 ローンチ! 97 2015 © Cybozu, Inc.
  98. 98. 98 最初のポータル画面 2015 © Cybozu, Inc.
  99. 99. 99 レコード一覧 2015 © Cybozu, Inc.
  100. 100. 100 レコード詳細 2015 © Cybozu, Inc.
  101. 101. 101 グラフ 2015 © Cybozu, Inc.
  102. 102. 102 フォーム編集 2015 © Cybozu, Inc.
  103. 103. 103 初期の広告 2015 © Cybozu, Inc.
  104. 104. 2012年3月 最初の 大型アップデート 104 2015 © Cybozu, Inc.
  105. 105. 105 ファイル読み込み 2015 © Cybozu, Inc.
  106. 106. 106 ルックアップ 2015 © Cybozu, Inc.
  107. 107. 107 アプリの再利用 2015 © Cybozu, Inc.
  108. 108. 108 ソート 2015 © Cybozu, Inc.
  109. 109. 109 印刷用レイアウト 2015 © Cybozu, Inc.
  110. 110. 2012年6月 幻のiPhoneアプリ 110 2015 © Cybozu, Inc.
  111. 111. 111 プレーンテーマ 2015 © Cybozu, Inc.
  112. 112. 112 幻のiPhoneアプリ 2015 © Cybozu, Inc.
  113. 113. モバイル対応変遷 113 2015 © Cybozu, Inc.
  114. 114. 114 ▌2012年6月幻のiPhoneアプリ ▌2012年12月モバイルビュー ▌2013年8月モバイルアプリ 2015 © Cybozu, Inc.
  115. 115. 2012年10月 早くもデザイン刷新 115 2015 © Cybozu, Inc.
  116. 116. 116 2代目ポータル 2015 © Cybozu, Inc.
  117. 117. 117 最初のポータル画面 2015 © Cybozu, Inc.
  118. 118. 118 プロセス管理 2015 © Cybozu, Inc.
  119. 119. 119 関連レコード一覧 2015 © Cybozu, Inc.
  120. 120. 120 インライン編集 2015 © Cybozu, Inc.
  121. 121. 121 アプリテンプレート 2015 © Cybozu, Inc.
  122. 122. 2013年3月 スペース機能搭載 122 2015 © Cybozu, Inc.
  123. 123. 123 スペーストップページ 2015 © Cybozu, Inc.
  124. 124. 124 最初のポータル画面 2015 © Cybozu, Inc.
  125. 125. 125 アプリストア 2015 © Cybozu, Inc.
  126. 126. 126 おすすめグラフ/Excel読み込み 2015 © Cybozu, Inc.
  127. 127. 127 カレンダービュー/グループフィールド/自動計算 2015 © Cybozu, Inc.
  128. 128. 2014年11月 デザイン変更2回目 128 2015 © Cybozu, Inc.
  129. 129. 129 3代目ポータル 2015 © Cybozu, Inc.
  130. 130. 130 2代目ポータル 2015 © Cybozu, Inc.
  131. 131. 131 最初のポータル画面 2015 © Cybozu, Inc.
  132. 132. 開発環境の変遷 132 2015 © Cybozu, Inc.
  133. 133. 開発環境の変遷 ▌2012年11月 REST API ▌2013年3月 JS/CSS読込 ▌2013年7月 全体JS ▌2014年4月 カスタマイズビュー ▌2014年6月 プラグイン ▌2015年1月 プラグイン読込 ▌2015年7月 デプロイAPI ▌2013年7月 cybozu.com developers公開 ▌2013年12月 第1回kintone Café開催 ▌2014年4月 cybozu.com developers network公開 133 2015 © Cybozu, Inc.
  134. 134. おわりに 134 2015 © Cybozu, Inc.

×