Articles tagged with: kMailer

事例:公益社団法人かながわ福祉サービス振興会様


kintone、FormBridge、kViewer、krewDataを組み合わせた伴走支援開発により会員管理システムを構築しました

  Topへ↓

公益社団法人かながわ福祉サービス振興会(以下かなふく)様は、神奈川県の高齢福祉事業、障害福祉事業、子育て支援事業、その他事業を展開している公益社団法人です。
かなふく様は、利用者の介護・障害サービス選択に資する情報システムの開発・運用や、サービスの質向上に向けた介護サービス認証・評価制度事業、介護・福祉専門職の教育事業等、多岐にわたる事業を行っておられます。
「県民とともにつくる新しい公共」を理念として、県や市町村、民間企業やNPO等を会員とするかなふく様において、その会員管理システム及び会員専用サイトを構築するタイミングで、弊社にお声掛けをいただきました。

かなふくの瀬戸理事長は、山北町で実施したkintone Café 神奈川にも登壇いただき、ノーコード・ローコードツールによるDXの推進に精力的に取り組まれていらっしゃいます。
その時のご縁がもとで、今回会員管理システム構築の伴走支援のお話をいただきました。

会員サイトの構築に苦戦する

  Topへ↑

かなふく様では、kintoneの導入をされており、多岐にわたる業務効率を上げるために活用されていました。トヨクモ社の製品を用いたデータ連携により、帳票出力等も実装済でした。
会員管理は旧来Accessで管理しており、昨年度kintoneにデータ移行したものの、情報量が多く扱いにくく汎用性が低い状態でした。
そのため、会員情報の修正作業や変更履歴の管理、請求・入金管理に多くの工数がかかっている状態でした。

今回は、汎用性の高いデータベースにし、煩雑な請求・入金管理を自動化、マイページによりユーザーが情報更新を行う会員管理システムを構築することが課題でした。
会員の申込みや情報更新・修正、請求書・領収書の自動発行等を会員専用サイト上で行えるようにすることで、会員の利便性は向上し、かなふく様の管理事務の負担は減ります。

かなふく様では一部の職員がJ Campに参加したり、ベンダーとの協働によるシステム設計・運用経験もおありであったため、DX推進への機運もお持ちでした。
そのため、会員管理システムをkintoneとトヨクモ製品等の組み合わせによる内製構築を考えておられました。

会員管理システム構築にあたって発生していた問題点は下記の通りです。

1. かなふく様のセキュリティポリシー上、Toyokumo kintoneApp認証が適合しない

Toyokumo kintoneApp認証とは、トヨクモ社の製品を利用する際の認証手段です。ページ上のボタンをクリックすることで送信されるメールが受信できれば認証完了となります。つまり、Toyokumo kintoneApp認証はメールを送受信できるのが本人であることを前提としています。
上記方法は、かなふく様のセキュリティポリシーに合わず、IDとパスワードによる認証が必要というご判断でした。

2. 会員によって変動する請求額の計算方法

かなふく様の会員は、市町村会員、法人会員(正会員・賛助会員)、個人会員に分かれています。
さらに、会員の中にはロボット協議会委員と呼ばれる会員もおります。

会費は法人種別毎に異なるだけでなく、入会初年度と継続とでも請求方法や金額が異なります。
さらに、法人会員の入会は理事会の決議を経る必要があり、入会月が変動するため、これらの会費請求のタイミングを踏まえたアプリ構成にする必要がありました。

3. どのように請求書に反映させるか。

かなふく様はPrintCreatorを使っておられたので、帳票設計のスキルはお持ちでしたが、データ構造が決まらないため、帳票の設計も決められずにいました。

4. 会員情報の変更履歴管理

これまでは、会員情報の登録や更新、変更は、旧来の書面受理の方法にて受付、処理を行っていました。
今回マイページ上のWEBフォームにて、会員様自身により手続きができるようになると、かなふく様側で変更履歴が埋もれてしまい、把握が困難となります。
kintoneは標準機能で変更履歴を蓄積しますが、それは一覧では見られません。
かなふく様のご要望は、会員情報の変更履歴を一覧表示して、どのように変更されたかが埋もれることなく確認できるようにしたいというものでした。

5. 会員サイトのプラットフォーム

