Articles tagged with: Excel

RICOH kintone plusのRICOH 帳票作成プラグインの攻略ポイント


  Topへ↓

とある案件でRICOH kintone plusを使ったkintoneの構築を行っています。
RICOH kintone plusといえば、RICOH社によるkinotneです。サイボウズ社が提供するkintoneとの違いは、RICOH社の複合機との連携機能が標準で搭載されていることに加え、いくつかのプラグインが無償でついてきます。(サービスサイト
RICOH kintone plusに付属するプラグイン一覧
本稿では、これらのプラグインのうち、RICOH 帳票作成プラグインに焦点を当てて説明します。

kintoneを取り巻くパートナー企業やサービス、プラグインの集合を意味する概念であるエコシステムには多くの帳票発行サービスがあります。弊社はこれまで、お客様のニーズに合わせて様々な帳票発行プラグインを導入し、帳票の出力を可能にしてきました。
ところが、RICOH 帳票作成プラグインは今まで培ったやり方が通用しないところがありました。
RICOH 帳票作成プラグインを使いこなすにあたり、苦戦したポイントとその攻略法を共有しておいた方がよいと思います。この先も苦労されるであろうユーザーさんのためにも。


2.認証の設定

  Topへ↑

本稿はRICOH kintone plusの申し込みは既に終わっている想定です。
該当するサブドメインにアクセスし、kintoneシステム管理→プラグインに移動すると、RICOH kintone plusで提供されるプラグインがインストールされています。

この中のRICOH 帳票作成プラグインが本項で取り扱う対象のプラグインです。

RICOH kintone plusで各種のプラグインを使うには、EMPOWERING DIGITAL WORKPLACESにアカウントを作成する必要があります。EMPOWERING DIGITAL WORKPLACESとはRICOH社のクラウドサービスの総称といえばよいでしょうか。(サービスサイト)

これが少し厄介です。導入後、まず初めての一回だけ、上の画像を参考にアカウントを設定する必要があります。
出典元はこちらのサイトです。

さらに、RICOH kintone plusに必ずアプリとして入ってくるRICOH EDW認証アプリにRICOH EDW認証プラグインを設定します。

上の画像を参考にしてください。
出典元はこちらのサイトです。

ここで登録したユーザーは、kintoneのアカウントごとに認証が必要です。
帳票を出力する対象のアプリから出力する際、Aというアカウントで出力したあと、Bというアカウントで出力する際にRICOH EDW認証アプリを開いてユーザー認証を行う必要があります。その後Aというアカウントで出力する際にRICOH EDW認証アプリからユーザー認証をやり直す必要があります。
複数アカウントから同じアプリの帳票を出す際にはこのユーザー認証の手間が入りますので、ご注意ください。

3.ひな型の作成にあたっての問題

  Topへ↑

RICOH 帳票作成プラグインはkintoneからExcelファイルが出力できるプラグインです。
事前にRICOH kintone plusに帳票ひな型管理アプリを作成し(マニュアル)、Excelファイルをテンプレートとして帳票ひな型管理アプリに登録する必要があります。
kintoneからExcel帳票を出せるプラグインとしては、RepotoneU ExcelやRepotoneU Proがよく知られています(製品サイト)。RepotoneUで帳票の設定方法はkintoneアプリのプラグイン設定画面より、画面上に再現されたセルにkintoneの項目をマッピングしていくやり方です。

一方、RICOH 帳票作成プラグインは事前にテンプレートとなるExcelのセルに疑似関数のような文字列(${フィールドコード})を埋め込んでおきます。
するとRICOH 帳票作成プラグインが出力のタイミングで動的にセルに値を埋め込んでくれる仕様です。
単純なセルのマッピングであれば、このやり方で困ることはそうありません。

が、テーブルを出力しようとした場合、途端に苦しくなります。

kintoneからExcelで出力できるいくつかのプラグインのうち、gusuku Customine(製品サイト)のExcel出力の設定方法も似たようなやり方を採用しています。Excelのセルに疑似関数のような文字列($(フィールドコード))を埋め込んでおくことで任意のフィールドの値を帳票に出力できます。

ただし、gusuku CustomineのExcel出力の場合、テーブルを出力する際にさまざまな関数が用意されています。あまり困りません。$FOREACH~$ENDを使ってもよいですし、SLICE関数を使えば途中の行も切り出すこともできます。$(テーブルのフィールドコード)(行番号)(テーブル内のフィールドコード)で行単位で出力もできます。(CustomineでExcel出力 / PDF出力を試してみよう)(リファレンスマニュアル)

ところが、RICOH 帳票作成プラグインでテーブルを出力する際は、工夫を加えないと途方にくれます。

RICOH 帳票作成プラグインはこの図のようにテーブルの先頭行のセルに${テーブルのフィールドコード.テーブル内のフィールドコード}を入力します。
その際、マニュアルを読む限りでは、一部の行だけを出すことができないようです。つまり、kintoneのテーブル側で行数に上限を設けておかないと、帳票側は最大で5000行が出力されてしまいます。

さらに、別の重要な問題が存在します。
それはRICOH 帳票作成プラグインがテーブルを出力する際、自動的に行を挿入する仕様になっていることです。しかもセル範囲の行だけを自動挿入するのではなく、行全体を自動する仕様になっています。

例を挙げると、kintone側のアプリのテーブルがこのようになっていたとします。



すると、仮に帳票側でV列とW列にテーブルの内容を出力しようとした場合、このようにテンプレートファイルを設定する必要があります。

ところが、これを帳票として該当するアプリから出力すると、このような結果になってしまいます。A列からT列に同じ情報が2行入っていますね。つまり、行ごとコピーしているため、関係のないA列からT列にも同じ情報がコピーされてしまうのです。

しかも、これが左右に別々のテーブルが並ぶとさらにまずい状態になってしまいます。例えば、この状態の複数のテーブルに3行と2行をそれぞれ入力し、テンプレートの左右にそれぞれのテーブルを並べるとします。


すると結果はこうなってしまいます。V列とW列は2倍になってしまいますし、Y列とZ列は2倍になってしまいます。A列からT列は6行コピーされます。つまり、3行×2行で6行がコピーされてしまうのです。
これをどうするか。私がこの問題に気づいたとき、お客様の帳票では左右に別々のテーブルの値を出す必要がありました。相互に掛け合って行数が増えてしまう状態ではとても本番運用に乗せられません。

あと一つの問題は、SUM関数をどうするかです。行数が動的に増えるということは、SUM関数で設定したセル範囲も変わってしまう可能性があります。この問題をどうすれば解消できるか。
また、もう一つ重要な問題があります。それはセルに設定した関数が動作しないことです。
関数をセルに設定した状態のテンプレートを登録し、その登録されたテンプレートを基に該当のアプリで帳票発行を行うと計算がされない。そのような問題が起きたのです。
通常であればExcelのセルに設定した関数を計算する場合、F9キーを押すかShift+F9キーを押せば再計算されるはず。ところが再計算がされません。
再計算させるにはF2キーでセルを編集し、Enterキーを押す必要がありました。でも、お客様に関数が設定されたすべてのセルを一つ一つ選択してもらい、F2キーを押してもらうことなどできるわけがありません。
再計算がされない問題を解消しないと運用に回せません。ここはかなり頭を悩ませました。再計算の問題だけではありません。テーブル行数や関数の範囲が変動する問題、左右に配置したテーブルが相互に掛けあってしまう問題など、実運用までは課題が山積みでした。

4.問題の解決にVBA

  Topへ↑

結論から言うと、VBA(Visual Basic for Applications)を活用し、上記の問題を全て解決しました。

Excelはマクロなしのブック(拡張子がxlsx)とマクロありのブック(拡張子がxlsm)があります。
RICOH kintone plusに作成した帳票ひな型管理アプリにはどちらの拡張子のExcelブックも登録することができます(RepotoneU Excel/Proでも可能です)。

帳票ひな型管理アプリにマクロありのブックを登録します。ユーザーはkintoneの該当アプリからExcel帳票を発行し、発行されると添付ファイルフィールドに添付されます。ユーザーはそこからダウンロードし、Excelブックを開きます。その瞬間にマクロが動作するようなVBAマクロを事前に設定しておくのです。
つまり、帳票ひな型管理アプリに登録する時点でマクロ付きのブックとして登録することです。
そのマクロの中で上記の諸問題が解消するようにしておけばよいのです。

ただし、ここでもう二点、Excelマクロを動作させるために注意しておくべきことがあります。
・ユーザーには必ずダウンロードし、インストール版でかつ最新版(2016以降であれば安心)のExcelで開いていただく。Office 365やMicrosoft 365などのブラウザでは動かさないようにお伝えする。
・kintoneからダウンロードしたExcelブックは信頼できるサイトからのファイルではないため、kintoneを使っているブラウザ上で信頼できるサイトに登録していただく必要があります。
やり方は、インターネットからのマクロは、Office で既定でブロックされますの記事に詳細が載っています。下記画像もご確認ください。あと、すみません、Macでは同様の問題が起こるのかどうかは分かりません。

さて、準備が整いました。
それぞれの問題の解消方法をざっくり記します。

まずは再計算です。ExcelのVBAにはApplication.Calculateという再計算を行うメソッドがあります。ところがVBAの中でApplication.Calculateを実行しても再計算はされません。ということは他の方法を試す必要があります。
解決策として以下のようにFormula2R1C1で再度該当セルに関数を埋め込み、Application.Calculateで再計算させました(上の関数は10列左のセルの〇年〇月〇日をyyyy/mm/ddの形式に変えた上で曜日に切り替えています)。

.Sheets("test").Cells(3, 11).Formula2R1C1 = _
"=SWITCH(WEEKDAY(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RC[-10],""年"",""/""),""月"",""/""),""日"","""")),1,""日"",2,""月"",3,""火"",4,""水"",5,""木"",6,""金"",7,""土"")"
.Sheets("test").Cells(54, 22).Formula2R1C1 = _
"=IF(ISNUMBER(R[1]C[-13]),R[1]C[-13],0)"
Application.Calculate

続いてテーブル行数の問題です。
これはテーブルごとに別シートを用意することで解決しました。別シートごとであれば何千行になろうとも問題は生じません。RICOH 帳票作成プラグインで扱えるテンプレートは複数シートの対応が可能です。複数シートに任意の関数を設定すれば値が設定されます。
テーブルごとに別シートで設定することにより。左右に配置したテーブルが相互に掛けあって不要なコピーが行われる問題も解消できました。
また、セル内に設置する関数のセル範囲が不明な点については関数にする必要がなく、VBAで設定すれば大丈夫です。(挿入されることを見越してセル範囲を多めに設定しておくことで参照範囲の問題は早い時点で解消できていましたが、再計算がされないことには変わりなかったので)
例えばセルの下端行は以下のようにVBAで設定できます。

.Cells(.Cells.Rows.Count, 1).End(xlUp).Row

なお、該当のテンプレートブックに設定するVBAマクロは、

Private Sub Workbook_Open()

を利用しました。ただし、このサブルーチンはテンプレートブックを修正するたびに処理が走り、値が転記されてしまいます。その状態で帳票ひな型管理アプリにセットすると意図しない形になってしまいます。ここはお気を付けてください。

Private Sub Worksheet_Activate()
End Sub

のようにシート単位で処理が走るようにしても良いかもしれません。

5.他の運用上のご注意

  Topへ↑

他にも、RICOH 帳票作成プラグインを活用する上ではいくつかの注意点があります。
上に書いた通り、帳票ひな型管理アプリに設定を追加する際、帳票を出力するアプリも指定します。
その結果、一つのアプリで複数種類の帳票を出す場合には帳票ひな型管理アプリに複数レコードを登録します。
ただし、その結果でもアプリにボタンは一つだけしか表示されません。そのボタンを押下することで複数の帳票を選べるダイアログが出る仕組みです。

ところが、出力された結果が格納される添付ファイルフィールドは一つしか選べない仕様です。
つまり、複数種類の帳票を一つのアプリから出すには帳票発行の運用上の工夫が必要です。そうしないと現場で混乱を招く恐れがあります。

本稿で書いたことは、RICOH 帳票作成プラグインの今後のバージョンアップで改善されていくはずです。RICOH kintone plusもまだまだ改善されていくことでしょう。
本稿で触れた制約をさしおいても、RICOH kintone plusを使うと複合機との連動以外にも複数のプラグインが追加費用無しで最初から使えることは魅力です。から。
ただし、現時点では本項に書いたような運用上の制約次項が発生することだけはご注意ください。特に、RICOH 帳票作成プラグインについてはVBAマクロによるカスタマイズが必須になるはずです。その点を注意してもらえればと思います。

本稿がRICOH 帳票作成プラグインを使う方々にとってご参考になれば幸いです。


事例:株式会社アップルボックス様


Excelで作り込まれた受発注システムの刷新にあたってkintoneを選定

  Topへ↓

株式会社アップルボックス様は、設立以来30数年間、映像機器レンタルを始めとした映像関係の業務に携わっておられます。
メディア業界の進歩とともに映像機器の需要は増大しています。業界の進展と技術の進歩に対応しつつ、さまざまなプロダクションや映像関連企業からのご要望に応えておられます。

CMやPV等の映像制作は、さまざまな関係者の調整が必要になるため現場は多忙を極めます。
見積もりから受注に至った後も、お客様のご要望にあわせてスケジュールの突発的な変更もあります。臨機応変かつ迅速な映像機材の提供が求められます。

アップルボックス様ではそのような業界ならではの事情に合わせ、ご担当者様がExcelで全ての管理を行えるようなツールを作っていました。
そのExcelはブック間、シート間、セル間をまたいだ複雑な処理を制御し、受発注や機材、技術者、在庫管理など、会社の日常業務の大半で欠かせないものでした。実際、かなり作り込まれており、独自のノウハウが組み込まれていました。

ただ、管理すべきデータ量が膨大なため、どうしてもマクロの実行速度が遅くなり、Excelでは動作の安定性に不安があることからツールを開発した入来院様は頭を悩ませておりました。

そのような折、入来院様へ社長の金子様から「キントーンではどうか」とのご提案をいただいたとのこと、サイボウズ社からの紹介で弊社が担当させていただくことになりました。

マスタ整備、機材スケジュール管理および帳票開発が大変

  Topへ↑

kintoneの開設から、運用開始までは約9カ月。
時間がかかったのは、マスタ整備が大変だったからです。アップルボックス様にはマスタ整備の作業でご苦労をおかけしました。

管理されている機材の種類が多いため、機材データの整備にも工夫が必要でした。
kintoneの<文字列一行>項目に重複不可の設定を行うと、文字数が64文字に制限されてしまいます。そのため、機材コードと機材名称を連結してユニークな値を作ろうとすると、機材によっては64文字を超えるケースもあります。
そうならないように機材名称を変更し、データとして扱えるようにしなければなりません。マスタ整備についてだけで何度も打ち合わせを行いました。

また、機材スケジュールを確認し、それを柔軟に修正するためのユーザーインターフェースの調整も苦労した部分です。
一つの撮影現場で使われる機材の数は何十種類にもわたります。さらに複数の案件が並行します。一つの案件でさえ、複数の現場が切り替わります。そうした状況でも機材を確実に現場に届けるため、アップルボックス社のご担当者様は、細心かつ迅速な機材スケジュールの調整を行っています。
kintoneの標準の一覧画面だけでは細かい制御ができません。時系列管理もできません。

そのため、ガントチャートを導入しました。Cybozu Developer Network上のサンプルプラグインであるガントチャートプラグインをベースに弊社がお客様向けにカスタマイズしました。

もっとも苦心した実装は帳票でした。
一つの見積書や請求書に載る明細行の多さや、事後見積書といった映像業界ならではの商慣習。
また、一つの案件の中でも複数の場所、日時が分かれます。それに応じて明細をページごとに分けて発行する必要もありました。

これを可能にする帳票ソフトウエアはそれほどありません。帳票にかなりのカスタマイズが求められたため、帳票Online for kintoneを提案しました。弊社は風神レポートという帳票Onlineの帳票を設計するためのソフトウエアも所持しています。それを用いて細かく帳票をカスタマイズしました。
鏡と明細ページを連結し、さらに明細行の表現もさまざまなパターンが実現できるように制御しました。

帳票については弊社メンバーが頑張って実装してくれました。

Excelから脱却した後は、手配についてさらなる改善を加えつつこれからへ

  Topへ↑

kintoneによる運用を始めたことで、アップルボックス様の受発注や機材手配はExcel運用から脱却しました。
その後も、受発注や商流だけでなく、機材手配のための改善へのご要望に対応しつつ、今に至っています。



今回の成功の理由は、Excelツールを作ったご本人である入来院様が仕様をすべて把握しておられたことにつきます。
ただし、Excelとkintoneではユーザーインターフェースや操作性に大きな違いがあります。入来院様にはkintoneの操作性やインターフェースの違いを何度も説明し、相互の認識を深めていきました。
入来院様がkintoneならではの操作性やデータ構造を理解していくにつれ、構築に当たって仕様の調整が楽になり、実装速度も上がっていったように思います。

入来院様はExcelで複雑なツールを構築するほどデータの扱いに長けていらっしゃました。ということは、データの動きのイメージを一次元、二次元、三次元、四次元のレイヤーで理解していただけるはず。そのイメージをお互いが理解すれば、複雑なExcelツールであってもkintoneに理解できる。

アップルボックス様側の構築が軌道に乗り始めたのも、相互でもっているイメージが把握できたことが大きかったように思います。
そして、kintoneのテーブル活用やアプリ連携など、kintoneの特性や癖を存分に生かしつつ実装ができたのではないかと思います。

代表は初期構造の設計まで手掛け、その後はメンバーが打ち合わせや実装も含め、かなりの部分を担ってくれました。そして、がんばってやり切ってくれました。
その意味でも弊社にとって重要でかつ思い出深い実装でした。

アップルボックス社の皆様、ありがとうございました。

導入してから

着手から導入までの日々をアップルボックス社の入来院様はこう語ってくださいました。

アクアビットの代表様及び若い開発担当者の方々には大変ご苦労をおかけすることとなりましたが、おかげさまで稼働まで漕ぎつくことができ感謝しております。
よりよいシステムにしたく、今後ともお力をお借りすることになろうかと思いますが、何卒よろしくお願いいたします。

アップルボックス様のご紹介

商号 株式会社アップルボックス
本社 〒224-0053 神奈川県横浜市都筑区池辺町4879
代表者 金子 直揮
設立 1989年12月22日
資本金 1000万円
事業内容 映像撮影用照明機材関連業務等
ウェブサイト https://www.applebox.co.jp/

kintone Café JAPAN 2021でミッションに挑みました


11/13に催されたkintone Café JAPAN 2021は、全国のkintoneユーザーや技術者有志が集まるイベントです。有志によって運営されています。
毎回、さまざまな趣向をこらしたイベントが行われ、kintoneを愛する人々の知見と刺激と交流を生んでいます。

今回のJAPANでも複数のセッションが企画されていました。私は冒頭のセッション
Excelインポートミッション!君はこのトラップに気付けるか!?
のミッションに挑戦者として指名されました。技術者代表として。

このミッションの具体的な進行を私が運営者に教えてもらったのは、JAPANイベントが始まる30分前。
指令されたのは、Excelとkintoneを画面共有で皆さんに見せながら、その場でExcelに仕込まれた不正データを見抜き、データを整えた上でkintoneにインポートするミッション。

私にとって幸いだったことは、初っ端が私ではなかったことです。
最初の挑戦者であるキンスキ松井さんに課された10分間のミッション。これはまさにスリルに満ちていました。
頻発するエラーに四苦八苦される松井さんの姿を見ながら、私はミッションの雰囲気を把握することができました。


さて、私の出番です。私に割り当てられた時間は15分。技術者枠なのでさらに難易度はアップしています。
スタートの合図とともに、割り振られたスペース上のアプリとインポート対象のExcelを開きます。
すると、松井さんのミッションにはなかったルックアップやチェックボックスフィールドが加わっていました。さらには、Excel上での住所連結、氏名分割までも。
結局15分ではミッションをクリアできず、二回の延長をお願いして約20分を要してしまいました。
ただ、皆さんにはとても盛り上がってもらえたようです。Twitter上でたくさんの応援や感動したとのお褒めもいただきました。ありがとうございました。


このセッション、出た本人がいうのもなんですが、神企画だったと思います。
観覧されている皆さんにとっては、手に汗を握るスリルがあり、データをインポートする方法の知見がたまります。ミッションで使われるExcelのデータも一見それほど複雑ではないため、kintoneに触れて間もない方でも理解できる配慮がなされています。
さらに、ミッションを課された私にとっても、奔放なExcelデータをkintoneに取り込む経験がたまります。

実際、システム開発を営んでいると、今回のミッションで提供されたようなExcelに遭遇することはしばしばあります。
都道府県の列に見知らぬ県が混ざっていたり、誤字やスペースが混ざっていたりのデータはザラにあります。選択肢にない値や異体字、さらには違う文字コードのデータが混ざっていて文字化けする場合もあります。厄介なことに目には見えない改行コードが混ざっていることもあります。

普通、そうしたデータのインポートには時間をかけて対応します。入念に移行のデータを検証し、準備する時間を確保するのがセオリーです。
そうした移行に関する手続きは、昨年のkintone Advent Calendarで以下の記事としてアップしたのでご参考にしていただければ。
kintoneにシステム移したいんや

ただしこの記事に書いたような、移行の作業にじっくりと専念ができるかどうかは何ともいえません。そうはお客様が許してくれない場合があるからです。
例えばお客様先で利用を始める段になって、システムにバグが出ることもあります。それがプログラムのミスならまだいいのです。kintoneは修正が比較的容易にできるのですから。
問題はデータに不備があったり、アプリの設計と食い違っていたりした場合です。しかも、こちらの移行設計のミスならまだしも、お客様が直前で項目を修正したり、今までに発生していなかったデータがCSVに紛れ込んでいたりするからタチが悪い。
訪問したお客様先のその場で設計変更が必要になり、その場でデータを旧システムからもらい、その場でデータを加工して取り込む状況に追い込まれることだってありえます。

さすがに、お客様先で今回のミッションのように15分の制限時間を課されることはないでしょう。
ですが、技術者としては現場での応急対応が求められることは想定しておかないと。
アウェイの場での孤独な作業。お客様からの無言の期待と圧力を感じつつ、その場でExcelのデータとkintoneアプリの構成を比較して正しいデータに直す。それには臨機応変な対応が必要ですし、さまざまなエラーのパターンを同時に考えながら手を動かすことも必要です。こうした場数を経験しておくと後で技術者のキャリアの上で役に立ちます。
私も何回か、現場で加工したデータを取り込みなおしたことがあります。

こうしたやり方は従来のウォーターフォール型の開発では許されません。アジャイル開発やスクラム開発でもあまり推奨されないはずです。ですが、kintoneは症状の度合いによってこうしたLive感に満ちた開発・修正が可能です。むしろ、そこに真価を発揮します。
今回のミッションは、その経験を思い起こさせてくれました。また、出た当初のkintoneに惹かれた気持ちも思い出させてくれました。
このミッションにチャレンジすることは、kintone技術者としてのスキルを鍛えてくれるはずです。

Twitter上でもこのミッションを自社の研修に使ってみたいというつぶやきを見かけました。弊社でも同様にミッションを課してみようと思います。

司会の「けいん」さん
@soulxoxo

サポートの「よしみ」さん
@yoshiminxkay

一人目の挑戦者の「松井」さん
@kinsukicom

ガヤりの「とうげ」さん
@touge_moved

の皆様、ありがとうございました。あと、観覧者の皆様、声援ともどもありがとうございました。

時間が取れるかどうかはわかりませんが、今回のミッションの中で行った処理については、ゆくゆくは記事にしたいと思います。
なの、ケインさんがnoteでミッションに必要なアプリやExcel一式をダウンロードして使えるようにしてくださっています。

続いてのセッション『それkintoneで作って下さい!駄菓子屋さんの棚卸システムを1時間で仕上げちゃおう!
は、まさにkintoneのファストシステムの良い例です。
ファストシステム。最近ではこの言葉は使われていませんが、kintoneが出た当時はファストシステムと銘打たれていました。迅速に構築のできるシステムであることを訴えて。
今回のセッションでは、要件定義をもとに基本設計とアプリ構築を同時に行いながら、棚卸しシステムのプロトタイプを一時間で作り上げてしまいました。
このセッションは弊社のメンバーにぜひ見てもらいたいと思いました。従来のシステム開発なら、持ち帰って検討して要件定義した後に実装するため、早くても三週間はかかっていたでしょう。それが一時間でできてしまうkintoneの性能と機能をフルに活用した良い例です。

続いてのセッション『教えて!みんながkintoneから学んだこと』も良かったです。
先日のcybozu daysでは、kintone SIGNPOSTが正式にお披露目されました。現場の課題をどのようにシステム要件にし、それをシステムとして組み上げるか。その際はシステム開発に留まらず、コンセプトや社内のビジネスフローの再構築にまで話を広げる必要があります。その中では体制やコンセプトの整理も求められるでしょう。
現場の声としてあがった本セッションの内容は、kintone SIGNPOSTの生きた事例として参考になりました。

続いてのセッション『チャレンジ!きんとん関数ドリル』は、
ここ二年間でkintoneに追加された機能として特筆される関数を取り上げていました。このセッションではkintoneの関数の奥深さを味わうことができました。
私は出題された10問のうち6問しか合わず、関数についての理解の浅さを露見させてしまいました。
なんでもJavaScriptで解決してしまおうとする考えから切り替えていかなければ。
それにしても、松田さんによる関数の分析はお見事としか言いようがありません。ここまで理解してこそkintoneエバンジェリスト。私も精進しなければ。

この後もkintone SIGNPOSTの紹介や懇親会などがありました。が、実家にいた私は両親と食事に出かけたため、この後の懇親会には参加していません。さぞや盛り上がったことでしょう。

また来年も開催されると思うので、楽しみにしたいと思います。

重ねて皆様、ありがとうございました。

当日のTwitterまとめはこちらです。


kintoneにシステム移したいんや


kintone Advent Calendar 2020の22日目の記事です。

  Topへ↓

おかげさまで今年はkintoneの案件が大幅に増え、ありがたい限りです。引き続き、頑張っていきまっせ^+++^

さて、案件が増えたのはめっちゃうれしいんやけど、今年は今までと比べ、案件の傾向に少し変化がありましてん。その傾向っちゅうのは旧システムからkintoneへ移行する案件の増加ですねん。
もちろん、昨年までも移行案件は請けてました。でも、今年はC/S(Cliend/Server)型の旧システムからkintoneへの移行案件をぎょうさんご依頼いただきまして。その数はめっちゃ増えましたわ。

おそらく今後もこうした移行案件は増えていくと思てますねん。そやさかい今年のkintone Advent Calendarは7回目の参加にして、初めて連携開発ではなく、移行について書いてみようと思とります。
これからkintoneへのシステム移行を手掛ける方の参考になればうれしいねん。

システム移行の建前と本音

  Topへ↑

システムを移行する目的はお客様によって千差万別です。
でも、システムを移行すると決断するのは経営層、少なくとも部署の責任者でっしゃろ?

この時、経営層と現場でシステムを扱う方の見る視点は違います。
経営層は人件費の削減や処理効率の改善に重きを置きます。一方で現場の視点は日々の業務の負担を軽減することと、業務を止めないことに向きがちです。

その時、建前上では業務改善を同時に行いながらシステム導入も行う、という意見が出ます。そりゃせやんなぁ。わてら提案側にとっても業務改善を錦の御旗に立てたほうが提案は通りやすいっちゅうもんで。

そやけど、往々にして現場の本音とは従来の業務フローを変えずに、なおかつ業務負担が軽くなることにあると思とります。業務改善によってオペレーションが大きく変わるのはいややなあ。新たなやり方になれるまでが大変やわ。てなわけで抵抗を覚えがちです。

わてがこの時に心がけとるんは、営業の相手である経営層や上層部とのお話がまとまったら、なるべく早いうちに現場の業務担当に挨拶し、現場の方とのコミュニケーションを増やし、現場の本音を伺いながら開発することですねん。
この時の建前と本音と取り違えると、あとあとまでボタンの掛け違いがえらいこっちゃになります。
また、営業目線でお客様の上層部とだけ話をしていると、現場のニーズが後から後から噴出してがっちゃがちゃになります。わては何度もこれでえらい目に遭っとります。

構築の順番

  Topへ↑

現場の方にとっては、慣れ親しんだ旧システムからkintoneという未知のシステムに触れるわけです。不安になって当然やんなぁ。
そやからわてはkintoneの良さ、つまり現場の方々が簡単にシステムが触れまっせ、簡単に設定ができまっせ、ということを早めにご説明します。

このあたりは旧来のシステム開発のセオリーとは違いますわな。要件定義、内部/外部設計、コーディング、単体テスト、結合テストが終わったあたりでようやくマニュアルが用意され、ユーザー受け入れテストで現場の方が触る。それが旧来のシステム開発。

わてはkintoneの場合はより早いうちに現場の方に触ってもらうことを重視します。フィールドコードは触らんといて、プラグインやJavaScriptはいじらんといて、という点だけお願いし、あとは積極的に使ってもらいます
その結果、kintoneってうちらでも触れるんや、現場でもシステム開発に参加してええんや、という実感を持ってもらえればもうしめたもんですわ。
この場合の現場というのは現場の統括者ではなく、文字通り日次の業務で手を動かしている方全員のことやからね。

これで現場の方からkintoneへの警戒感や拒否感が取り除けて、システム開発へ参加しているという実感を持ってもろたら、kintoneのファンにだってなってもらえます。そうなればシステム導入の成功は約束されたも同然ですねん。

その時、最後になるまでシステムを見せへん、という手法は逆効果。
まず移行が順調にできていることを示すためにも、一番やりやすいマスタ系からアプリを作っていくとよろしおま。
マスタは業務の基本であり、なおかつマスタアプリ自体には複雑なロジックはそれほど必要ないよって、導入側にとっても取り掛かりやすいはずですわ。
あと、早めにお客様にシステムに関わってもらうことによって、kintoneが苦手な部分をわかってもらうのも重要!なんでかいうたら、システム導入間近になっての仕様変更で断れるからやねん。

また、フィールドの追加や編集も自在にできるkintoneの特性がお客様に喜ばれるのもこの時。もちろん、ビジネスロジックに関わりの少ないフィールドを除いてやで。
例えば分析用に得意先種別を増やしたいねん、というご要望にもさくっと対応できるkintone。このかっこええ姿をアピールするだけで、好感度アップは間違いなしや。

また、ここで現場の方に新旧両方のシステムにマスタの入力を行ってもらえれば、次に述べるデータ移行の手間が大幅に減ります。ほんまやで。

データ移行の基本

  Topへ↑

kintoneへのシステム移行でいっちゃん肝心なんは、おそらくこの部分だと思とります。
kintoneはご存じの通り、簡単にアプリが構築できますやろ。そやから、元のシステムのデータの項目を再現するのはそれほど難しくない。そないに思うかたもおるんとちゃいますか?
ところが、ここを甘く見とったら後で苦労しますねん。

とくに、もともとのシステムの仕様で、マスタ上で管理する項目が制限されとったら要注意です。
入れたい情報を入れるべき項目がない。その場合、おうおうにしてお客様は備考欄にあれこれ詰め込みますねん。苦肉の策で本来ならメールアドレスやURLを入れるべき欄にまで雑多な情報を入れてしまいます。
kintoneでは簡単にフィールドを追加できまっしゃろ?でも、おうおうにして旧システムでは項目を追加するのに別途費用がかかります。だから、そないな状態になってしまうんですわ。
こうした雑多な情報がどこで管理されとるんか。その情報をkinotneのどの項目に移すんか。きちんと体系化されたデータとして活用したいんやったら、お客様ときちんと押さえとかなあきません。

次に、マスタをルックアップで呼び出す際の仕様は早めに定めとかなあきまへんで。御存じの通り、ルックアップでは関連付けるアプリを設定しますよって。
そしたら、コピー元のフィールドも設定せんならん。ルックアップフィールドではフィールドに文字を入力することで、候補を事前に絞り込むことができます。ただしコピー元のフィールドに設定した値に限りますけどな。

例えば得意先マスタの得意先コードを指定しておくと、マスタの得意先コードで検索が可能です。ですが、一度ルックアップフィールドをこさえた後にお客様から得意先名でも検索したい、と言われたらもうバンザイせなあきません。なんでかちゅうたら、コピー元のフィールドは一度設定すると変更でけへんよって。
もしどうしても変更の必要が生じたら、新たにルックアップフィールドを追加せんならんのです。もちろん古いルックアップのデータから新しいルックアップにデータを移さなあかん。そんなんいけずやんかぁ。

また、検索したい対象は得意先名だけに限りません。よくいわれるのは着信時の電話番号の末尾四桁ですわ。それ以外にもフリガナやらなんやら。つまり複数の項目で検索したいというご要望が出てきますねん。
この時は、わては検索キーっちゅう項目を設け、複数の項目の値を連結させとります。
この時はスペースなしでがっちゃんこしてまうとうまく検索がでけへんようになるから、半角スペースなどを間に挟んで連結するとよろしい。

さらに、その時は文字数にも気ぃ付けましょう。コピー元のフィールドに指定できるのは文字列(1行)です。
こちらのヘルプにも書かれとるけど、文字列(1行)の文字数に制限はあらへん。
ところが、今のページにはこうも書かれとったよね。
値の重複の禁止を設定すると、入力できる文字数が全角または半角で64文字までに制限されます、てな感じ。なんでやねん。

では、値の重複の禁止を設定せんかったらええんちゃうん?そう思いたなるやん?え?ならへん? いや、なってぇや。
なぜなら、ヘルプには以下のように書かとるからやねん。
既存のレコードを更新する場合、CSVファイルを読み込んで一括更新する方法が便利やと思うですわ。
けど、ヘルプにはこうも書かれとるねん。

こないな制限があったら、もうあかん。更新がでけへんのですわ。
APIで更新する場合も同じですわ。
ここのリファレンスにも。
システムの移行には、データの更新が欠かせませんわな。CSVで更新する場合も、APIで更新する場合も。
ルックアップ項目を更新するためには、値の重複の禁止せなあきません。ちゅうことは、連結した文字列の文字数が64文字を越えんようにせんならんのです。つまり、移行元のシステムの項目の文字数を考慮にいれなあかんちゅうわけですわ。難儀やなぁ。

もう一つ、移行にあたって注意しておかなあかんことがあります。
それは住所データの扱いです。日本の住所の場合、以下の4つの項目からなっとります。

  • 都道府県
  • 郡市町村
  • 住所(町・字・地番)
  • 建物・マンション名

これが旧システムでも四つに分かれとったら問題ないんよ。
そやけど、住所1、住所2という感じで二つだけのフィールドでしか管理されていない場合、えらいこっちゃになります。

なんでかゆうたら、それを分割する作業が発生するからですわ。分割?そんなんせんでええわ。てゆわれたかて、後々の分析のこと考えたらそうもゆわれへん。正味、お客様に後々の分析のことを考えてと提案してみたら、kintoneでは分割して管理するお客様が多いんですわ。
例えば旧システムの住所1に「東京都中央区日本橋2−7−1」。住所2に「東京日本橋タワー」の値が入っていたとしますやろ。そしたら、住所1から「東京都」「中央区」「日本橋2-7-1」を分割せんならんことになります。さて、ぼんやったらどないする?

わてはそんなとき、VBA(Excelマクロ)を活用しますねん。
その中でこちらのサイトを参考に正規表現から分割しますねん。
この正規表現をVBAの中に仕込んだら、都道府県と郡市町村と住所(町・字・地番)を分割できるんよ。
以下に簡単やけどコードを掲示してみたから、よかったらみてみて。必ず本番では使う前にテストしたってぇやぁ。もちろん当方では一切の責任は負われへんから。

Sub ConvertSplitAddressData()
    Dim regExp              As Object           '正規表現オブジェクト
    Dim strPattern          As String           '正規表現パターン
    Dim lngRowCounter       As Long             '行カウンター
    Dim intRegMatchCount    As Object           '結果
    Const clngMaxRowCount   As Long = 65535     '行の末尾
    Const cintTargetColumn  As Integer = 18     '結合された住所列番号
    Const cintPrefColumn    As Integer = 14     '結果の都道府県を格納する列番号
    Const cintCityColumn    As Integer = 15     '結果の郡市町村を格納する列番号
    Const cintAddressColumn As Integer = 16     '結果の住所を格納する列番号
    Const cintAnotherColumn As Integer = 17     '結果の建物を格納する列番号

    Set regExp = CreateObject("VBScript.RegExp")
    strPattern = "(...??[都道府県])((?:旭川|伊達|石狩|盛岡|奥州|田村|南相馬|那須塩原|東村山|武蔵村山|羽村|十日町|上越|富山|野々市|大町|蒲郡|四日市|姫路|大和郡山|廿日市|下松|岩国|田川|大村)市|.+?郡(?:玉村|大町|.+?)[町村]|.+?市.+?区|.+?[市区町村])(.+)"
    With regExp
        .Pattern = strPattern
        .IgnoreCase = True
        .Global = True
        For lngRowCounter = 2 To clngMaxRowCount
            If ActiveSheet.Cells(lngRowCounter, cintAddressColumn).Value = "" Then
                Set intRegMatchCount = .Execute(ActiveSheet.Cells(lngRowCounter, cintTargetColumn))
                If intRegMatchCount.Count > 0 Then
                    ActiveSheet.Cells(lngRowCounter, cintPrefColumn).Value = Trim(intRegMatchCount(0).SubMatches(0))
                    ActiveSheet.Cells(lngRowCounter, cintCityColumn).Value = Trim(intRegMatchCount(0).SubMatches(1))
                    If InStr(intRegMatchCount(0).SubMatches(2), " ") > 0 Then                '建物以降が全角空白で分割されている場合
                        ActiveSheet.Cells(lngRowCounter, cintAddressColumn).Value = Trim(Mid(intRegMatchCount(0).SubMatches(2), 1, InStr(intRegMatchCount(0).SubMatches(2), " ")))
                        ActiveSheet.Cells(lngRowCounter, cintAnotherColumn).Value = Trim(Mid(intRegMatchCount(0).SubMatches(2), InStr(intRegMatchCount(0).SubMatches(2), " ") + 1, 100))
                    ElseIf InStr(intRegMatchCount(0).SubMatches(2), " ") > 0 Then             '建物以降が半角空白で分割されている場合
                        ActiveSheet.Cells(lngRowCounter, cintAddressColumn).Value = Trim(Mid(intRegMatchCount(0).SubMatches(2), 1, InStr(intRegMatchCount(0).SubMatches(2), " ")))
                        ActiveSheet.Cells(lngRowCounter, cintAnotherColumn).Value = Trim(Mid(intRegMatchCount(0).SubMatches(2), InStr(intRegMatchCount(0).SubMatches(2), " ") + 1, 100))
                    Else                                                                      '建物がないか続けて入力されている場合
                        ActiveSheet.Cells(lngRowCounter, cintAddressColumn).Value = Trim(intRegMatchCount(0).SubMatches(2))
                    End If
                End If
            End If
        Next lngRowCounter
    End With
    Set intRegMatchCount = Nothing
    Set regExp = Nothing
End Sub

データ移行の方法

  Topへ↑

kintoneにデータを取り込む方法はいくつかあります。そやけど、だいたいはCSVによる一括登録・更新か、APIでの登録/更新かcli-kintoneの三択ちゃうやろか。
わてはCSV経由で取り込むことがほとんどですわ。
なんでかいうたら、APIやとHTTP Client Tool for kintoneを使う場合でも、何かのプログラムで書く場合でも、コードのマッピングの記述が面倒になるからやねん。
あと、一リクエストでも100件しか登録や更新ができないAPIの仕様制限があるやんか。そやから、100万件をこえるデータを移行する場合、一日のAPIリクエスト回数制限にも引っかかってしまうんや。
cli-kintoneは便利やねんけど、上と同じくマッピングの部分が手間なのであまり使用しとりません。ただ、余談すると、Bashとcli-kintoneを使った効率化は追及せなあかんと思とります。そやから弊社としてはcli-kintoneを使ったツールの作成ははよ進めよ思てます。
ただ、それでも画面上でマッピングを確認できるcsv取込の方が安全ちゃうかと思います。ここはよぉ考えてみてください。その時、旧システムが出すcsvの見出し項目名とkintoneのフィールドラベルは合わせといたほうが移行マッピングが圧倒的に楽になるで。

先に挙げた住所や備考以外にも、データの加工はあちこちのフィールドで発生しますやろ。それらはめっちゃ面倒やと思うねん。それらをチェックとか加工とかせなあかんから。例えば下のような感じやね。

  • 項目の値の中に半角カンマは入っていないか。
  • 項目の値の中にダブルクォーテーションなどは入っていないか。
  • 項目の値の前後に空白は入っていないか。
  • 旧システムから出力されたファイルの文字コードは統一されているか。(複数のシステムからそれぞれ出力して取り込む場合、Shift-JISとUTF-8が混在しているとkintone側で文字化けの恐れあり)
  • ルックアップの値はkintoneの関連付けるアプリの参照アプリのコピー元のフィールドに等しいか。
  • 電話番号や郵便番号、メールアドレスやURLの書式は正しいか。
  • 日付書式は正しいか。(元データがyyyymmdd形式の場合、空白セルがあると空白に変換してくれずエラーになる等)
  • データの重複はないか。
  • kintoneのラジオボタン/チェックボックス/複数選択/ドロップダウンの選択肢に等しい値のみが含まれているか。

もしでけるんやったら、VBAマクロやcli-kintoneなんかでツールを作ったほうがええと思うで。
あと、ツールの作成と簡単に書いとるけど、旧システムによって項目がまちまちなんは、わかりますやろ?旧システムごとに工数と時間を使うから、わては移行ツールの作成には消極的で、あまりやってへんかったわ。

そやけど、毎度Excelの関数を駆使して移行データを作るんはもうしんどい。わても実は今年手掛けた数々の移行の中で、一つだけめっちゃ苦労した移行がありましてん。それをしおに、めんどいかもしれんけど、移行ツールを作ったほうがええなぁと痛感しましたわ。

ただし、早めにマスタの項目を固め、マスタアプリを作り、初回のデータ移行がでけたところで、それ以降は本番までお客様にマスタデータの入力をしてくれまへんやろか?とお願いしたほうがよろし。もしそれがでけたらマスタの移行ツールはいらんからね。
ま、それでもトランザクションデータの移行に関しては何かしら作らんといかんけどね。

なんでかいうたら、マスタのデータは生き物やねん。お客様によってガーっと追加され、あちこちでバァーっと更新されますやろ。
しかも住所の更新が起こるし、しかも項目が連結されている住所データやったら、さっき書いたみたいに分割の作業が毎度いるんでっせ?
それに、本番移行直前でせーので一回でガバっと取り込めば済むほどシステム移行は甘いわけやあらへん。

もちろん、どっかの時点で初回分を取り込み、定期的に差分データを取り込み、最後に移行日までの残り差分がきれいに取り込めた場合は楽ですわ。そやけど、そうした移行の運用ができるのは、こっち側が旧システムにアクセスできる場合だけやねん。

遠方のお客様で、しかもVPNでつながれへんような旧システムの場合、データの取り出しはお客様にご依頼するほかありませんやろ。
お客様のやり方によっては項目に抜け漏れがあるやろし、項目の順番が違っていたりします。ましてや差分データの時間の基準もあいまいになってしまいますねん。そやから、きれいなデータを毎度もらえないと考えなあきません。
そやから、移行ツールを作らんでええ場合は、旧システムにこちらから簡単にアクセスできる場合に限ったほうがええね。もしそないにアクセス出来るんやったら、毎回Excelのフィルターや並び替えや置換などを駆使しても円滑に移行できると思うけどね。
ただ、実際はそうでない場合が多いから、そないなリスクを考えたら、最初に工数と時間をかけてでもお客様専用の移行ツールを作り、それを運用したほうが格段に楽やと思うんやけどどない?

データ移行のTIPS

  Topへ↑

なんぼかTIPSを列挙しておきますわ。

  • データの本番移行までは、取り込み時には変更履歴はオフにしといたほうがええで。
    設定は、アプリの設定→高度な設定→変更履歴のチェックを外す。
    そうしないとサイボウズさんに注意されまっさかい。また、変更履歴だけで契約のディスク使用量を軽く超過してしまいますねん。(一度、うっかりしていて100万件のデータを何度も取り込みなおし、サイボウズさんに注意されてもうた。※EvaCamp 2020で言いそびれた失敗談の一つ)
  • 可能であれば、本番移行後は旧システムのトランザクションデータ(売上や仕入などの伝票データ)は、kintoneでも別アプリにした方がええで。
    しかも、旧システムのトランザクションデータのフィールドはルックアップをなくし、文字列(1行)と数値のみにしといたほうが楽やで。なんでかいうたら、過去分のデータはマスタデータの変更などで古い値として入っとるからやねん。過去のルックアップはその時のマスタデータの値を再現して保存しといて、てな具合にご要望もろたら、移行作業はめっちゃごっつい苦行になってまう。さっきも書いたけど、ルックアップのコピー元のフィールドはマスタにある値やなかったらエラーになるからね。そやから、ここは初めのころに決めておいた方がええかも。
    旧システムの部分については別アプリに分け、ルックアップを外してしまえば、旧システムの生データをそのまま取り込むだけ済むさかい、ごっつい楽ですわ。
    そやけど、一つだけ注意しとかな。アプリを分けた場合、新旧両方のアプリをまたいだ分析に対応できませんやろ。その場合は、自分でカスタマイズビューを作成するか、トヨクモさんのDataCollectのようなプラグインを活用するとよろし。便利でっせー。
  • 添付ファイルの移行が必要な場合は先にも挙げたcli-kintoneを使うとええで。また、要件定義の段階でDropboxやboxなどのオンラインストレージの移行を提案しとったら、kintoneではそちらのストレージとの連携を行えばええから、あんじょういきまっせ。
    オンラインストレージへのデータ移行と整理作業は、お客様にお願いしといたほうがええやろし。
    2019年のわてのAdvent Calendarもご参考にしたってやー。
  • C/S側の旧システムは、たいがいレイアウトが小さくまとまっとるやろ。それに比べるとkintoneのフラットデザインは、項目の間の余白もがっつりとられとるし、そこは一目で情報が見られる旧システムに劣ると思われるかもしれへん。
    無理やりJavaScriptでレイアウトを調整したったりもしたけど、それはあんまり本筋のやり方ちゃうしなぁ。
    これも早い段階で現場の担当者と話を詰めといたほうがええで。
    あ、もう一個。デザインについてはkintoneのアプリの設定→デザインテーマの設定でブラックを選ぶとお客様の印象が変わるかもしれんで。一度試すとよろしおま。
  • Excel上でデータの加工を行う時、何使てます?フィルタ? もしそやったら、スライサーの機能とか試すと幸せになれるで。
    スライサーはこの記事が参考になるんちゃうかな。
  • kintoneの難儀な仕様ってあるやんか。例えば英単語の一部分の文字だけで検索でけへんとか。
    ヘルプにもこない書かれとるし。
    もしそれやったら、Excelのフィルタ使たらええねん。まあJavaScriptで
    一文字検索の機能を作ってもええし、プラグインでもええのんあるけどね。
  • C/S側の旧システムのユニークの項目は早めにお客様と共通認識をもっといたほうがええ。さっきも書いたけど、お客様からデータをもらう際は、旧システムのデータ出力方法を把握して、その設定や出力操作は完全に共通認識をもっといたほうがええ。あと、これも上で書いたけど、旧システムのデータを先に修正できるのならお客様に頼んで修正しといたほうがええ。

まとめ

Topへ↑

ちゅうわけで、本記事は皆様のkintoneへの移行のお役に、そしてご参考になればよろし思ぅて書きました。もちろん、これは弊社にとっても参考にすべき自社のノウハウですわ。
弊社も今年は一件、移行で苦労した案件がありましてん。だからこそ、一度ノウハウを言語化すべきやなぁと思ったんよ。それがきっかけです。
また、弊社の新規の案件の際にもお客様にも読んでもらお思ぅて、ここで知見を共有したいと思います。
なので、今後も折をみてアップデートを重ねていこうと思います。よろしゅうお願いいたします
また、こんなTipsや失敗談などありましたら、ガァーっとご意見をお寄せください。また本稿の内容に不備があった場合も遠慮せんとご指摘ください。

本稿が旧システムからkintoneへの移行をお考えの皆様にとってちょっとでも手助けになったら幸せやわ。


アクアビット航海記 vol.25〜航海記 その12


あらためまして、合同会社アクアビットの長井です。
弊社の起業までの航海記を書いていきます。以下の文は2018/1/11にアップした当時の文章が喪われたので、一部を修正しています。

横浜ビジネスパークでの日々が始まる


私の記憶では、スカパーのカスタマーセンターに初めて出勤したのは1999年の5月連休明けからだったと思います。
当時、スカパーのカスタマーセンターは横浜の天王町にありました。横浜ビジネスパーク(YBP)という場所です。マリオ・ベリーニという建築家が手掛けたおしゃれで憩える池があり、よくプロモーションビデオにも登場しています。私も一度ロケの現場に遭遇したことがありますし、今思い出してもとても素晴らしい職場の環境だったと思います。

ところが私の記憶には、YBPの洗練された環境があまり焼き付いていません。
それは、仕事が激務だったからではありません。それよりも、東京に出て仕事をすることへの高揚感と緊張感に胸をふさがれていたからだと思っています。
当初は一人暮らしの気楽さと孤独を満喫していた私にも、いざ就職となるとやるべき雑務は重なっていきます。
さらに仕事上で覚えるべきことがあまりにも多かった。つまり余裕がなかったのです。

スカパーのカスタマーセンター。そこはスカパーの加入者様との窓口全般を行う場でした。
私が配属されたのは種々の申込書の新規登録を行う「登録チーム」でした。当時はまだ郵送経由による申込書がほとんどで、その申込書を何人ものオペレーターさんが一斉に端末に入力していました。
私はそのオペレーターさんを統括するスーパーバイザー(SV)として採用されたのです。SVという仕事が具体的に何をするかといえば、オペレーターさんが入力するにあたり、申込書に記載してある内容が不明瞭で判断に迷った場合に適切に指示することです。あと、作業の割り振りやペース配分、作業の指示なども臨機応変に行います。
カスタマーセンターにあるのは、登録チームだけではありません。
例えば届いた郵送物を仕分ける「受付チーム」もあれば、実際に申込書の内容が正しくない場合にお客様に不備として指摘する「不備チーム」もあります。他にも契約内容の変更を受け付ける「変更チーム」もありました。お客様の利用料金を管理する「料金チーム」も。それと実際の外部配送業者とやりとりする「物流チーム」も忘れてはいけません。そして、最後にそれらのチームをまとめる「運用サポートチーム」がありました。
スーパーバイザーの仕事には、そうしたチームとの連携も求められたのです。

もちろんカスタマーセンターの機能はそれだけではありません。
たとえば加入者様からの電話を受けつけるコールセンターの機能が要りますよね。他にも機器の設置に関するトラブルを管轄する部署や、電気屋さんなどスカパー契約を取り次いでくださる加盟店との連携を行う部署だって必要です。
要するにカスタマーセンターに求められるあらゆる機能が集まっていたのが私の職場でした。
あまりにも業務が多岐にわたるため、それを請け負う派遣会社も3,4社に分かれるほど。私が派遣登録したパソナソフトバンクという会社はその中の一社でした。
名前の通り、その会社は人材派遣大手のパソナと孫さんのソフトバンクが資本を大きく分け合っていました。
そして、パソナソフトバンクがスカパーのカスタマーセンターで請け負っていたのが「受付」「登録」「不備」「変更」「物流」「運用サポート」の各業務だったのです。

そんな大規模な現場で、SVとして覚えるべきことは多く、新たな環境をゆっくり楽しむ暇もありません。
そして、私がようやく仕事に慣れた頃にはYBPの景色自体を見飽きていました。そんな理由でせっかくの素晴らしい環境も、今に至るまで私の記憶に残っていません。今でも数年に一度はYBPの近くに行きますが、今度、近くを通った際はじっくりと訪れてみようとおもいます。

楽しかった日々


さて、事務仕事の要所を知り尽くしていた訳でもなければ、衛星放送の仕組みや業界も知らない私。当然ながら新規登録にあたっての入力ルールも現場に入ってから覚えていきました。だから、当初はとても危なっかしいSVだったことでしょう。入って2カ月は同僚の女性SVのSさんによく怒鳴られましたし。

その他にも、私が職場に溶け込むにあたっての苦労はいろいろとあったはず。それでも私はこの仕事をやめずに続けました。辞めるどころか、登録チームでの日々にはとても楽しかった思い出だけが残っているのです。

当時この文章を書いた私は既に四十を過ぎていました。今も四十台半ばを過ぎ、イタく絶賛老化中です。
なので、自分でこんな事を書くのは面映ゆいし、若い頃の武勇伝を語るイタいオヤジのようで避けたい。避けたいのですが書きます。なぜスーパーバイザーの仕事が楽しかったのかを。
それは、登録チームでの私はこれまでの生涯でもモテ期のピークだった、ということです。

登録チームのオペレーターさんはシフト制でした。毎日40人くらいのオペレーターさんが作業に従事していて、そのうち7割は女性だったように思います。オペレーターさんの中には主婦もいましたし、大学生や短大生の女の子もたくさん在籍していました。
見知らぬ土地に飛び込み、見知らぬ方ばかりの中で仕事をこなし、関西弁で指示を飛ばす。そんな私の姿は、オペレーターさんたちにも新鮮だったようです。
当時の私は25、6才の若手SV。しかも既に婚約していたため薬指には指輪をはめています。そのため、女性からも気軽に声を掛けやすかったのでしょう。
オペレーターさんとはよく飲みに行きました。ほとんどは男性オペレーターさんとばかりでしたが、中には女性オペレーターの飲み会に私だけ一人男、ということもありました。
でも、過ちは起こしませんでした。ここで調子に乗っていたら、今の私はないはずです。
私の人生は失敗の方が多いのですが、それらの失敗が人生を台無しにしなかったのは、この時のような肝心な時に分相応をわきまえてきたためだと思っています。
どれだけ羽目を外しても、期待を裏切っても、信頼を裏切らない時点で踏みとどまること。これはとても大切なことだと思います。
“起業”しても人は傷つけませんが、浮気は人を傷つけます

念のためにいうと、こんなことを書いている私は聖人君子からは程遠い人物です。
この頃の私は若さゆえ、しょっちゅう羽目を外していました。
たとえばオペレーターの皆さんとはよく横浜西口で飲んでましたが、その界隈では何度も人事不省に陥りました。
オペレーターさんたちの前でSVらしからぬ醜態をさらすことなどしょっちゅう。植え込みへとダイブしたり、あれやこれや。

なにせ失うものは何もない独り暮らし。しがらみもなければ体裁を取り繕う必要もない日々だったので。それもこれも含めて登録チームでの半年はとても幸せな日々でした。今も懐かしく思い出します。

Excelで名乗りを上げる


そんな登録チームでの日々の仕事で、私は技術者となるための最初の足がかりをつかみます。それは集計の作業がきっかけでした。
SVの仕事の一つにチームの状況を把握し報告する作業がありました。件数の集計は状況の把握に欠かせません。例えばその日登録された申込書は何枚あり、それがどの種類の申し込みかを数えて集計する作業です。
具体的には、各SVが手分けしてその日に作業した申込書の枚数を数え、それをエクセルのシートに入力する。そして入力した内容を印刷し、翌朝までに運用サポートチームの集計担当に提出する。
これらの作業は絶対に必要で、しかも面倒でした。

エクセルに誤った数字を入れては運用サポートチームの集計担当に怒られる。そんな事が続いたある日、私は登録チームのSVのミーティングの場か何かで提案しました。もしくは直接シニアSVのMさんに提案したか。
きっかけはどちらだったかは忘れましたが、私がした提案とはエクセルへの入力の仕組みを省力化してはどうかというものでした。その仕組みは私が作るから、と。

その仕組みとは、今から思うとたわいのないものでした。月の各日ごとに行が連なる横罫の表。例えば1月の集計表ならば、見だしに1行、各日ごとに31行、そして合計行に1行といった感じです。どこにでもある月単位の集計表です。
その表へ直接入力していた作業が間違いのもとだったので、私が施したのは表に直接入力するのではなく入力用のシートを別に作ることでした。
SVは業務後に入力シートにそれぞれごとの件数を入れ、ボタンを押します。そのボタンにはマクロを仕込まれていて、マクロが横罫の表に正確な値を放り込んでくれます。

この仕組みこそ、私が芦屋市役所の人事課で覚えたマクロを思い出しながら作ったものです。
芦屋市役所を1997年に離れてから約1年半以上。その間、私はマクロを全く触っていませんでした。以前にも書いた通り、その頃の私はプログラミングに全く興味がなかったからです。
ところがかつてSEの方から盗んだ技術を思い出しながら造った集計表が、登録チームの業後の作業時間と手間を短縮し、ミスも劇的に減ったのです。
そして、この実績が私に道を開きます。その道は統括部門である運用サポートチームに続いていました

次回は、運用サポートチームに行ってからの私と、結婚について少しだけ触れたいと思います。ゆるく永くお願いします。


七日間ブックカバーチャレンジ-かんたんプログラミング Excel VBA 基礎編


【7日間ブックカバーチャレンジ】

Day5 「かんたんプログラミング Excel VBA 基礎編」

Day5として取り上げるのはこちらの本です。

私は、もう20年ほど技術者としてお仕事をしています。
開発センターでシステムの開発やテストに従事していた時期も長いです。銀行の本店でも数年間、常駐していました。
ここ数年は、5年近くkintoneのエバンジェリストとして任命をいただいております。
個人事業の主として9年、法人を設立してからは6期目に入りました。
その間、システム・エンジニアを名乗って仕事を得、妻子を養ってきました。

そんな私ですが、システムは誰からも教わっていません。
全て独学です。
高校は普通科でしたから、パソコンはありません。大学は商学部で、パソコンルームはあった気がしますが、私は無関心でした。一度だけ5インチのフロッピーディスクに一太郎で作った文章を保存する課外授業をうけたぐらい。
大学の一回生の頃に、ダブルスクールに通っていましたが、そこで学んだ事で今に活かせているのはブラインドタッチ。Basicの初歩も学んだ記憶はありますがほとんど覚えていません。
大学を出た後、一年近く芦屋市役所でアルバイトをしていた頃、出入りしていた大手IT企業のSEの方から盗み取ったマクロからここまでやってきました。

そして私は新卒で採用された経験も、真っ当な転職活動の経験もありません。ですから、企業で研修を受けた経験もほとんどないのです。

システム・エンジニアとして働く常住現場で、悠長にプログラミングを教えてくれる人などいません。誰もが忙しくコーディングや設計に追われている中、そんな間抜けな質問をしたら退場させられてしまいます。

そんな私がどうやってプログラムを学んだのか。
本書のような入門書からです。

私の場合、キャリアの初期に開発現場ではなく、オペレーションセンターで働き、某企業でシステムの全権を任してもらえるという幸運もありました。

試行錯誤しながらExcelの複雑なワークブックやシートやセルを操り、毎朝のタイトなスケジュールを縫って資料を作る。
Excelのマクロを駆使しなければ、とてもやり遂げられなかったでしょう。

本書は基礎編ですが、応用編とコントロール編も含めて何度も当時読み返したものです。私にとってプログラミングを学ぶ上でこのシリーズには大変お世話になりました。

特に、行列の二次元だけでしかExcelを理解していなかった私を、本書は三次元、四次元といった高次のレベルに引き上げてくれました。スカパーのカスタマーセンターで当時の部下だった元SEの女性にもヒントもらったのが懐かしい。
あれこそまさにブレークスルーの瞬間でした。

かつて、システムを扱うにはプログラミングやデータベース、ネットワークの知識が必須でした。
ですが、昨今のシステムにはそうした知識が不要になりつつあります。クラウドシステムやノンコードプログラミングの普及によって。
そして、ビジネスの現場で働く人にこそ、プログラミングの初歩的な理解が必要になる。そんな時代はすでに始まっています。

Excelマクロは、処理を自動的にマクロとして記述する仕組みがあります。それと本書を組み合わせると、システムの初歩の概念を学んでいただけるのではないでしょうか。
本書はプログラミングに不得手なビジネス現場のオペレーターの皆様にこそ読んでほしいと思います。

それでは皆さんまた明日!
※毎日バトンを渡すこともあるようですが、私は適当に渡すつもりです。事前に了解を取ったうえで。
なお、私は今までこうしたチャレンジには距離を置いていました。ですが、このチャレンジは参加する意義があると感じたので、参加させていただいております。
もしご興味がある方はDMをもらえればバトンをお渡しします。

「かんたんプログラミング Excel VBA 基礎編」
単行本 ソフトカバー:351ページ
大村あつし(著)、技術評論社(2004/3出版)
ISBN978-4-7741-1966-3

Day1 「FACTFULLNESS」
Day2 「成吉思汗の秘密」
Day3 「占星術殺人事件」
Day4 「ワーク・シフト」
Day5 「かんたんプログラミング Excel VBA 基礎編」
Day6 「?」
Day7 「?」

★ ★ ★ ★ ★ ★ ★
7日間ブックカバーチャレンジ
【目的とルール】
●読書文化の普及に貢献するためのチャレンジで、参加方法は好きな本を1日1冊、7日間投稿する
●本についての説明はナシで表紙画像だけアップ
●都度1人のFB友達を招待し、このチャレンジへの参加をお願いする
#7日間ブックカバーチャレンジ ##かんたんプログラミング


kintoneセミナーで気をつけるべき点


先週末、セミナーの講師としてお招き頂き、郡山に行って参りました。
今回は、郡山地域ニューメディア・コミュニティ事業推進協議会様からのご依頼でした。題して、
「脱Excel! 「kintone(キントーン)」で業務改善セミナー」
https://www.techno-media.net6.or.jp/newmedia/advanced/1362

実は、首都圏を離れた場所でセミナーの講師としてお招き頂くのは始めてです。
今まで弊社の本拠である町田やkintone Café 神奈川、埼玉で話させて頂きましたが、今回は初めて首都圏を離れた場所でお話をする機会を頂きました。弊社にとっても代表の私にとっても初めての試みとなります。

dscn44582
こちらのエントリーでは、今回のセミナーを通じて得たことを書きます。一般の方向けにkintoneをプレゼンする際の反省。それが主な内容となります。また、今回はスライドとしてオンラインプレゼンサービスのslides.comを使いました。そういったオンラインプレゼンサービスでセミナーを行う際に気を付けるべき点も盛り込みました。ご参考になれば幸いです。

そもそも郡山市に訪問するのは、プライベートも含めて初めてです。福島県の皆様の県民性についても知らなければ、kintoneの普及率も知りませんでした。

事前に主宰者のご担当者からは、以下のような方向性を頂いておりました。
 ・社会人一般 ※IT系に限らず(業務改善・効率化・専門知識不要)
 ・中小企業の経営者・管理職(経営の効率化・コストダウン)
 ・ベンダー企業(顧客にkintoneを勧める立場の方)

つまり、技術者よりもユーザー様や導入決定に関わるご担当者向けの内容をご希望でした。

それを受け、どういうセミナー内容が相応しいか。考えました。

kintoneの特徴として真っ先に挙げられるのは、ドラッグ&ドロップによるフォーム作成の容易さと全体に通ずるシンプルな設計です。

それをフォーム設計の容易さ=工数削減の視点で話すか。
それとも、簡単にアプリが作れる楽しさに焦点を当てて語るか。

私が選んだのは両者のいいとこ取りです。

カリキュラムは以下の通り。
  ・excelとkintoneの比較
  ・アンケートアプリの作成実演
  ・アンケート結果の取り込み実演
  ・グラフの作成実演
  ・権限・通知・アクションの説明
  ・休憩
  ・Amazon連携・Google マップ連携の実装例の説明
  ・価格プラン・セキュリティについて
  ・Cybozu Developer Networkについて
  ・kintone Caféについて
  ・質疑応答

dscn44532
カリキュラムの冒頭では自己紹介をさせて頂き、その中で郡山の好印象を語りました。
続いてはExcelとkintoneの比較。kintoneを語る上で両者の比較は欠かせません。
その流れで、実際のアプリ開発の模様をアンケートアプリを例として取り上げました。アンケートアプリが出来た後は事前にアンケートアプリ用に用意しておいたデータの取り込み実演と、グラフ作成の実演。今回はハンズオンは行わず、私のデモをプロジェクタを通して皆様に披露しています。
休憩を挟んでからは、これまた事前に用意しておいたアプリで、住所を入力するとGoogle マップが反映する様子をごらん頂き、さらに書籍アプリとしてISBNを入力するとAmazonから取得した画像データなどが表示される実例の紹介。
その後は、価格の説明、セキュリティ、動作環境から、技術者向けのサポート体制についての説明を行い、質疑応答で幕を閉じました。

定員ぎりぎり、30名弱の方にご参加頂きました。主催者の皆様の努力には感謝です。また、終了後にはアンケートもご回答頂きました。

dscn4471
アンケートの内容からは、皆様の率直なご意見が伺え、とても参考になりました。30代の年齢の方々からは概ね高評価を頂きました。それはとても嬉しかったです。ですが、50代の方からは低評価でした。これには残念な思いでした。でも、高評価よりも低評価こそが自分を成長させてくれる原動力となります。率直にご意見が伺えたことにも感謝ですね。次回に向けてそこをどう活かすか。

以下に、私が受け止めた反省点と今後の改善点を書いてみます。

今回のセミナーでは、kintoneを紹介するのにExcelとの比較から入るのがよいと判断しました。実務に携わることの少ないであろう経営者の皆様にどうやってkintoneの利点を説き明かすか。パッケージシステムや基幹システムの替わりとしてkintoneを持ち出すのはよい選択とは思えません。それでは特定のシステムや業種に偏らざるを得ず、セミナーを聞きに来てくださっている皆様全てにとって相応しくありません。なのでセミナーで取り上げるとすればExcelを取り上げるのが相応しいと思いました。

では、Excelとkintoneはどう違うのか。何がkintoneの長所なのか。この点について、私は同時編集というキーワードに焦点を当てて話しました。

しかし、この点が経営者の方には分かりにくかったかもしれません。同時編集が出来ないことで困るのは、実務の方。そのあたりの不便さは経営者にとってはどうでもよいこと。kintoneの優位性を経営者の方に訴えるには、Excelとの比較には限界があるのかもしれません。30代の実務経験者にとっては理解頂けた点も、実務から離れて久しい経営者の方には利点と映らない。これは反省点ですね。

また、経営者は財務諸表で経営判断することに長けていらっしゃいます。ですが、kintoneのコスト削減効果を財務諸表でお見せすることに意味があるとは思えません。敢えて出すとすれば人件費の削減効果でしょうか。でも、それはアプリ開発のスピード感をデモすれば、容易にご納得いただける気がします。それもあって、今回のセミナーではその点には触れませんでした。ですが、コスト削減効果の見せ方は、今後の課題として考える必要があります。

また、もう一つの反省点は、画面が見えにくかった点です。なるべく文字を大きめに、一ページあたりの情報量も少なく抑えたつもりでした。事前に主催者のご担当者からはそれでもまだ一ページあたりの情報量を少なく、文字を大き目にというご指摘を頂いていました。また、文章の途中で単語が分割されてしまっている箇所についてもご指摘を頂きました。

ここで、冒頭に挙げたslides.comが登場します。ここのところ、私はセミナーや勉強会ではslides.comを使っています。パワーポイントに近い長方形のスライドがオンラインで簡単に出来るので重宝しています。

ですが、私が使っているプランは無料版なのです。無料版はCSS編集ができません。つまり画像のサイズが固定となります。ブラウザの機能でズームさせようにも、一旦貼り付けた画像はズームできません。一方、kintoneの画面を固定した画像はどうしても情報がつまっているため字も小さくなります。年配の方で、なおかつ会場の後ろに座っている方のためには拡大してお見せする必要があります。多分、年配の方からの不評の原因はこれが多かったと思われます。また、CSSが使えないことでもう一つ問題があります。それはテキスト自身の折り返し設定が、パソコンの画面解像度によって変動することです。つまり、セミナー資料を執筆し、改行箇所を調整しても、他のPCで確認すると違った箇所で改行されている可能性があるということです。特にテキスト要素自身の余白を多めに取っておかないと、変な改行が入るようです。これは今後注意したいところです。

CSSによる表示制御。それを実現するには、slides.comの場合Proプランにアップグレードする必要があります。今回は、改めてslides.comの無料版を使い続けることの限界を感じさせられました。
pricing-and-plans-slides

もちろん、オンラインプレゼンツールは他にもあります。Preziがよく知られていますよね。私も昨年、地元で始めてセミナーを行わせて頂いた際、Preziを使って資料作成しました。Preziはズームもできますし、各スライドを別々に管理するのではなく、一枚の大きな用紙の中を自由に移動させるという設計思想の下に作られています。これだとズームや改行の問題もうまく解消できそうです。ですが、私が使っているPreziのプランもまた、無料版です。Preziの無料版は、無条件に公開されてしまう制限があります。つまり、試作段階ですでに公開されてしまうのです。それもあって、Preziは使いませんでした。
%e6%96%99%e9%87%91%e3%83%97%e3%83%a9%e3%83%b3%e3%81%a8%e3%82%aa%e3%83%97%e3%82%b7%e3%83%a7%e3%83%b3
でも、Preziはズームが柔軟に出来るという点があり、やはり捨てがたい。

結局のところ、オンラインプレゼンツールにも一長一短があります。そして、セミナーの資料の質を上げるには有料版を使わざるをえないな、というのが今回の教訓の一つです。kintoneを説明する上で、画像のキャプチャは欠かせません。また、画像はズームして表示させないと、後ろのほうの席の方には見えづらい。ここの考慮をないがしろにすると、折角出席してくださった方のセミナーへの興味を殺ぐことになります。

これを解決するには、素直にパワーポイントをインストールするか、OpenOfficeのImpressを導入すれば済むのかもしれません。が、プレゼンソフト間でも相互の表示がきっちり同一になりません。それもまた、頭の痛いところです。プレゼン環境は早急に定めなければならないと思いました。

今回のセミナーで得た成果は多数ありました。そして、それと同じだけの反省点もありました。
それをまとめるとすれば、以下の三つです。

・Excelとの比較は実務担当者にしか有効でない。
・コスト削減効果を謳うには、 アプリの開発スピード以外に、実際の人件費削減効果を実際に試算したほうがよいかもしれない。
・プレゼンツールを厳選し、細かい画像もズームして表示させるような配慮が必要。

私にとって、今回の郡山商工会議所でのセミナーは、私自身にとってもすごく勉強になるものでした。セミナーの翌日は、kintone Café 福島 vol.1があったのですが、ホテルに帰ってからも資料の改訂作業にも熱がこもりました。

主催者の皆様、ご参加の皆様、今回は誠にありがとうございました!