Read Article

kintoneの「アプリ一覧」が使えない?ならこれを使え

kintoneの「アプリ一覧」が使えない?ならこれを使え

こんにちは!
かな打ち派の武井です。
コーディング時も基本かな打ちです!

タイピングについては、中々私の右に出る者はいない武井です。

いわゆる
「俺ちゃんタイピング速いんすよwwネットゲームしまくってたんでwww」
的なやつではなく、趣味としてタイピング速度を日々競い合っている連中の中で揉まれたガチのやつで、
e-typing寿司打といった有名どころのタイピング速度測定サイトでも、
ランキング1位を複数回獲得したことなどの語り切れぬ実績がある武井です。

ここまでの実績があるので、一時期タイピング界ではそれなりに名を馳せていた武井です。

しかし、私の本業はローマ字打ちなのです。
何故かな打ちに浮気しているかというと、ひとえにかな打ちの方が打鍵完了時間が短いからです。

例えば、「武井琢治」とローマ字打ちで打鍵する場合、
「takeitakuji」と11打鍵が必要です。
しかし、かな打ちの場合には、「q:eqhd@」と僅か7打鍵で済みます。

「武井琢治」の場合は36%の省打鍵率でしたが、
「田里友彦」の場合は「tasatotomohiko」→「qxssmvb」と、
驚異の省打鍵率50%となります!

これからも「かな打ちプログラマーの会」を私の中で発展させて参る所存です。

「かな打ち プログラマー」でググると
できるプログラマーは「かな入力」を使っているという話
などのようなものばかりが引っかかり、内容に同意しつつも悦に入っている武井です。

ここまではまだ時候の挨拶

さて、かな打ち並の業務効率化を図れるkintone。

そのkintone利用に際して、よくある系の問題の1つに、
「アプリ一覧が全然使えないやんけ!」
というものがあります。

ポータル画面右下のアプリ一覧には、
アクセス可能なアプリの中から作成日時が最新のもの10件しか表示されていません。

それ以上は、「さらに表示」などというしゃらくさいボタンを押さなければ見ることができません。
100個前に作ったアプリにアクセスするにはこのしゃらくさボタンを5、6回押す羽目になります。

代替手段としてなのか、「お気に入り」機能と「ブックマーク」機能がそれぞれありますが、
誰も使っていないと思います。
少なくとも私は使っていませんし、使っているという話を聞いたこともありません。

一方、代替手段としてめちゃくちゃ使われているのが「お知らせ」や「スレッド」機能です。
どちらも単純にリンクをテキストエリアに書き込むだけの利用法で、
取っつきやすく、表示位置も見やすい部分にあることがウケているのでしょう。

前述の機能たちが使われない理由は「使い方がよくわからん」に尽きるでしょう。

それから「お知らせ」や「スレッド」機能は
「自分流にカスタマイズしたアプリ一覧を他者も使える(使わせられる)」
ここもポイントとなります。

いいものできました

折しもサイボウズさんからjsTreeライブラリを使用した何かを作って欲しい旨の依頼を受けていたため、
ボウズマンのあの必殺技で焼殺されない形での最大限の魔改造を画策しておりました。

結果が↓これです。

appIndex3

これは相当頑張りました!

元々、ドラッグ&ドロップでの動作対応までやるつもりはなかったのですが、
己が能力の極限に挑みました。

詳しい機能は↓のデベロッパーサイトに掲載された記事を見てくださいね――ッッ!

■kintone アプリ一覧プラグイン
https://cybozudev.zendesk.com/hc/ja/articles/213724883

さらに!別のベクトルから攻めるやつもできました

上記も素晴らしく、使い道は多種多様かと思うのですが、
他方で「個人個人で設定させたくないんや。飽くまでアプリ一覧は会社/システム管理者→ユーザーに提供したいんや」というニーズがあります。

そこで、今回私がサイボウズ完全非公認アウトローなアプリ一覧を作成いたしました!!

20160829

それ見たことか!

ちょっと俺を放っておくとこんな素晴らしい逸品を作ってしまう!!

どの辺で非公認かというと、
本来の標準アプリ一覧を無理矢理DOM操作でjsTreeに書き換える形にしているため、
ボウズマンも憤怒してしまう感じのやつになっております。