会員専用サイトを載せるウェブサイトのプラットフォームも未決定でした。


Google Workspaceを活用する方向で決定

  Topへ↑

弊社が支援を開始した際、最初に提案したのは「チーム応援ライセンス」の活用でした。
900アカウントが格安で利用できるこのライセンスならば、会員様にkintoneライセンスを与えるだけで会員専用サイトに等しい機能が実現できるのではないかと考えました。
ところが、サイボウズさんからの回答で、かなふく様はチーム応援ライセンスの適用対象外という結果でした(弊社としては、公益社団法人であれば適用されると見込んでいたのですが)。

そこで、かなふく様から提案されたアイデアが、Google Workspaceを利用する方法です。
もともとかなふく様はGoogle Workspaceをご利用でした。つまり、会員様にGoogle アカウントを付与する上での追加費用が不要です。
その利点を活かし、Google WorkspaceのGoogleサイト上にFormBridgeやkViewerを導入すれば、かなふく様のセキュリティポリシーを満たした状態でトヨクモ製品が使えます。このアイデアが秀逸でした。
これによって公開のプラットフォームや、Googleアカウントを使用してのToyokumo kintoneApp認証を実現しつつ、かなふく様が内製できる目途がつきました。

会員情報はkintoneで管理し、申し込みフォームはトヨクモ社のFormBridgeを用いて、kViewerのマイページ機能を活かします。さらにPrintCreatorを使って請求書を発行し、kMailerでメールを送信します。
この構造の最大の効果は、かなふく様内でkintoneとトヨクモ社の製品群を利用して、会員専用サイトが内製できる道が開けたことです。
Googleサイト上にFormBridge、PrintCreator、kViewerを駆使した会員サイトを構築することはそれほど難しくありません。
会員サイトのコンテンツ自体は、弊社からの支援の時間や手間がかからず、実装工数の圧縮が実現できました。

初回打ち合わせ時のイメージ

詳細はこちら


kintoneのサブドメインの変更

  Topへ↑

会員専用サイトを構築するkintoneの環境は、かなふく様が以前から契約されていたサブドメインを利用する想定でした。
ところが、検討を進める中で、他の部署の取り扱う情報がより高度な機密管理を必要とすることが明らかとなり、弊社がkintoneシステム管理アカウントでログインすることが適当でないことがわかりました。

今回、弊社が関わるのは伴走支援開発、つまり、JavaScript開発やプラグイン開発は行わない支援です。スペースや組織間アクセスや権限設定を緻密に設計すれば、既存のサブドメインのままでもできたかもしれません。しかし、それを検証する時間はなく、確実なセキュリティ担保を前提とするため、今回の会員管理システムや付随する業務用に別のサブドメインを契約することとなりました。

幸いなことに、サブドメイン間でアプリのレコードの連動が不要であったため、システムを構築する上で問題はありませんでした。
弊社もさまざまなkintone構築案件に携わってきましたが、契約の途中でサブドメインが増えたケースは初めてでした。

kintoneのデータ連動の特性を説明する

  Topへ↑

弊社が支援すべき点は、会員専用サイトの裏側にあるkintoneアプリ群のデータ構成を検討することでした。
会員情報や会費請求、入金情報について、業務フローと合わせて検討を行い、対面で議論しながら、検討を進めました。
この部分の認識が一致しないと、会員サイトに表示するFormBridgeやkViewerにも影響が生じます。また、請求書を発行するPrintCreatorのレイアウトも定まりません。

このデータ構造の構築に時間をかけて支援いたしました。何度もお伺いし、またはオンラインで対応しました。

これらの作業は、伴走支援の一環として取り組んでいます。
弊社では7月より、伴走支援開発を『共遊開発』と呼ぶことにしています。
和気あいあいと楽しみながら、真剣に同じ目標に向けて実装を進めることを表しています。かなふく様との今回の開発もそのような内容になったのではないかと思います。

会員管理アプリのデザイン

詳細はこちら

かなふく様との伴走開発支援の手応えが、共遊開発という名前にヒントを与えたのかもしれません。

krewDataを用いて会員更新履歴の管理を行う

  Topへ↑

