kintone(キントーン)でシステムを作ると属人化が起きる?

kintone楽しくなってくるとどんどん凝ったことやりはじめちゃいませんか?標準機能だけでどこまで凝ったことができるか?ってものすごく複雑な計算式を作ってみたりしている人もいるんじゃないかと思います。

この記事では、そういう凝ったアプリを作ってしまうことによって、kintoneでも属人化が起きるという話と、ではそれをどうやって避ければいいのかというお話をしたいと思います。

kintoneで起こる属人化というのはどういうケースがあるのでしょうか?考えてみましょう。 ケースごとにどうやって、属人化を避けるかも考えましょう。

CASE1: アプリの目的が不明

kintoneは簡単にアプリが作れます。それゆえ試しに作ってみたというものも含めてたくさんkintoneアプリを作ってしまうことがあります。そのうち、「どのアプリが何の目的で作られているのかがわからない」という状態になります。

同じ名前のアプリが複数できてしまうこともよくある現象で、「案件管理」アプリがたくさんある会社さんも多いんじゃないかと思います(笑)

回避方法

これを回避するには整理するしかないのがつらいところですが、2021年3月のアップデートで先行機能としてアプリのスペース間の移動ができるようになったので、整理はかなりやりやすくなったと思います。

  • スペースをうまく分ける
  • 定期的にアプリを整理する
  • アプリテンプレートから作ったアプリは名前をすぐにわかりやすいものに変える
  • アプリ管理者用メモを入れてそのアプリがどういうものかを残すようにする

CASE2: 凝りすぎた標準機能

kintoneは標準機能でまず考えるのが基本的なセオリーです。標準機能でできることは標準機能でやって、どうしてもできないことがあればプラグインや連携サービス、カスタマイズを使うようにします。

この「標準機能でできることは標準機能でやって」をやりすぎると問題が起きます。

例えば、複雑な条件に基づいて計算結果が分岐するような場合、kintoneだと計算式にifが使えますのでifで分岐して記述することができます。

if(A = 1, “あ”,
 if(A = 2, “い”,
   if(A = 3, “う”,
     “え”
   )
 )
)

のようにifが入れ子にるような計算式も書くことができます。まだこれくらいなら読めますが、これがもっと増えると地獄です。

回避方法

これを回避するには一見冗長に見えるような工夫が必要になります。

  • 式が複雑になる場合は、計算フィールドを複数用意して途中段階の計算をフィールドに入れることで1つ1つの式はシンプルにする
  • 計算フィールドが多段に連鎖するような場合は、アプリ管理用メモに計算の意味を記録として残す
  • 複雑になるようであればgusuku Customineの利用も検討する(gusuku Customineの方がいくぶんかシンプルにできるケースが多いです)

CASE3: データ構造が意味不明

kintoneもデータベースの一種です。そのため、必ずデータの構造というものを意識して作る必要があります。このコラムの別記事で「データベースとしてのkintone」という記事も出しておりますので、そちらも参照していただくと良いのですが、kintoneにはkintone特有のデータ構造の考え方があります。

具体的には、

  • 各レコードのキー情報をどのように定義するか
  • テーブルの使いどころ
  • ルックアップと関連レコードの使い分け

が、代表的なところです。

ここでやりがちなことが、1画面/1アプリで済むように様々な情報を1アプリに詰め込むということです。1つのアプリに詰め込んで作ったときはすっきりすると思いますが、後から他の人が見た時にそのアプリの目的は管理しているデータが不明確になるため、理解が困難になります。

回避方法

kintoneは簡単ですが、学習が不要なわけではありません。必要最低限の学習が必要です。

  • 一般的なDB設計の基礎を学ぶ(データベースの正規化など)
  • kintoneの標準機能を正しく理解する(必要ならcloud universityなども受講する)
  • 「無理しているな」と感じるアプリは作らない

CASE4: プラグイン地獄

kintoneは、1つのアプリに最大20個のプラグインを入れることができます。プラグインは執筆時点で300種類以上リリースされていまして、ユーザーさんのkintone環境を見ると、何十個もプラグインがインストールされているなんてこともあります。

プラグインには色々なものがありますので、あまりたくさん入れると、どの機能をどのプラグインが提供しているのかわからなくなります。

また、有償プラグインの場合は提供している各社と契約することになりますので、どれがどの会社のプラグインで、いくら払っているのか、買い切りなのか月額、年額なのか?というのも増えてくると、それこそそれを管理するkintoneアプリを作らないとわからなくなってきます。

更に、多数のプラグインを同時に使うと競合が起きることがよくありますので、少し設定を変えただけで動かなくなるなんてこともあります。

回避方法

プラグインいっぱいあって悩ましいのですが、これも整理と明文化しかないんですね。

  • 不要なプラグインはアンインストールする
  • kintone環境にインストールされているプラグインの開発元や契約条件を管理するアプリを作って管理する
  • 1つのkintoneアプリに複数のプラグインを入れる場合は、どのプラグインが何をしているのかをアプリ管理者用メモに残す

CASE5: JavaScript地獄

「Excelマクロ地獄」って聞いたことありますか?社内になにか便利なエクセルファイルがあって代々受け継がれている。なにか複雑なマクロが組まれていて、少し情報を入れたらいい感じで計算してくれる。でも、それを作った人はもういないので中で何やっているのかは誰も知らない。みたいなやつです。

これと同じことはkintoneでも起こりえます。誰にもわからないようなJavaScriptカスタマイズをkintoneに入れてしまうと、その人がいなくなった後はそれをメンテナンスできる人がいなくなります。

特に、サンプルプログラムをコピーして少し変えたようなものが入っている場合は注意してください。Cybozu Developer Networkにはサンプルプログラムがたくさん掲載されていますが、そのプログラムの意味を知らないままコピーして持ってきて、動いたからよしとしているようなケースは後々問題になりますので注意しましょう。

回避方法

業務で使うkintoneアプリに、開発のプロでない方が書いたプログラムを入れるのは正直オススメできません。

  • Cybozu Developer Networkからのコピペプログラミングはしない
  • 自分でJavaScriptを書く場合でもコメントをたくさん入れておく
  • 常に、美しいプログラムとはなにかを追求して美しいプログラムになるように維持する
  • カスタマイズしたいならgusuku Customineを使う

まとめ

属人化を防ぐために圧倒的に使えるキャッチフレーズがあります。最後にそれをご紹介してこの記事は終わりにします。

それ1年後の自分が見ても瞬間で理解できますか???

これに注意してkintone開発をしてきましょう!!!