良薬は口に苦し。

【ポータル版アプリ一覧の使い方】

  1. こちらからアプリテンプレート(「ポータル版アプリ一覧.zip」)をダウンロードします。
  2. アプリテンプレートをkintone環境に読み込み、アプリを作成します。(kintoneヘルプ
  3. 全体JSに後述のJavaScriptファイルを後述のように書き換えて追加します。(kintoneヘルプ
  4. 作成された「ポータル版アプリ一覧」アプリのアクセス権限を変更します。(詳細後述)
  5. 作成された「ポータル版アプリ一覧」アプリにレコードを追加します。(詳細後述)
  6. ポータル画面を開くと、右下部にレコード追加された通りにアプリ一覧ができています。
■全体JSについて

全体JSのソースは以下のようになっております。

2行目のJSTREE_MST_APPID変数は、作成した「ポータル版アプリ一覧」のアプリIDに書き換えてください。

全体的に、結構細かいところまで対応しています。
例えば、「お知らせ」を更新した後でも、ちゃんとアプリ一覧が描画されるようになっていたりだとか。

ちなみに、以下は「ポータル版アプリ一覧」のアプリ内に設定しているJavaScriptです。
(アプリテンプレートに含まれるため、設定は不要です。)

細かい仕様は後述しますが、
それに対応して色々やっております。

フォルダ名が変更された場合に、いちいちすべてのレコードを変更しなくても済むなど、
なぜか今回の武井は凄く細部にこだわっています!

※全体JSを設定した後でないとレコードの登録は正常に動作しません。

■アクセス権限の変更

こちらは上記のサイボウズ公認プラグインと違って、会社やシステム管理者がレコード操作することを想定しているため、
裏側データは直接レコードを書き換える形になっております。(すなわち情強専用)
従って、一般ユーザーは編集不可能なようにアクセス権限を変更する必要があります。

アプリの権限、レコード権限ともに「アプリ一覧の編集権を与えたい人」には各権限を、
「アプリ一覧の編集権はないが、アプリ一覧を利用させたい人」には「閲覧権限」を付与してください。

基本的には
「システム管理者」=全権限・「EveryOne」=閲覧権限のみ
でよろしいかと思います。

■フォルダレコードの作り方

201608291608

■アプリレコードの作り方

201608291609

ちなみに、フォルダ順、アプリ順は、値が大きいか小さいかしか見ていないので、
通しでの順番をつけてもらっても、フォルダ毎の順番をつけてもらっても、
とにかく表示したい順にさえ数字を入れてくれれば想定通りの動きになると思います。

■プラグイン版アプリ一覧とポータル版アプリ一覧の比較

comp

遅れ馳せながらFullCalendarプラグインのお話

去る7月、拙作kintone イベントカレンダープラグインが出来し、
cybozu developer networkに掲載されました。

コンセプトとしては、「Cybozu CDNのFullCalendarを利用した、開発者向けのサンプルプラグイン」という建前であるため、
定番プラグインである「カレンダーPlus」には機能的に遠く及ばないにせよ、
プロセス管理と連携して、イベントの進捗が一目で分かるなどの工夫が凝らしてありますので、
興味のある方はご一読いただければと思います。

【免責事項】
各プログラムを使用したことによるいかなる損失・損害も責を負いません。
スマホ版では使用できません。
各プログラムに対するサポートは行っておりません。

この記事を書いた人

武井 琢治
武井 琢治
サイボウズスタートアップス株式会社の武井と申します。
kintoneカスタマイズを行う上での勘所を敷衍して発信していきたいと考えております。
kintoneは中国語対応しているため、中国語でも発信していきたいと思います。
大家好,我叫QB,请多关照。我喜欢吃肠粉。

趣味は漢字です。
所持する資格は、日本漢字能力検定一級です。
URL :
TRACKBACK URL :

COMMENTS & TRACKBACKS

  • Comments ( 6 )
  • Trackbacks ( 0 )
  1. 初めまして。Itoと申します。
    ポータル版アプリ一覧を導入してみたのですが、フォルダレコードを保存しようとして「保存」を押しても反応がありません。「キャンセル」も同様です。
    全体JSも変更して組み込んでいます。
    何かライブラリが足りないのでしょうか。

    • るーちゃん

      横からすいません。
      自分も使おうとしてみ見てみましたが、以下のところがおかしい様です。

      ↓レコードが無いのにレコードIDを引こうとしている。ここで止まっている。
      // まず、変更前のフォルダ名を取得する
      kintone.api(‘/k/v1/record’, ‘GET’, {app: JSTREE_MST_APPID, id: recId}, function (resp) {
      var beforeRecord = resp.record;

      レコードが無い場合は分岐する必要がありそうでした。

      また、ここをクリアしてもツリーを作り出すjsでループになってしまい
      上手く表示されないようです。

      • 一部コードを修正する必要がありましたが、一応実装できたので情報をシェアします。
        ● kintoneシステム管理→JavaScript / CSSでカスタマイズ→ポータル版アプリ一覧全体jsを読み込む前に、jQueryとjstreeも追加する必要があります。
        ● アプリ内jsのコードのバグを指摘している方がいますが、まさにその箇所「// まず、変更前のフォルダ名を取得する」のあたり。UPDATEはあるけどINSERTの処理がありません。なので、レコードIDの有無で分岐して、PUTではなくPOSTの処理を追加しました。
        その結果、「保存」ボタンを押しても何も起こらないけれど、とりあえずレコードは追加されるようになりました。
        いろいろ試行錯誤しながら手直しすれば使えそうですが、あれこれコードをいじってる間、他のユーザーがポータルを使えず、影響範囲が大きいため、残念ながら、こちらのアプリの実装は見送ります。
        ちゃんと使えたら便利そうなんですけどね!

  2. ポータブル版アプリ一覧を導入したいと思ったのですが試行錯誤してもレコードの追加ができず、見ていたところ下記のエラー?のようなものがありました。
    もし関係ないものでしたら申し訳ありません。

    {“code”:”CB_JH01″,”id”:”***************”,”message”:”認証に失敗しました。セッション認証には、「X-Requested-With」ヘッダーが必要です。”}

    サポート対象外は重々承知しておりますが、ご連絡させていただきました。

  3. 初めまして、みなさん書かれているようにポータル版アプリ一覧を利用したいのですが、フォルダレコードを保存しようとして「保存」を押しても反応がありません。
    教えていただけましたら幸いです。>武井様

  4. 一部コードを修正する必要がありましたが、一応実装できたので情報をシェアします。
    ● kintoneシステム管理→JavaScript / CSSでカスタマイズ→ポータル版アプリ一覧全体jsを読み込む前に、jQueryとjstreeも追加する必要があります。
    ● アプリ内jsのコードのバグを指摘している方がいますが、まさにその箇所「// まず、変更前のフォルダ名を取得する」のあたり。UPDATEはあるけどINSERTの処理がありません。なので、レコードIDの有無で分岐して、PUTではなくPOSTの処理を追加しました。
    その結果、「保存」ボタンを押しても何も起こらないけれど、とりあえずレコードは追加されるようになりました。
    if (recId) {
    // まず、変更前のフォルダ名を取得する
    ~ (以下略) ~
    } else {
    var body = {
    “app”: JSTREE_MST_APPID,
    “record”: {
    “folderName”: {
    “value”: record.folderName.value
    },
    “folderSort”: {
    “value”: record.folderSort.value
    },
    “fParentFolder”: {
    “value”: record.fParentFolder.value
    },
    “defaultOpen”: {
    “value”: record.defaultOpen.value
    },
    “appName”: {
    “value”: record.appName.value
    },
    “appSort”: {
    “value”: record.appSort.value
    },
    “aParentFolder”: {
    “value”: record.aParentFolder.value
    },
    “url”: {
    “value”: record.url.value
    }
    }
    };
    kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘POST’, body, function(resp) {
    // success
    console.log(resp);
    }, function(error) {
    // error
    console.log(error);
    });
    いろいろ試行錯誤しながら手直しすれば使えそうですが、あれこれコードをいじってる間、他のユーザーがポータルを使えず、影響範囲が大きいため、残念ながら、こちらのアプリの実装は見送ります。
    ちゃんと使えたら便利そうなんですけどね!

うさぎ への返信 コメントをキャンセル

*
*
* (公開されません)

Return Top