会員情報の変更履歴を一覧で表示する。
今回、弊社は伴走支援での契約であったため一切のJavaScriptやプラグイン開発は行いませんでした。そこで、履歴管理機能を実現するため、プラグインを駆使することを提案しました。
残念なことにトヨクモ社のDataCollectでは今回のご要望は実現できないと判断し、弊社は早い時期からkrewDataを提案していました。

構成としては、会員専用サイト経由で会員情報の追加や変更が行われる度に、FormBridgeの回答保存プロセスで設定した別アプリに、処理ごとの最新データを保存します。
あとは蓄積された履歴アプリのデータをkrewDataで差分抽出し、それをまた別アプリに蓄積します。

krewDataの該当機能のフロー

詳細はこちら

これによって一覧上で必要な項目すべての変更情報を閲覧できるようになりました。

当初予定していた期日より前に会員管理システムの構築完了

  Topへ↑

当初、会員専用サイトのリリースは10月を目標に設定していました。
予定通り、10/15に会員皆様にお知らせが送付され、無事にリリースできたようです。
会員サイト入り口

会員サイトの入り口ページ

詳細はこちら

それに先立ち、9/12の時点で会員管理システムの目途がついたとのことで、9月のご支援は延期のお知らせを頂いていました。
つまり、今回のミッションは、初めての訪問である2月から8月まで、月当たり1回の訪問またはオンライン合計7回の支援で完了することとなったのです。
それぞれ2時間なのでかかった時間の合計は14時間。それに加え、kintoneスペース上での質疑も随時行いました。その時間内で成果が挙げられたのは良かったと思います。

短期間で実装に持ち込めたことは、弊社としても貴重な事例となりました。

まとめ

今回は、Google Workspace上の構築を決めるまでの一連のプロセスが、弊社にとっても初めての事例でした。
それを含めても、何度も協議と議論を重ねて、目標の時間内に会員専用サイトの構築が実現できたことは、とても良かったと思います。

このあとも、かなふく様全体にDXが実現できるよう、弊社としても引き続きご支援を続ければと考えています。

かなふくの皆様、ありがとうございました。

公益社団法人かながわ福祉サービス振興会様より

企画、システム管理、経理、異なる部署の職員が集まり、それぞれの持ち味を発揮して目的を達成することができました。
長井様、この度は、会員管理システムの構築ならびに会員専用ウェブサイトの開設にお力添えいただき、ありがとうございました。
(理事長・担当職員一同)

公益社団法人かながわ福祉サービス振興会様のご紹介

名称 公益社団法人かながわ福祉サービス振興会
社団、財団の別 公益社団法人及び公益財団法人の認定等に関する法律(平成18年法律第49号)に規定する公益社団法人
所在地 〒231-0023
神奈川県横浜市中区山下町23番地 日土地山下町ビル9階
TEL:045-671-0294
FAX:045-671-0295
目的 高齢者や障害者が心身の健康を保持し、自立した日常生活を営むことができるよう、地域福祉サービスの振興と質の向上を図るとともに、子育て支援を推進することにより地域福祉の増進に寄与することを目的とする。
事業内容 (1) 介護・福祉サービスに関する情報の提供
(2) 介護・福祉サービス評価の推進
(3) 介護・福祉に関する各種相談
(4) 介護・福祉人材の確保及び育成
(5) 介護・福祉に関する調査研究
(6) 指定情報公表センターの業務
(7) 指定調査機関の業務
(8) 指定都道府県事務受託法人及び指定市町村事務受託法人にかかる要介護認定業務
(9) 行政機関その他の関係団体との連携並びに介護・福祉の振興施策等に関する提言
(10) 高齢者及び障害者の社会参加並びに就労支援に関すること
(11) その他公益目的を達成するために必要な事業
設立許可年月日 平成24年4月1日(平成9年3月31日に設立した社団法人かながわ福祉サービス振興会から左の期日に公益社団法人に移行)
規模 職員数 常勤職員80名(令和6年11月1日現在)
令和5年度 経常収益 1,011,005千円
会員数 216団体(正会員43、賛助会員139、県市町村会員34) 令和6年9月19日現在
URL https://www.kanafuku.jp/

kintoneで詰まった時の問題解決



kintone Advent Calendar 2023
の21日目の記事です。

  Topへ↓

皆さん、kintone使ってますか!?

このページをご覧になっていると言う事は使っているはずですよね。

