はじめまして。システムコンサルティング本部の北川です。
今回は、駆け出しエンジニアの私が担当した cybozu.com conference 2013 のイベント受付システムを紹介します。
システム構築には時間と手間がかかる
この受付システム自体は至って一般的なものです。 まず、ユーザーはフォームに必要事項を入力し、アカウントを取得します。メールで送られるログイン情報を元に各ユーザー用の cybozu.com 環境にログインすると、登録情報の閲覧や運営側に問い合わせができます。
では、1からこのシステムを作ることを考えてみましょう。 必要なものはざっくりと、以下のものになります。
- 入力フォーム
- 情報を保存するための DB
- 保存情報をユーザーに見せるためのページ
- 情報閲覧ページをユーザーに自動でメール返信する仕組み
- 運営側への問い合わせページ
仕様を決め、開発して、テストして...と考えると、ごく少人数で開発した場合、とても短期間で作成できないと思います。しかし、今回は kintone と連携サービスを組み合わせることで、駆け出しエンジニアの私でも1週間でこのシステムを作ることができました!
kintone でファストに構築!
では、今回システム構築をする上で実際にやったことと、かかった時間を紹介します。
入力フォーム
こちらは、フォームクリエイター という、kintone の連携サービスを使いました。kintone から入力項目の情報をとりこめるので、ちょっとしたレイアウトの修正のみで約15分程度でサクッと完成です。
情報を保存するための DB
kintone を利用することで特になにも考えずに準備完了です。
保存情報をユーザーに見せるためのページ
ユーザーの情報ページは kintone のアプリで管理します。kintone のアプリ作成は GUI でぐりぐり作成できるので、わずか30分程度で完成。
情報閲覧ページをユーザーに自動でメール返信する仕組み
今回のシステム構築で一番時間がかかった部分です。具体的な処理は以下の3つです。
- 登録情報から QR コードを作成する
- 作成した QR コードを登録情報ページにアップデートする
- 案内メールを送信する
こちらは、kintone SDK for Java が用意されており、初心者の私でも3日で実装できました。
運営側への問い合わせページ
こちらも「保存情報をユーザーに見せるためのページ」同様アプリで管理していたため、30分程度で完成。
よって、全体でかかった時間はで3日と1時間15分です。3日ボウズの私でも飽きる寸前で構築完了です。実際には、テストやプログラムを配置するサーバーも準備したので、全体では1週間かかりました。
kintone SDK for Java の利用例
では、一番時間がかかったプログラム部分をざっと紹介します。下の概要図における3つの処理を kintone SDK for Java で実装しました。
図中の3つのプログラムの処理内容は以下の通りです。
- 任意の参加者 ID を割り振ります。
- kintone API で参加者 ID を取得し、QR コードを作成します。生成した QR コードをレコードに添付します。QR コードは、Java のライブラリを使って作成しています。
- ログイン名とパスワードを生成し、User API でユーザーアカウントを作成します。
- kintone API でレコード情報を取得し、レコードへの URL とログイン名を記載したメールとパスワードを記載したメールをそれぞれ送信します。
これを定期実行することで、申込された方にご案内のメールを送信していました。カンファレンス当日は QR コードを印刷などで持参いただき、受付でチェックするという流れです。内心、QR コードが正しく認識されるかヒヤヒヤしていましたが、大きな問題はありませんでした。
最後に、今回実装した QR コード作成後に kintone のレコードを更新する処理の一部を紹介します。
//QRコード作成 int i = 0; int iCounter = 0; for (; i <= index; i++) { if (userInfo[i] == null){ break; } long id = userInfo[i].RecordNo; Record record; record = new Record(); List<String> listUser = new ArrayList<String>(); listUser.add(userInfo[i].LoginId); record.setString("loginid", userInfo[i].LoginId); record.setUsers("loginname", listUser); record.setString("password", userInfo[i].Password); record.setFile("qrcode", (new File( QRcodePath + userInfo[i].LoginName + ".jpg")), "image/jpeg"); listSend.clear(); listSend.add(stext); record.setStrings("send", listSend); // DBUpdate try { db.update(app, id, record); bolUpdate = true; } catch (DBException e) { writeLog("ERROR", e.getLocalizedMessage()); bolUpdate = false; e.printStackTrace(); }
システム構築に革新を
今回は kintone にひと工夫加えることで、短納期で実用的なシステムを構築できました。これからも、今までは時間と手間がかかっていたシステム構築作業を kintone で「ファストなシステム構築」に変えていきたいと思います。