ユーザーとして利用する方、業務改善の道具として使う方、開発者として沼っている方、メシの種にしている方。それぞれだと思います。

システム開発に共通ですが、kintoneを使っていると、なんでや?と言うはまりポイントがあります。そのはまり方と、そこからの抜け出し方について、先日二つほど良い事例に出会いしました。
なお、本稿の内容は技術者として豊富な経験を積んでいらっしゃる方にはたわいもないものかもしれません。
が、システム開発に携わるのがkintoneが初めて、という方もいらっしゃるはず。そういう方向けに本稿を書いてみました。

2.cli-kintoneではまる問題

  Topへ↑

一つ目の事例はcli-kintoneです。
皆さん、cli-kintoneは使ってますか?
コマンドラインからkintoneのデータを任意の場所に出力できます。添付ファイルも。
また、任意の場所のcsvファイルをkintoneにインポートもできます。もちろん更新も。
バッチ処理もできるのでとても重宝します。
cli-kintoneサイト

普通の環境であれば、cli-kintoneはすぐに使えるはずです。

が、とあるお客様の環境では、これが全くつながらなかったんです。
このようなエラーに弾かれていました。


[2023-12-01T09:00:00.000Z] ERROR: error: Client network socket disconnected before secure TLS connection was established


[2023-12-01T09:00:00.000Z] ERROR: AxiosError: maxContentLength size of Infinity exceeded


[2023-12-01T09:00:00.000Z] ERROR: error: 403: Forbidden


[2023-12-01T09:00:00.000Z] ERROR: error: unable to verify the first certificate

そのお客様の環境は、ビルから外に出る通信はまず設置されたファイアウォールによって制限されます。さらにインターネットを経由する通信は離れた場所にある情報センターを必ず通ります。そこではProxyサーバーが設置されています。
kintoneにはBasic認証、id/pw認証に加え、ipアドレス認証またはセキュアアクセスも使っています。要するに厳重な防備が敷かれているのです。

これらのパラメーターの値を変更することで、上記のエラーは変わります。

こういう場合、通常ならば情報センターに問い合わせをします。エラーになった時間帯のパケットの調査を依頼し、何の設定値がおかしいのか、何がパケットの通信を阻害しているのか。
端末からkintoneサーバーまでとその逆の通信経路を追っかけます。

ところが、膨大なパケットを日々扱っている情報センターに対し、ログを取って欲しいと安易に調査依頼をすることはできません。
かといってこちら側のエラーメッセージも原因を追求するにはあまりにも不十分なものです。コマンドプロンプトからpingコマンドやtracertコマンドやnslookupコマンドを打っても根本的な解決にはなりません。
そのため、解消にかなりの時間をかけました。五里霧中を歩むがごとき。

3.問題解決のケース1

  Topへ↑

この時に私が採った問題解決手法は総当たりです。
問題解決の手法では山登り法と呼ばれるものに近いかもしれません。

cli-kintoneにはたくさんのオプションが設定できます。ユーザー認証情報、basic認証情報、proxy設定情報、証明書情報。
それらを全パターンの組み合わせで調べ、どの組み合わせパターンだとうまくいがないかを一つ一つ潰しました。
もちろん、そもそもの設定値が間違っているとつながらないので、それらは可能な限り知見を持つ方に事前に聞きました。

その甲斐あって、無事にcli-kintoneで接続に成功しました。

ただ、ここで言っておくべきは無闇矢鱈に試したわけではないことです。
上に書いた通り、cli-kintoneの公式サイトには接続にあたってのオプションが全て載っています。(–helpオプションに出てくるコマンドのうち先頭の二つはサイトには載っていませんが)

つまり、最初から試すべきパターンの上限枠は用意されているのです。後はこれらに基づいて組み合わせを試すだけ。

こうした総当たりを試すしかないパターンは、システム開発ではたまに起きます。
もし、五里霧中でどうしようもなくなった時も、ありうる組み合わせを全て試せば、必ず答えがあります。

総当たりを試す場合の判断基準は以下のとおりです。
・有識者から正しい設定情報を入手できること。
・パターンの上限を見定め、実行可能であること。
・自らのリソースで実行可能であること。
・システムに負荷がかからないこと。
・失敗によるデータ破損紛失の恐れがないこと。

それらが満たせれば、あとは根気よくパターンを試すのみです。

kintoneはプラットフォームです。幸いなことによほどのことがない限り壊れません。安心して試してください。
そして、kintoneもcli-kintoneもきちんとテストされた上でリリースされています。
設定値さえ正しければ、必ず何かのオプションで状況が打開できるはずです。
ぜひ頑張ってください。

ここでの問題解決の方法は、
・有識者から正しい設定情報を入手する。 ・・・正しい情報
・パターンの上限を見定める。 ・・・解決手段の見積
・システム負荷、データ破損を防ぐ。 ・・・影響範囲の確定

4.kMailerではまる問題

  Topへ↑

続いて二つ目の事例は上の件と同じ日に問題解決しました。kMailerについてです。

トヨクモさんのkMailerはkintoneからメールを送ることのできるサービスです。
メールテンプレートアプリを設置し、メール履歴アプリを設置し、アドレス帳アプリを設置します。

メールテンプレートアプリや送信履歴アプリ、ログアプリはトヨクモさんがテンプレートを用意してくださっています。
テンプレートアプリについて

あとはそれらをkmailer専用の管理画面から設定し、生成されたJavaScriptをkintoneのアドレス帳アプリに組み込むだけ。

メールテンプレートアプリは、各レコードにメールのテンプレートを保存できます。
メール送信画面で、設定したメールテンプレートを呼び出し、必要に応じて手を加えれば、アドレス帳のレコードに応じた送信先にメールが送信されます。アドレス帳アプリの任意の項目の値をにタイトルや文面に差し込むこともできます。
とても便利なサービスです。

製品サイト

お客様が送りたいメールはビジュアルを整えた形。クリスマスメールが送りたいの!
当然、メール内には季節感あふれる画像も添付します。つまり、HTMLメールです。

メールテンプレートを設定する際も、HTMLメールを前提にビジュアルを整えたい。それは当然ですよね!

ところが、トヨクモさんにご用意いただいたメールテンプレートアプリの中にある本文を格納するフィールドは<文字列複数行>フィールドです。
<文字列複数行>フィールドだと、見栄えが整えられません。そこで私はフィールドコードを変更した上で本文を<リッチテキスト>フィールドに格納するように変更しました。

これにより、お客様がメールテンプレートアプリで見栄えを整えられるようにしました。あとはメール送信画面からテンプレートを呼び出し、必要に応じて微調整を行ってもらえます。
お客様のご要望を満たせてばっちり!

・・・とは、いきませんでした。

まず、一つ目の問題。

お客様のご要望は、ビジュアルのメール本文に画像を含める事でした。
ところが、kintone上の画面上では画像が添付できるのに、保存すると画像が消えてしまいます。<リッチテキスト>フィールドを普段使っていない私の無知がばれてしまいました。
ということは、お客様は毎回メール送信画面上で画像を添付し直さなければなりません。これは大変。

しかもテストメールを送ってみたところ、添付されている画像の代わりにエンコードされた文字列が延々と連なっています。
いやぁぁぁぁぁぁぁ!!もはやホラーです。

ホラー以前にそもそもメールとしての根本からあり得ない状態です。それでいながら、宛先によってはきちんと画像付きのメールが送信できているのが謎。

二つ目の問題は、項目の差し込み機能がうまく動かないことが発覚したことです。
メール送信画面ではアドレス帳アプリの任意の項目を画面から差し込めます。
項目を差し込むことによって同じ文面のメールを送っても、差し込み項目の値に応じてメールの文面は変わります。名前とか。
差し込み機能は多くのお客様にメールを送信するお客様にとっては欠かせない機能。ところが、この差し込み機能がうまく動かなかったのです。

メール送信画面上で差し込み設定するときちんとレコードの値が差し込まれるのに、メールテンプレートアプリから持ってきた本文の差し込み設定が効かず、メールのプレビューにはカッコつきのまま表示されてしまうのです。
{{姓}} {{名}} 様
のような感じで。

これだと、メールテンプレートアプリが活用できません。そして、お客様は毎回メール送信画面から差し込み設定と画像添付設定をし直さなければならない。これは問題です。

5.問題解決のケース2

  Topへ↑

この疑問をXにポストしてみたところ、トヨクモのとある方が拾ってくださいました(感謝!!)。そしてしばらくやりとりさせてもらいました。すると、理由が解決しました。
要するに、私がメールテンプレートアプリ上で本文を格納するフィールドを<文字列複数行>から<リッチテキスト>に変えたことが一連の不具合の理由のようです。

私の失敗としては、以下の文章を読み逃していたことです。
「メールテンプレートアプリは、アプリテンプレートの構成のまま利用することを想定しており、変更を加えた場合の挙動は保証しておりません」
ちゃんと書かれてる! 私がここを見逃していたことが全ての敗因でした。

なお、一連の不具合については、メールテンプレートアプリの本文を格納するフィールドを<文字列複数行>にもどしたことで解消しました。

ただし、まだ問題が残りました。
それは、メールテンプレートアプリにビジュアルのメールを設定できなければ、お客様の効率が著しく落ちる点です。

お客様はHTMLタグが分かりません。そのため、お客様によるメールテンプレートの設定は不可能です。
また、kMailerの「ホーム > メールテンプレート一覧」からはHTMLプレビューも可能です。が、お客様にはできる限りkintone内で完結していただきたいと思うのは人のサガ。
送信予約を見るときはkMailerを使わざるを得ないとしても、kintone側でメールテンプレート作成から送信先のレコード抽出、メール送信までを一気通貫でやり切りたい!

そこで、今回は、私の方でメールテンプレートアプリのレコードを保存したタイミングで、
<リッチテキスト>フィールドの内容を<文字列複数行>フィールドにHTMLタグ付で転記するJavaScriptを作りました。

それによって、お客様がビジュアルのメールをご自身で構築できるようになりました。

また、画像についてはレイアウトがだいたい決まっていました。そのため、オンラインストレージ上に該当する画像を格納してもらい、メールテンプレートアプリの本文の <img src=””> タグにそのurlを設定することで解決しました。
このファイル名は常に同じにしてもらうか、または、下図のようにメールテンプレートアプリのリンク項目を入力してもらうようお客様に依頼しました。ストレージから得られた共有urlはそのままでは使えないため、変更してもらうための注記を加えた上で。

まずは無事にクリスマスメールが送れそうです。よかったよかった。

さて、反省しなければ。
私の反省は、
・kMailerのサイトを熟読していなかった。
・予断に基づいた構築に走っていた。
・kintoneの柔軟性を過信していた。
でしょうか。

ここでの問題解決の方法は、
・基礎となる情報ソースを読み返す。  ・・・基礎情報の重視
・自らの予断を見直す。  ・・・認知バイアスの修正
・有識者からの助言を得る。 ・・・多面的な視野

この3点です。

6.kintoneで一度開発してみてください

  Topへ↑

他にも、kintoneでトラブるケースはたくさんあります。
・ユーザーの要望をまとめないままに実装に走ってしまい、ヒアリング不足で変更・追加要望が土壇場で相次ぐ。
・kintoneの性能を甘く見積もっていて、特定の端末でしか限界値テストをせず、本番でトラブる。
・ユーザーの要望に対して過度なカスタマイズをしてしまい、あとで自分の首が絞まる。

どれもが、かつてやってしまったことのある失敗です。
全て、ひいひい泣きむせびながらリカバリーしました。汗顔のいたりです。

ですが、これからkintone開発に入っていただく方は、安心してください。
kintoneはプラットフォーム上で動きます。自分でハードウエアや基盤を用意する必要がないのがkintoneの良さ。簡単には壊れません。いろいろと試して、経験値をためていける環境がすでに用意されているのです。
ただし、ドキュメントはきちんと読んでくださいね。

さらには、システム構築の思考フレームワークというべき「kintone SIGNPOST」もあります。
kintone SIGNPOSTページ
この考えはkintoneだけでなく、既存のシステム開発でも活かせます。システムが無縁でも業務改善に役立ちます。

また、なんといってもkintoneには多くの開発者やユーザーがいます。そうした方々が豊富な知見を日々あちこちでアップしてくださっています。つぶやきで動画でブログでセミナーでユーザー会で。
たまに、この記事のようにしくじり先生よろしく失敗談を書いてくれる人もいます。

ぜひ、kintoneを使って業務改善の当事者として、システム開発の当事者として楽しさを味わってください!