Articles tagged with: kintone

kintone Café 東京 Vol.8 @多摩を開催しました


8/30にkintone Café 東京 Vol.8 @多摩を開催しました。

公式の開催報告はしかるべき場所に書かせていただきました。(こちら

ツイートのまとめサイトも作成させていただきました。(こちら

なので、ここでは代表である私が登壇の際に語った「スライド」をさらに補足するように、開催であらためて感じた思いを書かせていただきます。

本稿を書こうとして、前回アクアビット長井として主催したkintone Caféを調べたところ、2017年3月のkintone Café 神奈川 Vol.5までさかのぼることがわかりました。つまり、前回の開催から2年半、kintone Caféを主催していませんでした。空きすぎです。間を空けすぎたことに忸怩たる思いです。

2年半の間、もちろん手をこまねいていたわけではありません。ツイートもたくさんつぶやきましたし、kintone Advent Calendarにも毎年書いています。DevRelにも参加し、弊社ブログ記事にもkintoneのことは書いています。他のkintone Caféでは登壇もしましたし、お客様の主催するセミナーでも登壇もしました。代表がエバンジェリストとして全く何もしていないとは思いません。kintone Café神奈川もなんどか話を持ち掛けては立ち消えを繰り返し、それなりの開催に向けての準備は進めました。

でも、結局は開催できなかったことに変わりありません。kintone Caféに限らず、セミナーは自らが行うべき。そう思っています。特にkintone開発が弊社の業務の主流になっている今では、一日のほとんどをkintoneの事を考えていたわけですから。これは怠慢と言われても仕方ありません。

何が原因だったか。結局、代表自身がkintone Caféのテーマについて、どう開催するか迷いが生じていたの正直なところです。技術寄りの内容で開催するのか、ユーザー寄りの内容にするのか。技術寄りにしたところで、どこまで伝わるのか。スキルは座学やハンズオンでどこまで伝えられるのか。そもそもkintoneエバンジェリストとは、技術うんぬんではなく、kintoneの良さを広めることにあるのではないか。私の中でコンセプトが右往左往していました。

今回、弊社のサテライトオフィスで開催したのは、オフィスの大家さんから開催要望があったからでした。そして要望の中で「そもそも論」を聞きたい、ということでした。つまりkintoneとはそもそも何か、という地点から話を起こす必要がありました。都合のよいことにkintone Café東京を今運営しているメンバーの松田さんはkintoneを軸とした業務改善を推進されておられます。そうした風もあり、私の登壇資料も技術のことは触れず、ユーザー向けの内容にしてみました。

今回のkintone Café 東京 Vol.8 @多摩は開催要項にユーザー向けをうたっていたこともあり、6,7名はkintoneについて触ったことがなく、そうした意味でもユーザー向けの内容でよかったと思います。私の登壇でもそもそもなぜkintoneをユーザーに勧めるのか、という観点で熱く語りました。他の方のスライドも、そうした点でテーマが絞られていたようです。

今回、久しぶりに主催してみて、ユーザー寄りで行く、との方向性は続けようと思いました。ただ、ハンズオンはやれればやりたい。一緒に登壇したエバンジェリストの新妻さんからも、「データ」「プロセス」「コミュニケーション」の三つの柱で語るのは、初期のkintoneのコンセプト。今や概念で語るのではなく、直接ハンズオンで魅力を伝えることの必要性を説かれました。仰る通りで、次回はハンズオンにも取り掛からねば、と思います。

今回、一緒に登壇した情報親方の東野さんも、これからkintoneが導入されていく中で必ず使われるであろう資料を軽く紹介してくださいました。やはりユーザー導入の推進こそが鍵なのでしょう。

お客様より恵比寿と武蔵小杉でもkintone Caféを開催して欲しいというご要望をいただいています。具体的に会場も確保できています。今年はあと二回、開催できればと思います。その時私が、どこまで技術を語りたいという誘惑に耐え、ユーザー目線の内容に踏みとどまれるか。肝に銘じたいと思います。まずはkintone Caféを主催できる自信を取り戻せたことが、今回、私の中で最も得難い収穫だったと思います。

今回来てくださった14名の皆様、登壇してくださった3名の仲間。皆様、本当にありがとうございました。


kintone Café 広島 vol.12 @福山に登壇しました


3月1日に開催されたこちらのイベントに弊社代表である私長井が参加し、登壇して参りました。

昨年秋のkintone Café Japanの懇親会で結ばれた今回のご縁。今年に入ってから示されたCaféのお題は「小さい組織でのkintone活用術!」だとか。
https://kintone-cafe-hiroshima.connpass.com/event/119652/

であらば、私が話すべきテーマは自治会しかあるまい、と思いました。昨年六月、サイボウズ社においてチーム応援ライセンスの記念セミナーに登壇しました。その際に取り上げた主な話題はCybozu LiveからCybozu Officeへの移行。kintoneにはわずかしか触れられませんでした。ところが、自治会業務にとってkintoneは欠かせないサービスなのです。ならば、今回のkintone Café 広島は私が思い描くテーマを深める良い機会となるはず。

今回、参加者の中にはkintoneを触った事のない方もいらっしゃるとか。であるなら、私は技術に深入りすまい。kintoneを導入するにあたっての前提だけを語ろうと思いました。自治会の業務は、他の小さい組織のモデルケースにもなるだろうし。技術的な観点や実際のkintoneの使用デモは、他の登壇者久米さん、山川さんが触れてくれるはず、との期待をこめて。

そんな思いで資料をまとめ始めたものの語るべきことは多い。チーム応援ライセンスの概要にも触れておきたい。そして私に与えられた時間は二十分。なのにスライドの枚数はどんどん増えてゆき、ついには六十枚を突破。

福山駅から久米さん夫妻とタクシーに乗り、会場である猪原歯科さんについたのは開演15分前。入るなり、中の洗練された様子に感嘆することしきり。私の妻も歯科診療所を経営しているのですが、規模が違いすぎます。副院長である猪原健先生が自らご案内してくださるという光栄にも恵まれまして、私たちは数名で院内を見学させていただきました。ただただ感嘆しながら。

うちの妻の歯科診療室はユニット一台。妻が受付と医師も兼ねています。ところが猪原歯科さんはパーティションで区切られた四つのユニットと三つの個室診療室を擁しています。さらには内科診療室や言語療法室なども備わっており、そのすべてが駐車場から完全バリアフリーというのがすごい。入り口の待合室のソファーも素晴らしいし、何よりもオープンキッチンの存在が異彩を放っています。このオープンキッチンは「摂食・嚥下リハビリ中の患者様・ご家族様に対して、嚥下食や高カロリー食の調理方法等をレクチャーするキッチン設備」と謳われています。私は今までも妻の関係からあちこちの歯科医院に訪れましたが、オープンキッチンが備わった歯科診療所は初めてみました。さらに、最新型のデジタル印象採得からセラミックの最終修復物まで作り上げてしまうという優れモノの機械が鎮座し、私はただただ感嘆の言葉しか出ません。歯科技工士さんも院内で常駐されており、猪原歯科さんが院内の管理にkintoneを活用されている理由がわかった気がします。

猪原歯科さんは1946年に設立してから70年以上の歴史を持っているとのこと(サイト)。妻の実家の歯医者も借地にさえしていなければ60年の歴史は誇れていただろうに。とその解体を見守った私に、複雑な思いが去来しました。

さて、kintone Café 広島 vol.12の開催です。安藤さんの司会によって始まり、トップバッターは私。安藤さんが今回の参加者の皆様にkintoneの認知度を伺ってくださったところ、技術面で深入りしないほうがよい、との判断は当たったようでした。ところが、しゃべっているうちに話し始めた時間を忘れてしまい、なんとか60枚近くのスライドを語ったものの、時間を超過するという凡ミス。冒頭のアンケートでkintoneをほぼ使ったことのない方が多かったため、予定していなかったアプリのデモにまで話を広げたのはやりすぎでした。

まあ、笑ってもらいたいところで受けがとれたのは自分の中で認めてもよいかも。あと、昨年のチーム応援ライセンスの記念セミナーで登壇した際も思ったのですが、自治会というネタは刺さる人とそうでない人に分かれます。今回は数人の方が熱心にうなづいてくださっていました。ただ、そうでない方は反応が薄い。私の反省点として、自治会という対象は中小企業にも通ずる、という論点をもう少し強調するべきでした。
https://slides.com/yoshikazunagai/kintonecafe_hiroshima_vol12/fullscreen

私の後に登壇してくださったのは福岡からご参加の久米さん。スペースの使い方、というテーマで、マルチアカウントを操りながらのコメントや通知のやりとりの実例を披露していただきました。コミュニケーションこそが重要との私の主張を深めてもらい、皆さまもよりご理解が進んだのではないかと。私自身、今後の登壇では一人で全部こなす可能性もあります。そのためにもマルチアカウントを駆使したデモは習得しないと。
https://www.slideshare.net/jkume/20190301-kintone-caf-hiroshimavol12

さらに続いては岡山からご参加の山川さんによるウェブ連携のデモ。kintoneの内容をwordpressなどのCMSに表示させる実例をシンプルな例で説明してくださいました。実はデータベースだけの導入でもkintoneは業務改善に大きな効果を発揮します。それがシンプルな実例として見られたのは良かった。私も実装経験はあり、記事にも書いた事があります。サイト内のカタログが簡単に修正できるデモは、参考になりました。
https://www.slideshare.net/secret/9hlG9PwUCFI2cM

私が伸ばしてしまった時間を後のお二人がきっちり時間内に収めたのはさすが。とっても感謝です。

最後に質疑応答の時間では、私が触れたポータルのカスタマイズなどにご質問を頂戴しました。ポータルの整備こそ、リテラシーの壁を越えてkintoneを広めるための要点という私の見込みに自信が持てました。
https://www.kintonecafe.com/activities/4327!

夜の懇親会では、広島といえば海の幸、という事で楽しい会話においしい料理とお酒に癒やされました。kintone Caféの懇親会は毎回、楽しみなのです。

ご参加の皆様、運営の皆様、猪原歯科の皆様、誠にありがとうございました!


2019年上半期弊社の抱負(実践版)


仕事

* まとめの書き方を変更
   今までは一年まとめて一気に膨大なまとめを書いていました。
   これを月ごとにまとめを書きます。
   また、まとめを書く際、個人としてのまとめと仕事上のまとめを分けます。
   これによってより細かく月々の状況を把握することが狙いです。
   水筆で月名を書き、その画像をアップします。

* 弊社サイトのAWS +kusanagi移行(SSL対応)
   現レンタルサーバーは引き続き最低限のプランで継続する予定です。
   ですがSSL化が今のプランではできません。
   また、他プランへの変更の際にサーバーの移管作業が必要です。
   なので、この機会にウェブサイトのみAWS + Kusanagiへの乗せ換えを行います。
   これは4月を予定しています。

* 技術者の雇用
   昨年末に面談を済ませた方と、どういう方式で契約を結ぶか。
   1月~2月中旬までに双方の条件をすり合わせ、
   4月から何らかの形で稼働していただきます。
   仮にその方が折り合い付かない場合も4月からの増員増に変わりはありません。

* 事務所の設置
   3月までに契約面のすり合わせを行い、4月中にレイアウト策定。
   5月の連休明けからの使用を考えています。ただし本拠地は現在と同じです。

* 英語の睡眠学習開始
   すでに機器は入手しましたが、その機器に修理が必要です。
   先日修理に出しましたので、その結果次第です。1月末から勉強を始めます。

* kintone Café 神奈川の実施
   1/19にkintone Café 埼玉に参加します。
   これを機に、kintone Café 神奈川も春と秋に一回ずつ始めます。
   人数は最低限でもよく、体裁は問いません。まずは実績を作ります。
   その他にも何かしらの勉強会を一回は開催します。内容は問いません。
   また、お呼ばれすれば他所のイベントでも登壇します。まず3月のkintone Café 広島。

* 元号、消費税率に合わせ棚卸し
   今までに弊社が手掛けたシステム開発案件で、
   元号計算や元号表示を行っているロジックを棚卸します。3月末までに行います。
   それに合わせ、秋に予定されている消費税率変更にも備え、
   消費税率の棚卸も行います。これも3月末とします。

* LinkedIn、Eightの活用
   仕事関係のSNSはFacebook、Twitterの二本を軸とします。
   Twitterについては、代表が書くこともあれば、中の人が書くこともあります。
   Facebookは今と同じ頻度にし、主に自社、他社の記事をシェアするのに使います。
   その他、LinkedInとEightにも弊社および代表の仕事上の活動報告をアップします。

* 売上額
   2018年度の1.25倍を目指します。そして粗利は今年並みの金額を。

* 事業計画
   自己流であってもよいので、3月までに今年と五年後の計画を。

* 新規のkintone案件
   8本の受注・検収を目指します。

* モバイルアプリ
   MONACAを使った案件を一本受注・検収します。

* 出身大学の東京での経済会加入
   ずいぶん前から検討していましたが、こちらは1月中に入会を行います。

* 自治会・町内会IT化への道筋を描く
   SNSでの発信はもちろんですが、きちんとした形で世に問います。
   そのため、コツコツと文章を書きためます。
   今年9月末までに草稿を書き終えたいと考えています。

* 当抱負のアラート表示
   この抱負が書きっぱなしにならぬようにします。
   毎月末に通知やアラートで自分にリマインドを投げます。
   なおかつ、毎月末に書くまとめでは、計画の進捗も含めて書きます。
   また、下半期に入る前に、下半期用の抱負(実践版)を書きます。

* そのほかのお客様案件
   ここには詳しくは書きませんが、納期を守るよう最大限の努力を払います。


2019年上半期個人の抱負(実践版)


個人

* ウイスキー検定二級の取得、唎酒師に向けて勉強開始
   二年前にとったきりのウイスキー検定三級から二級の取得を目指します。
   年二回の実施なので、初秋での合格を目指します。
   また、唎酒師についても取得に向けて情報収集を開始します。可能ならばビアテイスターも。

* トランクルームの棚設置
   4月末に棚を買い、トランクルームに入れている書籍の整理を行います。
   5月の連休中に行うつもりです。

* ラグビーワールドカップ(一試合は観戦)
   秋に予定されているラグビーワールドカップですが、最低一試合は生で観戦します。
   まだチケットが取れるかもわかりませんし、これから予定を立てる必要もありますが。

* 海外1国、国内12都道府県の旅行
   ここでいう旅行とは、その地を足で歩くことです。
   日本の滝百選の滝は8カ所を目指します。
   近畿/中部/関東/東北の駅百選は20カ所を目指します。
   日本の城百選、続日本の城百選の城は10カ所を目指します。
   酒蔵は3カ所、ウイスキー蒸留所は3カ所訪問します。

* 毎月一度の一人のみの実施
   酒の種類、場所は問いません。毎月一度は一人で反省する時間を作ります。

* 毎月一度の一人旅の実施
   12都道府県の旅行は、この一人旅で稼いでいきます。
   その中で三回は車中泊による遠距離の旅をしたいですね。

* 読書は100冊。読む読むブログも100冊。
   ジャンルは問いません。引き続き読書を続けます。

* SNS
   SNSは毎日のFacebookへの投稿は続けます。
   また、Twitterも同様に不定期で続けます。
   さらにInstagramも同様に不定期で続けます。
   要は昨年と同じような使い方です。
   ただ、Twitterはもう少し影響力を増やす方法を模索します。

* 音声入力の勉強
   これらの読書量とブログ執筆を両立するには、音声入力に頼るしかありません。
   引き続きより最適な方法を検討します。
   また、喋りすぎて充電が減ってしまうことが考えられるので、
   車内充電の手段を確保します。

* 娘たちのフォロー。
   二人とも進学するため、きちんとフォローを行います。

* 腰痛の治癒。
   これは、1月中には一度きちんと訪問します。

* 感謝
   これは、SNSではやりようがないので、
   なるべく今までお世話になったさまざまな人に会うようにします。
   会わないと感謝は届けられないので。


2019年の抱負


新年明けましておめでとうございます。

大晦日にアップした投稿にも書きましたが、昨年度は皆さま、いろいろと有難うございました。
今年も引き続き、よろしくお願いいたします。昨年の流れをさらに加速し、なおかつ、あらわになった課題を解決する努力を惜しまず進みたいと思っております。

今までは新年の抱負を胸の中で徐々に温め、個人的な抱負は家族のみに披露していました。ですが、昨年からこの場で具体的に書いてしまおうと思います。自分を追い込むためにも、自分という器の容積を広げるためにも、目標は高く持ちたいと考えております。

1.法人化5年目にあたって
 あ)総括・・
 4年目の決算は、前年度を上回ることができそうです。その中にはSES業務が含まれていますが、それを除いても平年と変わらぬ額を確保できそうです。

 い)SES業務はなるべく請けない・・
 SES業務に頼るのは経営上よろしくありません。SES業務がはらむ問題は昨年末にアップしたまとめにも書きました。自社の要員をSES業務の要員に派遣するならまだしも、弊社の場合は自社の要員がおりません。つまりSESで得た業務のノウハウが弊社にたまりません。それはSES業務が「人貸し業務」と揶揄されるゆえんでもあります。かといって弊社代表がSES業務の現場に入る訳にもいきません。代表は他の業務にも目を配らねばなりません。管理する時間も削られます。そもそも、代表自身の単価がSESの一般的な相場単価では賄えません。代表の技術についてはそうした評価もいただくようになりました。

 う) SES業務に頼らない・・
 SES業務に頼らない場合、業務の軸として考えられるのは業務請負か自社サービスの展開です。前者はお客様から業務を請け負い、弊社リソースで足りない部分は外注する形態です。その際、外注費はなるべく下げねばなりません。そして外注費比率を下げつつ、同時に外注パートナーの労力に見合った外注費を支払うことが肝要です。そうするには売上の単価を上げるしかありません。今まで弊社代表が個人事業主として独立してから犯しつづけていた過ち。それは、単価を低く設定しすぎたことです。ユーザー側からIT業界に入ったため、ユーザー側の立場での単価設定を心掛けていました。ですが、それは継続したサービスの提供を行う上で逆効果だったようです。

 え)kintoneを軸にする・・
 粗利率をあげるため、弊社代表が関わる作業はなるべくなじみのスキルで賄えるようにしました。今年もその路線を突き詰めていこうと思います。kintoneは大手会社でも開発基盤に採用されつつあります。そこからも多数の案件を請けられるようになってきました。弊社の今後の軸になり得るソリューションだと思います。そのためには弊社代表がkintoneエバンジェリストである点は活用するのが吉です。もちろん、引き続きエバンジェリストとしての発信が求められるでしょう。そしてkintone単体ではなく、kintoneと他の言語やソリューションの組み合わせで新たな価値をお客様に提供する。その心意気が大切です。新たな分野に飛び込むことを自重した昨年ですが、いくつかの開発言語の新たな習得にチャレンジしました。ソリューションについてもさらなる勉強が求められることはもちろんです。業務効率の追求と新たな勉強を両立する。そしてコーディングだけではなく設計からの上流工程にも絡めるような一年でありたいと思います。そうあり続けるには、ブログによる発信や登壇はもちろん、イベントの主宰などを通じた弊社および代表の認知の拡大が重要だと思っています。お呼ばれいただければ各地のセミナーにも顔を出したいと思います。

 お)体制の変革・・
 そのためには弊社にとっての弱点を克服しなければ。一つは個人事業主時代から続く財務の脆弱さ、もう一つは経営と作業を代表が兼任している現状です。それらを克服するため、今年は4月に二つの変革を行うつもりです。一つは出先の事務所を増やすこと。本拠は変えませんが、出先の事務所を設けます。出先の事務所には常駐しませんが、打ち合わせに活用します。これはすでに場所もほぼ確定しています。これによって家庭と事務所の分離を促進します。もう一つは人の雇用です。昨年末、お世話になっている会社様の忘年会に呼ばれました。弊社と同時期に法人化したのに、すでに5名の優秀な技術者を雇用し、売上を拡大しています。とても刺激を受けました。弊社も昨年末、とあるご縁から技術者の面談を行いました。その方とどういう形で仕事をしていくのかは年明けから決めていきますが、技術者さんの希望に寄り添いながら慎重に決めていこうと思います。

 か)外注パートナー・・
 外注パートナーは昨年に引き続き、限られた企業様と続けていくつもりです。おととし、むやみにパートナーを増やし、自由意思に任せた失敗は繰り返しません。お客様と弊社、弊社内、そして弊社とパートナー。その間で工数をかけず、なおかつ確実に仕様情報を伝達する。どうやればあちこち飛び回る代表の時間を割いてスキルが円滑に伝達できるのか。どうやればお客様の業務要件を開発に落とし込めるのか。そのためのドキュメントツールやコミュニケーションツールは引き続き模索していかなければ。この工夫に時間を掛けるつもりです。

 き)自治会との関わり・・
 弊社が関わる業務に制限は設けないつもりですが、自治会関係の案件は積極的に取っていこうと思っています。コーディングや設計にも携わりますが、主には登壇による認知度拡大を図っていくつもりです。「自治会 IT」で検索すると代表がトップに登場する。そんなアドバンテージは得ようにも得られません。今のうちに自治会の業務は形にしたいと考えています。その結果が各地の訪問につながれば良いと思います。代表の個人的なライフワークである地方訪問と地方創生への何らかの貢献へと。

 く)事業計画・・
 もう一つやるべきこと。それは経営の軸がぶれないような事業計画の策定です。その方法はこの二年でヒントをいただきました。2020年はすぐにやってきます。そして2020年が過ぎればシステム案件は減っていくでしょう。それを見据えた計画が求められます。具体的には今年の売上額は、2018年度の1.25倍を目指します。事業計画は3月までに今年分を、4月までには5年後の計画が書かれたものを作りたいと思います。あと、新規のkintone案件を8本受注することを目指します。そのためにはkintoneの案件で実績を作り、それをブログなどでアピールするしかないでしょう。実は一昨年、昨年とあちこちにまいた種が育っています。これらを実のある実績にすることが今年前半のミッションだと思っています。実績を作って行けば、自然と年末のkintone Advent Calendarや登壇の場でご披露できるネタはたまるはずなので。

 け)主催するイベント・・
 昨年の反省の一つとして、主催イベントが公私ともにゼロだったことが挙げられます。これは今年最低限解消しないと。最低でも三回は行うつもりです。多数の人を巻き込む発信力は代表に足りない課題なので身に着けていきたいです。

2.話す技術、書く技術、システムの技術
 あ)話す技術、書く技術・・
 昨年に引き続き、この2つは精進しなければと思っています。去年、書くほうは量的には目標を達成できました。しゃべる方も自信がつきました。今年は主宰イベントもからめ、しゃべる機会を増やしたいと思っています。代表の脳の回路の癖ですが、話さないとすぐにスキルが衰えてしまいます。ただ、書くほうもそろそろ目に見える成果として世に問いたいと思っています。今年も読読ブログは100本アップすることを目標とします。また、技術Blogは去年の二倍の量を目指します。弊社代表が独立して法人を立ち上げるまでを描く「アクアビット航海記」が案外読まれています。続きを望まれることさえもあります。発表媒体がないのは言い訳に過ぎません。まずは、今まで連載していたメディアの担当者に弊社内での転載の許可を得、続きを弊社内サイトで書いていくことも考えています。

 い)システムの技術・・
 システムの技術ですが、言語はGoを。さらに、AWSの中身についてさらに勉強を行うつもりです。AWS Loft Tokyoという格好の場ができたことですし。また、MONACAを活用したモバイルアプリを一本、形にしたいです。

 う)弊社サイトの刷新・・
 それにあたって弊社サイトのhttps化は必須です。松の内が明けてすぐ、弊社サイトを載せているレンタルサーバーの更改が迫っています。当面は今のレンタルサーバー上で動かしますが、それだとhttps化ができません。なのでなるべく早いタイミングでkusanagiを使い、AWS上に乗せ換える予定です。

 え)リモートワーク・・
 昨年知り合った弁護士の方は海外をあちこち訪問しながら仕事をこなし、成果を上げています。弁護士の業務と同じレベルを開発で行うのは難しい。それは分かっていますが、少しでも近づきたいと思っています。リモートワークしながら開発するスキルと設備を増強する予定です。

3.ブログ
 あ)全体・・
 昨年に続いてInstagram、Facebook(法人/個人)、Twitter(法人/個人)の使い分けを行います。それに関して昨年末にライフログについての考えをまとめました。今年も引き続きSNSは発信のみを中心に、あまりSNS巡回作業には時間を使わずに運用する予定です。また、ライフログでいうと、Google Mapへの投稿でGoogle本社のイベントに招待されました。昨年は英語動画がアップできず、Google本社には行けませんでしたが、今年は逃さぬようにしたいです。
 書評、劇評、映画評、時評や旅行紀、技術ブログは2018年並みの量を維持します。それと同時に、技術的な記事はもう少し増やしたいです。昨年に引き続いて、私にしか書けないブログにしていきたいと思っています。ブログのスタンスは昨年と変わりません。実名で責任から逃げないもの。また、押し付けにならぬよう私から友だち申請をしないことも同じです。これらを成し遂げつつ、質を落とさずに仕事でも成果を上げる。それはかなりの難関です。どこまで生産性を上げられるかにかかっています。

 い)音声入力・・
 すでに書くスピードをこれ以上上げるのは難しい。今の自分に無駄な時間はまだあります。どうやって無駄な時間をインプットの時間として活用するか。引き続きそのための情報収集をするつもりです。公共の場でスマホにしゃべりかけず、なおかつ正常にインプットできる方法を求めて。

5.体力と魅力増強
 あ)滝と山・・
 昨年の春に痛めた腰は、結局一年近く治らないままです。今年も山や滝めぐりはしたいと思っています。日本の滝百選に選ばれた滝は8カ所を目指します。具体的には、去年この抱負で挙げた滝はどこも行けなかったので引き続き。ニッカ宮城峡蒸留所に行きたいので、秋保大滝と三階の滝を。岡山蒸留所に行きたいので、神庭の滝を。維新151年の山口を旅したいので寂地峡五竜の滝を。阿波の土柱をみに行きたいので雨乞の滝と大釜の滝を。JR三江線が3/31で廃止になったので常清の滝を。それと娘たちから家族で長野のカムループスさんに伺いたいとのリクエストをもらっており、近くの惣滝を。他はどこか一カ所、九州の滝には行きたいですね。無理そうなら阿寺の七滝か養老の滝、または霧降の滝、常布の滝か早戸大滝のどれかを。それと、ここ二年、日本百名山に一峰も登れていません。どこか一峰は登りたいです。そのためにはまず腰を直さないと。

 い)訪問・・
 海外は一か所、国内は12都道府県の訪問を目指します。私の人生で日本の滝百選、近畿/関東/中部/東北の駅百選、名水百選、日本100名城、続日本100名城のコンプリートは最低限の目標です。それらが実現できるよう、引き続き旅に旅を重ねていきます。

私は、まとめについてはほとんど読み返しませんが、自分の目標は何度も読み返しています。これを黙読だけでなく、音読することで一層実現に近づけたいと思います。

引き続き本年度もよろしくお願いいたします。


2018年のまとめ


今年もevernoteで下書きをこしらえ、弊社ページにて一年のまとめを書きます。

総括すると、2018年は公私ともに充実していたと思います。ようやく自分の時間を自在に扱えるようになりつつある。そんな手応えを感じた一年でした。ですが、今の状況に安住する愚は犯してはなりません。そこには痛切な課題も潜んでいます。達成度6割。達成感7割。満足感8割というのが自己採点です。2018年の私および弊社とご縁をいただいたすべての方々に感謝します。ありがとうございました。

公私の「公」

●弊社の業績
§ 総括 目次 今年度は売上だけで考えれば、過去最高の実績を上げられそうです。今期はあと三ヶ月残っていますが、売上見込みも粗利見込みもたっています。何とか黒字も達成できそうです。が、一概に喜ぶわけにはいきません。その売上の中にはSES(システム・エンジニアリング・サービス)契約に属する業務も含んでいるからです。上半期に顧問税理士の先生のもとで今季の収支予測を立てたところ、このままの粗利率と売上では赤字が避けられない、との結果が出ました。そこでSESとは一線を画した営業チャネルを構築しました。その結果、ある程度の成果が得られつつあります。そして弊社リソースでも技術力で複数の案件をこなし、上流工程から関わることで粗利を確保する。今期はそのめどが立ったことが大きいです。ただ、弊社の財務状況が脆弱である事実には変わりありません。今の好況も後もって二年でしょう。そのためには弊社の利益体制も変革することが喫緊です。今、弊社では、来季に向けての体制を構築すべく動いています。

§ 業務パートナー 目次 実は昨年度、業務パートナーを増やし、ある程度の自由と自発に委ねました。それは見事に失敗しました。今年の初頭にもその余波が残っており、弊社に影響を与えました。その反省を痛烈に受け止めました。そして対策を打ちました。
それは、弊社内のリソースで売上を上げつつ、パートナー企業様もごく一部に絞る方策です。ただ、その売上の一部は、上に書いた通り、SES業務によるものです。SESに手を染めると売上は確保できますが粗利は下がります。それはつまり弊社の抱える労力ではなく、外部から調達した労働力を紹介し、仲介料を得る業務だからです。 また、SESは技術者派遣の一種ですからノウハウは技術者にこそたまれど会社のノウハウになりにくい欠点があります。また、SESは一度手に染めると売り上げがたつためそこに頼りがちになります。さらに会社の業務構造がSESに頼ってしまい、抜け出すのが難しくなります。言い方は悪いですがSESとは企業経営にとって麻薬のようなものだと思っています。エンドユーザーが支払う額と、末端の技術者が受け取る差額がどれだけなのか。その差異は暗黙の了解でうやむやになっています。ところが技術者本人の立場からするとそのギャップは大いなる矛盾として身をさいなみます。弊社代表も長らく末端で派遣される側であったため、その矛盾にもがきました。SES業務にそのような矛盾が内包されている以上、将来性も見込めないし、弊社としても粗利は見込めない。ですから弊社としてはSESは最低限に抑えるつもりです。
また、弊社自身が多数の会社から案件の発注先にお選びいただきました。ありがとうございます。その中で開発パートナーとして契約を結んでくださったイノベーション・プラス様とのご縁は来年大きく成果につなげたいと考えております。

§ 開発案件 目次 昨年の反省として、バラエティに富んだ開発案件を請け過ぎました。それを見直すため、携わる作業分野をかなり絞りました。そしてその分、提案にかなり力を注ぎました。それが功を奏し、新規kintone案件が複数受注できました。また、上にも書いたとおり、粗利を増やすため、弊社代表が関わる案件を増やしました。弊社代表の持ち時間は一日24時間しかありません。限られた時間を効率的に使えるような案件に絞る。その取り組みが功を奏した一年でした。
また、人脈作りにも力を入れた事が結果にも返ってきています。今年ご縁のあった方からの大型kintone案件も受けられるようになっています。来年以降の業務にもよいお話をいただけています。弊社代表は今年もkintoneエバンジェリストに継続して任命されており、DevRelJpで教わったTwitter活用で積極的な発信を行わせていただいております。年末にはkintone Advent Calendarに四年続けて参加し、ライフログをkintoneで活かす記事を書きました。
来年、さらにkintoneの案件のニーズは増えるでしょう。それはkintoneのサードパーティ製プラグインの充実を凌駕し、kintone専属エンジニアの仕事を絶やさないはず。引き続きそうした案件の新規受注を増やし、少しでも安定的な案件を増やす。これは必ず達成すべき課題だと思っています。
また、開発案件を絞ったとはいえ、開発に限れば新たな挑戦や勉強にも取り組んでいます。例えばIoT開発の案件。NFCリーダーを活用したプロトタイプアプリを作成してテクニカルショウヨコハマ2018に出展するネタを作りました。MONACA上でビルドし、モバイルアプリとして動かす案件にも二つほど携わりました。他にもnode.jsやPythonも勉強し、PythonフレームワークのDjangoとAWSのEC2やAURORAと組み合わせたソリューションとして結実させています。言語環境や開発環境については日進月歩の業界なので、勉強し続けなければなりません。停滞は許されませんので。

§ 業務基盤の堅牢化 目次 昨年度から取り組んでいるこの課題こそ弊社の一番の悩みです。昨年、個人事業主時代からずるずると続けていた家計と法人の財布の混在を完全に分け、資産表や収支表はきっちり顧問税理士の先生に管理していただいています。が、まだ改善すべき点が多いです。引き続き財務の正常化が弊社の今後を大きく左右すると認識しています。同時に、経営計画や事業計画書の策定にも取り掛かっています。来季は弊社の体制の変革も考えており、より家計と会社の分離を進めて行く予定です。今年はIT導入補助金導入支援事業者にも選定されました。そこで得た信用をより厚くしなければ。

§ 社内体制 目次 弊社の弱点は財務のほかに、私一人が実質的な経営者と作業者を兼ねていることです。ここをどう突破するかが個人事業主と企業経営者の壁でもあります。この壁を破るため、次なる体制構築を秋ごろから構想し始めています。年の瀬からは一部動き始めています。これが来年どう形になり、どう実るか。

§ 2018年度売上見込み 目次 上記の通り、SESの割合が高くなったとはいえ、SES以外の業務でも過去最高の売上のめどは立っています。今のペースを続けられれば、決算でも2017年度の実績より上回れる見込みがつきました。ただ、残り三カ月の努力が重要なのは言うまでもありません。

§ 人脈の構築 目次 今年は登壇も含めて露出および交流を増やそうとしていました。名刺コレクターに堕することなく、有効な人脈の構築に専念する。その結果、重要なステークホルダーの方とのご縁が多々作れました。Facebookを見る時間は一日に5分程度ですが、Twitterでの露出も増やし、焦点を定めた交流を心がけることで有効な営業チャネルがたくさん作れました。それが今年の充実した活動に繋がったと思っています。来年度も今年のノウハウを活かしつつ、引き続き新たなご縁をいただければと思っています。単なる仕事上のつながり、SNS上のみつながりだけでなく双方に良い関係を。ただ、代表個人の時間には限りがあり、お誘いしてもらったイベントの多くに参加できていません。この点は申し訳ないと思っています。

§ 対外活動 目次 2017年度は登壇の機会がほぼありませんでした。それを反省点として、今年は登壇の機会を増やしました。合計4回。まず5月のサイボウズ社にてチーム応援ライセンス開始記念セミナーに。「チーム応援ライセンス開始記念セミナー」「弊社ブログ」「「自治会こそITが必要!!」20種類を比較検討したIT顧問の選択
一番最後のサイボウズ社のブログに掲載のエントリーは、「自治会 IT」で検索すると一番に現れます。実はこのフィールドでも弊社は有利な位置におり、今後もこの有利さを活かした取り組みを考えています。
残り三つの登壇は、全てEBISU Tech Nightというイベントにおいてです。六月、九月、十二月と登壇して参りました。このイベントでは自分の中でも話し方や内容についてよい訓練の機会となりました。機会を与えて下さった運営の方々には感謝しかありません。
もう一つ今年の活動として代表が出身の関西大学の四回生向けに社会人の経験を語るイベント「東京知ル活」にもOBとして参加しました。少々、身もふたもないことを言い過ぎたかもしれませんが。
他にもさまざまなサービスのエバンジェリストの方が集まるDevRelJpに二回参加し、その両方で自己紹介のLTを披露させていただきました。また、cybozu Days 2018の前々日に行われたkintone evaCampでも他社サービスのエバンジェリストの方とご縁をもらい、とてもよい刺激を吸収しました。Cybozu Days 2018に初めて両日とも全て参加したのも今年です。
他にもイベントや勉強会、セミナーなどあれこれと参加させていただきました。「国際ファッションセンター新年会(1/11)」「荒川区ビジネスプランコンテスト(2/16)」「技術者交流会(3/30)」「ワイン&グルメ ジャパン2018(4/11)」「Zoholicsセミナー(4/18)」「IoT分科会(4/20)」「クラウドコンピューティング EXPO(5/10)」「東京知ル活(5/11)」「NPO応援ライセンス開始記念セミナー(5/16)」「AWS Summit Tokyo 2018(6/1)」「BNIバンブーチャプター代理出席(6/5)」「【ハンズオンセミナー】アプリにプッシュ通知を組み込もう!(6/6)」「Prezi Night Tokyo Ⅶ(7/13)」「kintone devCamp (8/2)」「Twilio ビジネスセミナー(8/23)」「kintone Café Tokyo(8/29)」「Smart Communication Award 2018(9/21)」「AWS Loft Tokyo オープニングパーティー(10/1)」「ハロー職1(10/7)」「DevRel Meetup in Tokyo #35 〜ソーシャル〜(10/10)」「墨田区地域クラウド交流会(10/19)」「Cybozu Days 2018(11/7-8)」「kintone Café Japan 2018(11/10)」「プロ向け勉強会 #1「AWSでWordpressを使うときのトラブル回避術<(11/15)」「技術者交流会(11/23)」「徳丸浩のセキュリティセミナー WordPressの運用時に注意するセキュリティについて学ぼう!(11/29)」「定着率・求人応募率アップ!紙芝居で学ぶユニーク会社制度セミナー on Zoom(12/1)」「DevRel Meetup in Tokyo #37 〜忘年自己紹介大会〜(12/5)」
こうした場に参加することは、自分の知見を高めるだけでなく、そこで得たご縁が次の仕事につながるため重要です。あらためて今年はそのことを感じました。ただし、今年の私ができなかったことがあります。それはイベント主催です。幹事すら一度もやっておらず、これはとてもよろしくない。kintone Café 神奈川は何度か開催のご要望ももらっていたのですがタイミングを逸してしまいました。来年は何か主催をせねばならないと思っています。

§ 執筆活動 目次 昨年からCarry Meさんの運用する本音採用でブログ「アクアビット 航海記」の連載がcarry meさんの編集方針と合わず、三月で連載が終わってしまいました。ところがこの連載、思った以上に各方面に読まれております。また、39回で中断した時点で、独立から起業に至る肝心な所は書けていません。これはどこかで発表の場を作りたいと思っています。
本のレビューは104本(相撲の歴史まで)、映画のレビューは8本、観劇のレビューは3本アップできました。また、12月には上に書いた通りkintone Advent Calendarに参加しています。その他の仕事に関したブログは23本。計138本のブログをアップしました。2018年も書くことへの情熱が尽きることなく可能な限り書けた一年となりました。ただし、書いた内容はまとまった形にできていません。来年、何らかの成果として世に問いたいと思っています。

§ 妻のココデンタルクリニック 目次 妻のココデンタルクリニックは、新患さんも増えてはいるようです。が、2018年度は妻自身が別のお仕事に忙殺されてしまい、傍から見ていてもとても診療室経営に専念できているとはいえませんでした。それは、昨年と同じく私の気分を大きく乱しています。残念ながら来年もその状態は続くでしょう。妻には妻の人生があるので、やりたいことはさせてやりたいとは思っているのですが・・・私が患者さんを紹介するなどして、診療所経営に専念させるようにしなければ、と思っています。

§ 年表 目次
 ・1月お仕事
  

自治会のIT化打ち合わせ、両国の国際ファッションセンター入居者の新年会、パートナー企業で作業と打ち合わせ

 ・2月お仕事
  

新宿でサイト作成打ち合わせ、横浜のサテライトオフィスで作業×2、テクニカルショウヨコハマ2018、虎ノ門で商談、半蔵門で打ち合わせ、Yahoo LODGEで仕事、ブロックチェーンの開発打ち合わせ、荒川区ビジネスプランコンテスト、となりのkintoneインタビュー、戸塚で司法書士の先生と打ち合わせ、Stockのサービス提供元へ訪問、SYNQAで作業、パートナー企業で作業と打ち合わせ

 ・3月お仕事
  

税務署訪問、堺筋本町で商談、三宮で飲み、半蔵門で税理士の先生と打ち合わせ、新宿御苑で打ち合わせ、Mass×Massで商談、妻のパソコン購入、横浜西口で商談、横浜で商談、渋谷で商談、成田空港で商談、横浜薬科大学で商談、戸塚で司法書士の先生と打ち合わせ、パートナー企業の皆さんと飲み、技術者交流会、パートナー企業様と飲み、パートナー企業で作業と打ち合わせ

 ・4月お仕事
  

技術者さんと経堂で飲み、太田ふ頭で商談、コワーキングスペース町田で作業×2、中川で商談、ワイン&グルメジャパン2018、旧常駐先で飲み、BitClubセミナー、Zoholicsセミナー、町田法務局訪問、川崎で商談、IoT分科会、四谷三丁目で商談、Yahoo LODGEで作業、日本橋で商談、丸の内で商談、IT導入補助金導入支援事業者採択、パートナー企業で作業と打ち合わせ

 ・5月お仕事
  

Mass×Massで商談、横浜のサテライトオフィスで作業、クラウドコンピューティングEXPO、半蔵門で税理士の先生と打ち合わせ、関西大学東京センターで知る活参加、渋谷で技術者さんたちと飲み、中川で商談、ココデンタルクリニック看板塗り、NPO応援ライセンス開始記念セミナー登壇(サイボウズ社)、西浦和で商談、パートナー企業の皆さんと暑気払い、両国で商談、渋谷で技術者さんと飲み、成田空港で商談、EBISU Tech Nightに参加、明治記念館で脳外科篠浦教授講演会、岩本町でデモ拝見、秋葉原でランチミーティング、SYNQAで作業、丸の内で商談、狛江で商談、パートナー企業で作業と打ち合わせ

 ・6月お仕事
  

月島で商談、月島で打ち合わせ、AWS Summit Tokyo 2018、Mass×Massで商談、大阪府立大学同窓会打ち合わせ、BNIバンブーチャプター代理出席、半蔵門で商談、月島で商談、MONACA×ncmbセミナー、鷺沼で商談、渋谷で商談、太田ふ頭で作業、IT導入補助金導入支援事業者向けセミナー、浜町で商談、EBISU Tech Night登壇、荏原で商談、荏原町で打ち合わせ、半蔵門で税理士の先生と打ち合わせ、町田市役所訪問、町田税務署訪問、町田市立図書館で作業、パートナー企業で作業と打ち合わせ

 ・7月お仕事
  

渋谷で商談、旧常駐先の方と呑み、両国で商談、Mass×Massで商談、お客様と飲み、Prezi Night Tokyo Ⅶ、町田市立中央図書館で作業×2、EBISU Tech Night参加、新羽で商談、両国で商談、和光大学ポプリホール鶴川で作業、センター南で商談、横浜のサテライトオフィスで作業、Mass×Massで商談、井土ヶ谷で訪問、パートナー企業で作業と打ち合わせ

 ・8月お仕事
  

kintone devCamp 2018、四谷三丁目で商談、Yahoo LODGEで作業、丸の内で作業、丸の内で商談、月島で商談、新羽で商談、青山一丁目で商談、鶴川駅前図書館で作業、丸の内で作業、技術者さんと飲み、丸の内で作業、飯田橋で商談、丸の内で作業、八重洲で商談、二子玉川で商談、丸の内で作業、新宿で商談、飯田橋で商談、Twilioビジネスセミナー Vol.53、外苑前で飲み、警視庁遺失物センター、飯田橋で商談、技術の先輩とサシ飲み、丸の内で作業、渋谷で商談、飯田橋で商談、kintone Café Tokyo vol.7、パートナー企業で作業と打ち合わせ

 ・9月お仕事
  

飯田橋で商談、鶴川駅前図書館で作業×2、ときわ台で商談×2、新宿で商談、Mass×Massで商談、東京ガーデンテラス紀尾井町で作業、パスポート申請、立川まんがぱーくで作業、両国で商談、SYNQAで作業×2、Smart Communication Award 2018、EBISU Tech Night、四谷三丁目で商談、丸の内で商談、四谷三丁目で商談、月島へ書類届けに、AWS にてスタートアップフォロー、目黒で商談、上野で商談、パートナー企業で作業と打ち合わせ

 ・10月お仕事
  

AWS Loft Tokyoオープニングセミナー&パーティー、浜町で商談、両国で商談、横須賀で商談、ハロー職1観覧、渋谷でDevRelJp、パスポート受け取り、パートナー企業の皆様で飲み、墨田区地域クラウド交流会、曳舟で飲み、渋谷で商談、AWS Loft Tokyoで作業と商談、旧常駐先の方と池袋で飲み、神田で商談、八丁堀で商談、SYNQAで作業、パートナー企業で作業と打ち合わせ

 ・11月お仕事
  

渋谷で商談、パートナー企業で呑み、飯田橋で商談、SYNQAで作業、八丁堀で商談、日本橋で商談、Cybozu Days 2018×2、お客様と幕張メッセで商談、渋谷で商談、kintone Café Japan 2018、青山一丁目で商談、Yahoo LODGEで作業、新宿で商談、両国で商談、AWS Loft Tokyoで作業、築地でプロ向け勉強会 #1「AWSでWordpressを使うときのトラブル回避術」、日本橋で商談×2、AWS Loft Tokyoで商談と作業、渋谷で商談、技術者交流会、パートナー企業様と飲み、半蔵門で商談、Yahoo LODGEで作業、PaaS研究会、徳丸浩のセキュリティセミナー WordPressの運用時に注意するセキュリティについて学ぼう!」、新宿で作業、パートナー企業で作業と打ち合わせ

 ・12月お仕事
  

定着率・求人応募率アップ!紙芝居で学ぶユニーク会社制度セミナー 、八丁堀で打ち合わせ、銀座で作業、有楽町で作業、田町でDevRelJp、日本橋でランチミーティング、四谷三丁目で商談、Yahoo LODGEで作業、半蔵門で税理士の先生と打ち合わせ、半蔵門で商談、日本橋で商談、町田市役所で商談、日本橋で商談、EBISU Tech Night、中華街でお客様の皆様と飲み、Mass×Massで商談、AWS Loft Tokyoで作業と打ち合わせ、鶴川で商談、日本橋で作業、目黒で作業と打ち合わせ、大宮で作業、上山で作業、パートナー企業で作業と打ち合わせ

公私の「私」

●家族との一年
§ 総括 目次 昨年にもまして、家族で行動する頻度は減りました。それぞれの生活があり、それぞれのタスクがある以上は仕方ありません。ただ、昨年よりはバトルの頻度が減りました。少しずつ大人になってゆく娘たちとの関係に悩みはつきませんが、今年は家族で二度泊りがけの旅行に行きました。それは家族にとってとても大切な時間でした。また、長女も次女も進路を定めなければならない年であり、ともに年内に推薦入学のめどがつきました。また、昨年亡くなった風花に変わり、三月から凛が我が家の家族の一員に加わりました。やんちゃ盛りで日々家族の神経をかき乱しています。

§ 娘たちに何ができたか 目次 今年は二人の娘がともに受験生でした。長女は首尾よくAO推薦をもらい、入試に合格しました。次女も年末に中学校から推薦状をもらうことができました。来年は二人とも専門学校に入学するはずです。娘たちが進路を決めるにあたり、私が意向を押し付けたことはありません。二人とも自分の意志です。具体的に手伝えたことは乏しいですが、新たな道を選ぶにあたっては障害ではなく、助言者としてありたいとの思いは貫けたと思います。これからも娘たちの進む道を示すガイドでありたいと思います。

§ 長女の一年 目次 長女は絵が好きで芸術系の学科に進学しましたが、人間関係など悩みも多く、高校生活に悔いはあるようです。ただ、それでもイラスト系の業界やその仕事への熱意は失いませんでした。イラスト系の専門学校に進むのも本人の意志です。私も新たな学校には見学について行き、娘の意志は確認しました。新たな学校に進学した後、悩み多き高校生活が実は無駄ではなかったことをいつか分かってくれると思います。中学の頃から個人事業主として活動している長女ですが、今も複数の仕事を請けているようです。私ももう少ししたら何かの仕事を振ってやりたいと思っています。長女とサシで出かけることは一、二回しかありませんでした。ただ、妻も含めてのお出かけは何度もしています。その中でも墨田区の職人さんを紹介するネット上の生放送番組「ハロー職1」に連れて行けたことで、メディアや自己表現の何たるかは感じてくれたのではないかと思います。年ごろのため不安定なところもありますが、引き続き長女には期待しています。

§ 次女の一年 目次 チアを諦めてまで中学の吹奏楽部を全うしたかったという次女の思いを尊重した私たち夫婦でしたが、次女は無事に吹奏楽を全うしてくれました。一方で今年は自由に生きたい次女とまだ手元におきたい妻がぶつかった一年でした。そのぶつかりが燃え広がり、何度かバトルに近いいさかいも家族の中に勃発しました。娘を持つことの難しさを感じた一年です。次女には彼氏ができましたが、私はそれを頭ごなしに否定せず、彼氏にも二回会いました。高校に行くには成績が足りない娘が調理師になりたいというので、その意志も尊重しました。そうした進路や生活態度についての話し合いも何度もしました。妥協もしたかもしれません。ただ、愛嬌もあり、人付き合いもうまい次女なので、必ずや道を踏み外さず、人生の旅路で成果を挙げてくれるはずと信じています。もう次女も子供ではないこと。大人になるため巣立とうとしていること。その二つをつくづく思わされた一年です。

§ 家族の一年 目次 そうした不安定な娘たちだった割には、危機感は感じませんでした。むしろ昨年のほうが不穏だった気がします。それは家族そろってお出かけしたことが功を奏したのだと思います。詳しくは書きませんが、それぞれの場所で良い想い出作りができました。特に3月の沖縄旅行と12月の山形旅行。去年は家族で泊まりの旅行に行けなかった分を取り戻すほどの充実した旅でした。今年の3月にわが家に凛が仲間に加わりました。五カ月近くペットショップの住人だったため、七色の癖を持ち、やんちゃでうちの家族を困らせています。可愛いのですが。あと4月の末に二回、私がグレて野宿で一夜を過ごしたことも忘れずに書いておきます。

§ 年表 目次
 ・1月帰省(泊まり)
  白山姫神社初詣神呪寺参拝、香櫨園駅、ホテルヒューイット甲子園ロイヤルホームセンター甲子園バッティングセンター西宮神社
 ・1月お出かけ
  

浅草雷門舟和屋浅草花月堂 馬道店浅草文化観光センター黒田屋本店遊食豚彩 いちにいさん 日比谷店TOHOシネマズ日劇(映画:DESTINY 鎌倉ものがたり)星野珈琲店コーチャンフォー稲城若葉台店、しゃぶ葉町田モディ店、いこいの湯、府中の森芸術劇場伊勢ヶ濱部屋ちゃんこ会伊勢ヶ濱部屋初場所打上式Stella Lounge

 ・2月お出かけ
  

東京宝塚劇場(舞台:ロベスピエール)東京都庁南展望室、籠屋(秋元酒店)、相鉄ムービル(映画:スターウォーズ 最後のジェダイ)、毘沙門天堂、Salad Stop表参道店根津美術館(展覧会:金と墨展)LINKS LondonTokyo Whisky LibraryThe Tokyo Dining 東京ライス、極鶏Bar下北沢、谷中銀座Orso、カポエイラ、八景の棚、相武台下駅、塩川滝、塩川神社、平山橋、とんかつはせ川、青山フラワーマーケット ティーハウス 赤坂Bizタワー店赤坂ACTシアター(舞台:ドクトル・ジバゴ)VILAMOURA 赤坂サカス店ペットフォレスト鶴川店

 ・3月お出かけ
  

はま寿司 町田野津田店、西宮市こうしえん観光案内所、手造り居酒屋 樽八、スーパージャンカラ生田ロード店、どん兵衛、桔梗堂、T先輩宅、汐見橋駅、芦原橋駅、木津川駅、浪速神社、大坂人権博物館(リバティおおさか)、太鼓屋又兵衛屋敷跡、昔勤めたブラック企業跡、個室居酒屋 宴丸 Enmaru 京橋駅前店、金の蔵 京橋北口店、辺川駅、海部駅、宍喰駅、甲浦駅、海の駅東洋町、白浜海水浴場 (白浜海岸)、宍喰海岸、道の駅 宍喰温泉、轟九十九滝、クリアウォーターOSAKA㈱、地鶏と鮮魚 一石二鳥 三宮店、らーめん 熊五郎 三宮西口店、甲子園球場、Bar Harbour Inn、イオンシネマ新百合ヶ丘(映画:グレーテスト・ショーマン)薬師池公園グリーンウォーク多摩シズラー府中店八景島シーパラダイスココリア多摩センター、公津の杜駅、相州春日神社、羽田空港那覇空港知念岬公園南城市地域物産館せーふぁキッチンアブチラガマひめゆりの塔波照間ボートレースアンテナショップ 沖縄・国際通り Double Deckerぱいかじ 国際通り店ホテルグレイスリー那覇中城PA崎本部緑地公園沖縄美ら海水族館エメラルドビーチcafeティーダVONGO & ANCHOR美浜アメリカンビレッジ、県庁前駅、海の駅 あやはし館アマミチューの墓シルミチュー大泊ビーチ伊計島灯台キングタコス与勝店勝連城跡市場本通り商店街海想 松尾店、古酒家本店、Splash Okinawa 2、Sky Rent a Car、那覇空港羽田空港凛お迎えららぽーと横浜

 ・4月お出かけ
  

相模原麻溝公園、八王子駅前ビルステーキのあさくま八王子打越店イオンシネマ多摩センター(映画:グレーテスト・ショーマン)、大森貝塚跡、うどん開都大地沢青少年センター草戸山境川源流町田あいす工房ラッテ小陽生煎饅頭屋 (生煎馒头屋)、アジアンフード バー バグース、井の頭恩賜公園、Bar 羽月、シズラー府中店柏屋LATTE GRAPHIC、BrewDog Roppongi、富士の国 やまなし館、玉川学園ゴスペルカフェ、稲毛神社、川崎堀之内ソープランド街、港町駅、六郷橋、川崎市観光案内所、薬師池公園、民権の森、野津田神社、小樽食堂町田広袴店、喰違見附、T.G.I.Friday’s 町田店、野宿、博多もつ鍋 やまや、野宿、レッドロブスター 多摩境店寄居PA駅前児童公園道の駅 くらぶち小栗の里、織田氏七代の墓、雄川堰、こんにゃくパークハイウェイオアシス ららん藤岡 (道の駅 ららん藤岡)寄居PA (上り・寄居 星の王子さまPA)みはらし広場クリスタルサウンドみつや水晶宝石博物館仙娥滝昇仙峡森カフェ山梨ワイン王国大滝仙娥滝初狩PA (上り)峠の茶屋

 ・5月お出かけ
  

玉ちゃん亭、BAR CROW、赤坂区民ホール天馬 カレー&カレーパン 青山店府中の森芸術劇場シズラー 府中店、等々力陸上競技場、生田緑地、枡形山、枡形城、戸隠不動跡、尾崎咢堂記念館、エビラ沢の滝、薄野 中村屋、江戸城大手門、薬師池公園 蓮園、ららぽーと横浜琴平神社本殿、Craft Beer Moon Light 本店、多摩川五本松、新橋演舞場(舞台:蘭 緒方洪庵 浪華の事件帳)やさいの王様、沼久保駅、富士山本宮浅間大社、湧玉池、神田川、富士高砂酒造、白糸の滝、音止の滝、富士宮やきそば 平石屋、朝霧高原、本栖湖、道の駅 しもべ、甲斐常葉駅、身延駅、横網町公園、第1ターミナル 展望デッキ、大佐倉駅、将門口ノ宮神社、東光寺ビョウ、本佐倉城跡、明治記念館、フレッシュネスバーガー 曙橋店、長女学校見学、新宿御苑、世界堂 新宿本店、富士フォトギャラリー銀座、三省堂書店 有楽町店、KITTE

 ・6月お出かけ
  

東京国際フォーラム(コンサート:The Show Stopper)、上毛高原駅、鳩待峠行バス連絡所、鳩待峠、尾瀬国立公園、つり橋、尾瀬山荘、尾瀬沼、三平峠、ヌル沢奥の滝、上毛高原駅、啓文堂書店 渋谷店、めし屋 奈良間、ブックファースト 新宿店、赤坂 紫月、MARUZEN & ジュンク堂書店 渋谷店、次女の中学校運動会町田東急ツインズ、沢谷戸自然公園、油そばの店 蜻蛉、ここ滋賀、日本橋 長崎館、沖縄物産店 銀座 わしたショップ、小樽食堂 町田広袴店、亜細亜食堂 リバーサイゴン (SAIGON)、成田山 新勝寺成田山 大本堂成田山 咤枳尼天堂 (出世稲荷)成田山 三重塔、二宮尊徳翁開眼の地、成田山 咤枳尼天堂 (出世稲荷)成田山 釈迦堂成田山 額堂成田山 光明堂成田山公園、雄飛の滝、成田山 総門、長命泉、成田参道 房の駅川豊酒々井PA (上り)、多摩川決壊の碑、麺屋 大申、甘酒横丁、薬師池公園、荏原町駅、旗岡八幡神社、shango、麺匠なべすけ 本店、地ビール厨房 COPA 町田店、BACKPACKER’S CAFE 旅人食堂 町田屋台店、まちの駅 ぽっぽ町田、薬師池公園

 ・7月お出かけ
  

イオンシネマ新百合ヶ丘(映画:ハン・ソロ ストーリー)、スエヒロ館 新百合ヶ丘店、薬師池公園、MARUZEN & ジュンク堂書店 渋谷店、とんかつはせ川、薬師池公園 蓮園、雑司ヶ谷 鬼子母神 (鬼子母神堂)、Pasar幕張 幕張PA (下り)、酒々井PA (下り)、大栄PA (下り)、佐原PA (下り)、鹿島神宮大鳥居、鹿島神宮 楼門、カシマサッカースタジアム、ちゃあしゅう屋 鹿嶋店、鹿島神宮駅、剣聖 塚原卜伝生誕之地 プレート、鉾田駅、新鉾田駅、北浦湖畔駅、鹿島灘駅、鹿島大野駅、長者ヶ浜潮騒はまなす公園前駅、大野潮騒はまなす公園、荒野台駅、塚原卜伝の墓、塚原卜伝像、鹿島神宮大鳥居、鹿島神宮 楼門、鹿島神宮 拝殿・本殿・御神木、鹿島神宮奥参道、鹿島神宮 境内鹿園、鹿島神宮 奥宮、鹿島神宮 要石、鎌足神社、根本寺、鹿島城山公園、鹿島アントラーズ クラブハウス、カシマサッカーミュージアム、カシマサッカースタジアム、鹿嶋サッカースタジアム駅、鹿嶋灯台、延方駅、ばんどう太郎 神栖店、大栄PA (上り)、帝国ホテル 東京、谷際屋製麺工場、玉川学園ゴスペルカフェ、まちの駅 ぽっぽ町田、イングリッシュパブ トラファルガー、本間橋、小林商店、鳥居原園地、早戸大滝アタック、東京ミッドタウン日比谷日比谷シャンテラ ブティック ゲラン銀座 三徳堂boulangerie Bonheur、町田市民文学館ことばらんど(展覧会:舘野鴻原画展)、町田市立陸上競技場 ホーム側ゴール裏、NTTドコモ歴史展示スクエア、両国 江戸NOREN、びっくりドンキー 光が丘店、矢まと、雲林坊 秋葉原店、明治記念館、山高神代ザクラ、北精進ヶ滝、一の滝、二の滝、道の駅 はくしゅうサントリー白州蒸溜所BAR白州八ヶ岳PA (上り)石川PA (上り)、北海道らーめん 楓 横浜西口店

 ・8月お出かけ
  

横濱家系ラーメン 大岡家、鯛塩そば 灯花、かのん、府中の森芸術劇場 どりーむホールシズラー府中店武蔵府中郵便局、阪神甲子園球場、甲子園歴史館、六人部PA (下り)、由良川PA、宮村駅、金引の滝、天橋立駅、松和物産、天橋立駅前郵便局、天橋立ビューランド リフト・モノレール、飛龍観回廊、KITTE、伊織 / シン・エヒメ、大阪百貨店、KITTE、豚骨らーめん ぼっけもん、幸楽苑 町田木曽店ゆめみ処 おふろの王様 町田店、古書 高原書店、町田市民ホール、ステーキ宮 町田木曽店、spice bistro、海旬処 魚華青銅の鳥居江の島瑞心門江の島エスカー 2区KUA`AINA 片瀬江ノ島店横浜・八景島シーパラダイスシーフードとカレー料理 パーマーストン Palmestonアメリアショッピングセンターららぽーと横浜TOHOシネマズららぽーと横浜(映画:ミッション・インポッシブル Fall Out)富士屋ホテルピコット ロビー店箱根ガラスの森美術館ラ・カンツォーネ、千条の滝、ららぽーと海老名、有隣堂、ハングリータイガー、鎮魂の碑、京橋エドグラン、麺屋 みちしるべ、EXPASA足柄 下り三島スカイウォークスカイウォークコーヒースカイウォークコーヒー山中城跡伊豆フルーツパーク御殿場プレミアム・アウトレットbodum (ボダム) 御殿場プレミアムアウトレット店、和田倉噴水公園、皇居前広場、二重橋、安具楽、東京ドーム、野球殿堂博物館、オークスブックセンター、スエヒロ館 新百合ヶ丘店、玉川学園ゴスペルカフェ、HUB 外苑前店、東部湯の丸SA (下り)、祢津小学校、袮津城山、草笛 上田店、砥石・米山城址櫓門口登山道、砥石城跡、桝形城跡、米山城跡、千古温泉、千古の滝、ハイウェイオアシス ららん藤岡 (道の駅 ららん藤岡)、高坂SA (上り) レストラン、道なか食堂 げんき、CINAGRO、俺流塩らーめん 神楽坂店、安全寺

 ・9月お出かけ
  

東京ステーションギャラリー東京ステーションホテルカメリアKITTE東京国際フォーラムShake Shack蕎麦 AKEBONOYA東京ミッドタウン日比谷boulangerie Bonheur、上等カレー 飯田橋店、筑土八幡神社、神楽坂、板橋天祖神社、ときわ台駅、ジュンク堂書店 池袋本店、小樽食堂 町田広袴店ヨドバシカメラ マルチメディア町田、中華ダイニング貫 (KAN)、町田パリオ(まさるや2018仲秋 日本酒呑んでる会 in 町田)、BOOKOFF SUPER BAZAAR 町田中央通り (本・ソフト館)、創作和食 あおき、福富町パラダイス、草月、syarumu、Hot Spoon 西新宿店、東京都旅券課 (新宿パスポートセンター)、イオンシネマ新百合ヶ丘(映画:ボルグ&マッケンロー)、らーめん 立川や、立川市子ども未来センター、立川まんがぱーく、東京都パスポートセンター 立川分室、オリオン書房、立川市中央図書館、丸善 多摩センター店、蕎肆 穂乃香、隅田川テラス、蔵前橋、駒形橋、株式会社バンダイ 本社、駒形堂、まるごと北海道 雷門物産本舗、雷門、小樽食堂 町田広袴店、片倉つどいの森公園、長女の高校文化祭、赤城高原SA (下り)、道の駅 白沢、十二坐神社、吹割渓谷遊歩道、吹割の滝 第三観瀑台、吹割の滝 第一観瀑台、浮島橋、浮島観世音、日本の滝百選 25『吹割の滝』、鱒飛の滝、滝の駅、沼田市観光案内所、沼田城天守跡、沼田城、利根英霊殿、真田信之.小松姫像、沼田公園 鐘楼、沼田公園の御殿桜、道の駅 みなかみ水紀行館、土合駅、赤城高原SA (上り)、駒寄PA (上り)、石川PA (上り)、四条富小路 麺屋虎杖、丘のまち美瑛、帝国ホテル 東京、珈琲茶館 集 有楽町アネックス店、東京大神宮、Hop-Scotch Craft Beer & Whiskey、ビッグボーイ 黒川店、Tokyo Rice Wine 新百合ヶ丘店、アリオ橋本、水の苑地(県立津久井湖城山公園)、津久井湖記念館、伏馬田城趾、花の苑地(県立津久井湖城山公園)、道の駅 どうし、三島由紀夫文学館、山中湖 文学の森公園、徳富蘇峰記念館、郷土料理 和十郎、忍野村観光案内所、菖蒲池、湧池、銚子池、お釜池、河口湖駅、金鳥居市民公園、道の駅 富士吉田、鐘山の滝、リカーズハセガワ 北口店、晴海郵便局、晴海埠頭、味噌一 三軒茶屋店、上野恩賜公園、西郷隆盛像、誹風柳多留発祥の地、不忍池、東京ディズニーランド

 ・10月お出かけ
  

ずんどう屋 目黒店、大横川親水公園、世界のビール博物館、KUA`AINA、薬師池、久里浜駅、桂寿味、次女の進路先の見学会The Tokyo Dining 東京ライスニッカ ブレンダーズ・バーラウンジ春秋館東京タワー国際ファッションセンターアゼリア 第一ホテル両国両国江戸NORENの土俵、上河内SA (下り)、道の駅 猪苗代、denen cafe、農業体験、富士の湯、空き家てらす 隠れ家、酒家 盃爛処、空山neo、太郎焼総本舗、鶴ヶ城、道の駅 ばんだい 徳一の里きらり、友部SA (上り)、表参道駅、シャングリ・ラ ホテル東京、昭島市役所、エピソードカフェ東京交通会館いしかわ百万石物語 江戸本店Yellow Korner Photography – Art – Limited editionQ CAFE by Royal Garden Cafe湘南平霧降りの滝アリオ橋本Honolulu Coffee、ACADEMIA くまざわ書店、Bull Pulu、世田谷文学館、蘆花恒春園 (蘆花公園)、祖師谷商店街 (ウルトラマン商店街)、駒寄PA (下り)、津久田駅、棚下不動滝、長井坂城跡、永井箱根神社、奥利根うどん本舗、名胡桃城址、ささ郭、後閑駅、道の駅 よしおか温泉、かもすや酒店、ジュンク堂書店 池袋本店、清龍 南池袋店、くさやバー、Craft Beer Market 神田店、広島ブランドショップ TAU、パルテノン多摩SUBWAY 多摩センター店丸善 多摩センター店、Coeur & Heart、コーチャンフォー 若葉台店、羽田空港国際線ターミナル成田空港 第2ターミナルバニラエア チェックインカウンター台湾桃園国際空港 (TPE) (臺灣桃園國際機場)Immigration (護照?驗)National Theater (國家戲劇院)、凱達大飯店 Caesar Metro Taipei、MRT 龍山寺駅 (捷運龍山寺站)、MRT Taipei Main Station (捷運台北車站)、TRA 台北駅 (臺鐵台北車站)、Keelung City (基隆市 Keelung City)、TRA Keelung Station (臺鐵基隆車站 TRA Keelung Station)、基隆西岸旅客碼頭、基隆海洋廣場 Keelung Maritime Plaza、TRA Keelung Station (臺鐵基隆車站 TRA Keelung Station)、台北市 (臺北市)、THSR 台北駅 (高鐵台北站)Q Square (京站時尚廣場)饗食天堂Eslite Bookstore (誠品書店 台北捷運店)MRT Taipei Main Station (捷運台北車站)MRT 龍山寺駅 (捷運龍山寺站)凱達大飯店 Caesar Metro Taipei龍山寺スターバックス (STARBUCKS)臺北市立大學校本部 University of Taipei Main CampusMRT 中正紀念堂駅 (捷運中正紀念堂站)Liberty Square (自由廣場)National Theater (國家戲劇院)中正紀念堂National Concert Hall (國家音樂廳)TRA Wanhua Station (臺鐵萬華車站)TRA 台北駅 (臺鐵台北車站)Taoyuan Metro Taipei Main Station (A1) (桃園機場捷運台北車站)Taoyuan Airport MRT (A12) Airport Terminal 1 Station (桃園機場捷運 A12 機場第一航廈站)Terminal 1 (臺灣桃園國際機場第一航廈)台湾桃園国際空港 (TPE) (臺灣桃園國際機場)Gate B2成田国際空港 (NRT)成田空港 第3ターミナルCafe&Dining N’s court

 ・11月お出かけ
  

麺の坊 砦、駒場公園、旧前田家本邸、籠屋(秋元酒店)、薬師池公園、リカーポート 蔵家、町田市 大賀藕絲館、町田リサイクル文化センター、小山田神社、舎鈴 飯田橋駅前店、ハタフラワー、梅の花 町田店、せんや、新宿みやざき館 KONNE、餃子会館 磐梯山 両国店、とり家 ゑび寿 両国店、駒八 目黒さんまセンター、六本木ヒルズアリーナ、TOHOシネマズ 六本木ヒルズ(映画:ボヘミアン・ラプソディ)、鎌倉パスタ、鶴ヶ峰駅 (SO09)、鎧橋跡、鎧の渡し緑道、首塚 (畠山重忠公)、畠山重忠古戦場跡、畠山重忠古戦場跡、六ツ塚、すずり石水跡、鶴ヶ峰神社、駕籠塚、得得 横浜鶴ヶ峰店、驚神社、和菓子紀文堂、四季芸術センター、麺屋 一寸星、你好 ニイハオ 渋谷店、オールドヒッコリー 町田境川、やきとり居酒屋 山家 本店、次女の進路先、ベルサール高田馬場、はつ花そば 本店、酒岳堂 井島商店、はこね 和菓子 菜の花酒岳堂 井島商店、箱根観光物産館、鈴廣のかまぼこみつき DELI&CAFé TERRACEベーカリー&デリカテッセン 箱根カフェ箱根の市、麺屋すみす、神宮外苑いちょう並木、多摩丘陵パノラマの丘、防人見返りの峠 展望台、コーチャンフォー 若葉台店、東京都庁 第一本庁舎、ブックファースト 新宿店、技術者友人宅

 ・12月お出かけ
  

自然食バイキング はーべすとヨドバシカメラ マルチメディア町田町田マルイ、薬師池、Cut Let Me、築地本願寺、マルイアネックス イベントスペース、讃岐うどん かいと、野津田神社、民権の森、七国山 鎌倉街道の碑、七国山、野津田薬師堂、よみうりランド、スエヒロ館 新百合ヶ丘店、極鶏Bar 下北沢店、エリックサウス、麺 TOKITA、警察博物館、香川・愛媛せとうち旬彩館、春水堂ラフォーレ原宿FURFUR東郷神社コロンバン原宿本店、麺屋三男坊、中澤酒造株式会社、麺屋 海神、慶華飯店、横浜赤レンガ倉庫、JICA横浜国際センター、信濃屋 目黒店、酒舗 まさるや、すし屋 銀蔵 鶴川店まちの駅 ぽっぽ町田ぐりーんうぉーく多摩、きさらぎ、Classy’s Bar、暖暮 川崎仲見世通店、麺や維新、自転車文化センター、JR 東北新幹線 大宮駅山形新幹線 かみのやま温泉駅かみのやま温泉観光案内所上山十日町郵便局上山城菓子司 十五屋本店上山市役所葉山館、わくわくコマレオ 上山店、春雨庵、葉山館かみのやま温泉観光案内所山形新幹線 かみのやま温泉駅楢下宿 丹野こんにゃく番所HATAKE CafeHATAKE Cafe トマト上山店ファーマーズマーケットトマト 上山店、愛染神社、齋藤茂吉記念館、上山旭町郵便局、ぐっと山形 (山形県観光物産会館)、上山城、菓子司 十五屋本店かみのやま温泉駅JR 東北新幹線 大宮駅、鴨川、六道珍皇寺、京都霊山護國神社、パール博士顕彰碑、桂小五郎・幾松墓所、坂本龍馬の墓、幕末維新ミュージアム霊山歴史館、御陵衛士屯所跡、八坂神社、知恩院 三門、青蓮院門跡、岡崎・市電コンシェルジュ、岡崎別院(親鸞聖人岡崎草庵跡)、光雲寺、哲学の道、法然院、慈照寺 (銀閣寺)、まつばや、哲学の道、京都大学

§ 家族のお出かけ 目次 家族で出かけたのは、上の年表で黄地に太字にしているイベントです。「浅草(1月)」や「沖縄(3月)」「相模原麻溝公園(4月)」「こんにゃくパーク(4月)」「赤坂(5月)」「八景島(8月)」「箱根(8月)」「三島(8月)」「東京ディズニーランド(9月)」「山形(12月)」。満足できる一年になったと思います。来年もどこかに出かけようと考えています。

§ 妻とのお出かけ 目次 妻と出かけたのは、上の年表で桃地に太字にしているイベントです。なんかかんだといって、結構節目節目には二人で過ごせているようです。今年は臺灣を一緒に訪れたのが思い出深いです。いくつかBarにも訪れたり、八景島シーパラダイスにも二人で行きました。あとは音楽と舞台と映画でしょうか。一緒にいくつも観て体験していますね。夫婦ともにこれだけ忙しくても、時間をやりくりしてこれだけ出来ていれば、来年もやれそうな気がします。

§ 娘たちとのお出かけ 目次 娘たちと3人で出かけたのは、上の年表で緑字に太字にしているイベントです。一緒にご飯を食いに行くぐらいしかいけませんでした。娘たちもそれぞれ友達と出かけたり家にこもったり。特に次女は明らかについてこなくなりました。彼氏や友達との時間を優先する年ごろになった。そういうことです。私としてはワンパターンなお出かけよりも、経験でめずらしい経験をさせてやりたい、と思うのですが、私の時間もなくなっており、近所であればもはやそういう経験はさせてあげられません。ですが、来年も断られることを覚悟で、誘ってみようと思います。

§ 妻とどちらか娘とのお出かけ 目次 妻とどちらかの娘の3人で出かけたのは、上の年表で水色地に太字にしているイベントです。長女は比較的よくついてきました。が、逆に次女だけが付いてくることはほとんどありませんでした。

§ 長女とのお出かけ 目次 僅かではありましたが、いくつか訪れています。そのうち一つは長女の高校の文化祭に私一人で出かけることになり、しばらく長女と行動を共にしました。年ごろのためか潔癖感が増していますが、私に対しての棘は峠を越した気がします。私がそう思っているだけかもしれませんが。

§ 次女とのお出かけ 目次 部活に忙しく、なかなか一緒にはいかれませんでしたが、それでもいくつかの場所を父娘二人で訪れています。そのうち一つは二人で回転すしを訪れて大いに語りました。次女は親あしらいがうまいので、時間さえあえば来年もついて来てくれそうです。

●私自身の一年(交友関係)
§ 関西の交流関係 目次 今年は、3月にまとまった日程をとって帰りました。四泊五日の日程でしたが、高校の友人たちと、大学の友人たちと飲み遊び、一昨年からご縁を結んだ方々とも飲み、打ち合わせも挟み。私が苦しんでいた時期に知り合った師匠と梅田のバーで呑み、今までFacebookだけのつながりだった方ともお会いし。かなり濃密な時間を過ごしました。ありがとうございました。
7月には中学の頃からの友人が上京し、共に呑みました。その場でイカ釣りに誘われ、8/6にはそのために帰りました。が、高波でイカ釣りが中止となり、再計画した日も友人が仕事で断念しました。これはぜひ来年やりたいと思っています。年末になって年賀状を書きながら、SNSをやっていない友人たちとのご縁をまた復活させたいと思いました。

§ YKGの交流 目次 今年もまた、鉄道や城巡りといった旅を愛する友人二人と、砥石城を中心に武田氏に関する城巡りを行いました。さらに畠山重忠に関する史跡めぐりも行いました。来年、またともに旅ができればうれしいです。

§ 一年の交流 目次 今年は、前半は3月の関西以外は低調でした。が、ゴールデンウィークのサッカー観戦から、関西大学での知ル活など、徐々に交流を活発にしました。一つ目のピークは6月に10数人のパーティーで訪れた一泊の尾瀬旅行です。仕事でもほうぼうに一人で飛び込んで行き、徐々に外交的な自分を取り戻していきました。下に書く酒関係のイベントでは様々な方と楽しい時間を過ごしました。パクチー三昧の時間を過ごしたこともうれしい。魂友とは三回会い、そのうち一度はご自宅でお母さまともお会いしました。どれもが今年の特筆すべきイベントです。また、会津への旅は今年の5本の指に入る素晴らしい旅でした。見ず知らずの方々と民泊で出会い、話に花を咲かせる。その素晴らしい経験は、人生万歳と言いたくなるほど。また、年末にはいのしし鍋のイベントにもお誘いをいただき、絶品の鍋を囲んで楽しい時間を過ごしました。他にも書いていませんが色々なイベントにお誘い頂きました。ありがとうございました。

§ 地元の交流 目次 一方、今住んでいる地元の友人との時間はほとんどとれませんでした。ですが、昨年末から参加しているゆるいランチの会には二度参加しています。仕事を抜きにした語らいの場としてとても重宝しています。下半期は私が忙しくて伺えなかったのですが、代わりに妻が何度も参加させてもらっています。私も来年は参加したい。あと、自治会には仕事でかなり携わりました。来年もそうしたご縁を活かしていきたいです。最後に、年の瀬になって娘たちが学童でお世話になっていた指導員の先生の訃報が入ってきました。まだ若いのに残念でなりません。いい人ほど早く世を去っていく。

●私自身の一年(文化活動)
§ 読書・観劇レビュー 目次 読んだ本のレビューを記す読ん読ブログの執筆は、主に2017年に読んだ104冊分となりました。レビュー執筆は、私の中では大切なライフワークとして位置付けています。ただ、仕事を優先する関係上、どうしてもアップは後回しになっています。それでも読んでからアップするまでの日数を10カ月に縮めました。この期間を質を落とさずにさらに早めるのが去年に引き続いての課題です。舞台観劇と映画鑑賞のレビューについては、遅れずに書けているのですが。書くという行為への熱意は衰えていませんので、引き続き続けていくつもりです。

§ 今年の読書 目次 読書については、今年は94冊読みました。また、ジャンルを問わずの乱読傾向は相変わらずです。94冊についてそれぞれに思い入れは深く、その中のベストを選ぶといったおこがましいことはしません。ですが、今年は年末になってようやく坂の上の雲全巻を読み通せました。また、今年は三人の文人の展示会を訪問しました。「三島由紀夫博物館」「徳富蘇峰記念館」「世田谷文学館(筒井康隆展)」どれもがとても刺激になりました。

§ 今年の映画 目次 映画鑑賞については、今年は8本観劇しました。
DESTINY 鎌倉ものがたり」「スター・ウォーズ/最後のジェダイ 」「The Greatest Showman」「The Greatest Showman」「ハン・ソロ スター・ウォーズ・ストーリー」「ミッション:インポッシブル フォールアウト」「ボルグ / マッケンロー 氷の男と炎の男」「ボヘミアン・ラプソディー」。
観たかったのに見れなかった映画もたくさんあります。ですが、私の持ち時間の少なさからみて、よく見たほうだと思います。今年は大河ドラマの「西郷どん」を妻が観たいというので一緒に観ていましたが、やはりというか、ほとんどの回を見逃してしまっています。

§ 今年の舞台 目次 舞台については、今年度は3本の鑑賞でした。詳細は当ページの「目下の舞台鑑賞」を観てもらえればと思います。3本いずれも素晴らしい内容でした。ただ、私の中で宝塚歌劇の運営方針に重大な不満があり、妻には「見たくない」と言ったことを実践。下半期は観劇していません。その一方で、劇団四季を創立した浅利慶太氏が亡くなられました。かつて劇団四季に勤めていた友人の山下さんにお誘いいただき、浅利慶太お別れの会に参列しました(9/18)。そこで配布された故人の演劇論や略歴が書かれたパンフレットを読み、改めて浅利慶太氏と劇団四季に興味を持ち、その後すぐに「劇団四季と浅利慶太」も読みました。そして四季と宝塚との運営方針の違いを感じました。私は四季の方を支持したい。とはいえ、来年は観劇や寄席も観たいと思っています。

§ 今年の音楽 目次 昨年は何回もコンサートに行きましたが、今年は6月に東京国際フォーラムで観た「The Show Stopper」だけ。次女が中学で吹奏楽部を全うし、三年間で賞は一度も取れなかったけれど、何かをまっとうしてくれたのは良い思い出です。次女の発表会や演奏会、合唱コンクールは何度か訪れたので音楽体験は得られたと思います。長女が入っている高校の吹奏楽部は全国屈指の実力を持っていることから、長女と次女を連れて府中の芸術の森に定期演奏会を聴きに行きました。カラオケは二回。3月に友人たちと三宮で、11月には秘密基地で大いに歌いました。また、初夏の一日だけ、ウクレレを引っ張り出して爪弾いたりもしました、が続かず。

§ 今年の美術 目次 美術については、昨年と同じく今年もさっぱりでした。でも、長女の学外展や文化祭などデザインや美術には触れる機会が多数ありました。また、娘の進学先が美術デザイン系の専門学校に決まり、その学校見学にも訪れました(5月)。またその学校の校長先生のスコットランドの写真展にも訪れ、旅の乾きを潤しました(10月)。また富士フォトギャラリー銀座での写真展にもお招きされ、山の写真に見ほれました(5月)。舘野鴻の原画展(7月)では昆虫の精密画にも惹かれました。また、2月に妻と訪れた根津美術館の「墨と金展」は良かった。最近書の世界に関心を持っており、新宿の世界堂で水で書道ができるセット一式を買い(5月)、弊社の毎月のまとめの画像を書いた暦で表していました。筆がダメになったので霜月、師走が書けませんでしたが。

§ 今年のスポーツ 目次 スポーツについては、正直なところ全く低調でした。スキーもソフトボールもテニスもマラソンもやらず。それは2月ごろから腰痛に悩まされていたからです。ただ、アウトドアが皆無だったかというとそうでもなく。特に六月に訪れた一泊二日の尾瀬の旅は今年のハイライトの一つです。十数人のパーティーの一員としてみた至仏山と燧ケ岳、尾瀬沼の朝から夜までの景色は素晴らしかった。アウトドアを満喫しました。ただ、見るだけで日本百名山登頂ができなかったのは無念です。妻子と町田市最高峰の草戸山は登頂しました。また、滝はたくさん巡りました。それらはスポーツといえそうです。早戸大滝に行こうとしてあわや遭難しかけたり。
ただ、今年はソチオリンピックがあり、ロシアW杯があり、卓球選手たちの活躍やテニスの大坂、錦織両選手の活躍など、観戦しているだけで満足の一年でした。大リーグの大谷選手の大活躍も忘れられません。イチロー選手がついに選手登録から外れたという残念な出来事もありました。スポーツ観戦は今年は三度。五月に等々力スタジアムで多摩川ダービー「川崎フロンターレ VS 東京FC」を数人で観戦し、八月に町田陸上競技場でFC町田ゼルビアvs京都パープルサンガの試合を観戦しました。三月には甲子園球場で阪神vsDeNaのオープン戦を父と。夏の甲子園も初日の第四試合を場外で聞きました。なお、弊社が町田FCゼルビアのサポーターになったのも今年です。あと、次女がたまに習いにいっているカポエイラのレッスンに一度ついていき、赤坂でのCapoeira Batieque Japaoの興奮を目撃。長女が立派にバレエの発表会を勤め上げたのも良い思い出です。最後に忘れてはならないのは伊勢ヶ濱部屋とのご縁です。後援会会長とご縁があり、ちゃんこ会や初場所打ち上げ式に御呼ばれしました。相撲観戦はしていませんが、これも立派な相撲文化の吸収でしょう。

§ 今年の滝 目次 今年は日本の滝百選の滝を8カ所訪れる目標を立てていました。結果、再訪を含めると7か所を訪れる事ができました。「轟九十九滝」「仙娥滝」「白糸の滝」「北精進ヶ滝」「金引の滝」「吹割の滝」「棚下不動滝」。どれもが百選にふさわしい名瀑です。もちろん、それ以外の滝でも印象に残る滝はたくさんありました。以下は今年訪れた滝です。「塩川滝(2/18)」「轟九十九滝(3/4)」「轟本滝(3/4)」「二重の滝(3/4)」「横見の滝(3/4)」「舟形滝(3/4)」「丸渕滝(3/4)」「鳥返しの滝(3/4)」「鍋割りの滝(3/4)」「仙娥滝(4/30)」「大滝(4/30)」「仙娥滝(4/30)」「エビラ沢の滝(5/6)」「白糸の滝(5/20)」「音止の滝(5/20)」「ヌル沢奥の滝(6/3)」「雄飛の滝(6/17)」「一の滝(魚止めの滝)(7/29)」「二の滝(初見の滝)(7/29)」「北精進ヶ滝(7/29)」「金引の滝(8/6)」「臥龍の滝(8/6)」「白滝(8/6)」「千条の滝(8/15)」「千古の滝(8/25)」「吹割の滝 第一観瀑台(9/16)」「鱒飛の滝(9/16)」「鐘山の滝(9/24)」「霧降りの滝(10/14)」「棚下不動滝(10/21)」。また、今年の滝巡りで忘れてはならないのが、早戸大滝にアタックした時の経験です。路肩の土盛りに車を乗り上げ、横に停まっていた車の方々に里まで送ってもらい、数時間JAFを待ち、JAFの方に復旧していただいた後、夕方近くになってから一人でアタックしたところ、滝を目前にして腰痛でダウンし、帰り道は夕立に遭い、増水した川で帰り路を見失いかけ、あわや遭難するところでした。

§ 今年の旅行 目次 今年は、今までの人生でも納得できる旅行ができました。家族で沖縄(3月)、山形上山(12月)に訪れ、海のきれいさと雪の美しさを味わいました。夫婦で臺灣(10月)に訪れたのは、私にとって十数年ぶりの海外、23年ぶりの臺灣ということがあって思い出も深いです。昨年一人で訪れた沖縄では16,7ぶりにお会いした方と、今回は双方の家族総出でお会いしました。奥様とは17,8年ぶりの再会。また、10数人のパーティーで訪れた尾瀬(6月)は景色が素晴らしく、朝昼夜で多彩な景色を見せてくれる自然のすばらしさに感動しました。あと四人で訪れた会津旅行も会津の方々にたくさん出会え、会津の方々の郷土愛に感動しました。無農薬栽培のお手伝いを通して、どれだけ無農薬が大変で、どれだけ産物が美味しいかについても知見をいただきました。この旅行では島根の方とも知り合えたのが、旅人同士の縁の嬉しさを感じた人時でした。一人でも鹿嶋に車中泊で向かい、鹿嶋神宮やアントラーズ、塚原卜伝関連の地を訪れ、旅を満喫しました。皆様ありがとうございました。

§ 今年の駅鉄 目次 趣味の駅巡りは36駅。昨年の倍以上に行きました。「香櫨園駅(1/1)」「相武台下駅(2/18)」「芦原町駅(3/3)」「木津川駅(3/3)」「辺川駅(3/4)」「海部駅(3/4)」「宍喰駅(3/4)」「甲浦駅(3/4)」「公津の杜駅(3/20)」「県庁前駅(3/28)」「中川駅(4/10)」「沼久保駅(5/20)」「甲斐常葉駅(5/20)」「身延駅(5/20)」「大佐倉駅(5/24)」「荏原町駅(6/27)」「鬼子母神前停留場(7/13)」「鉾田駅(7/15)」「北浦湖畔駅(7/15)」「鹿島灘駅(7/15)」「鹿島大野駅(7/15)」「長者ヶ浜潮騒はまなす公園前駅(7/15)」「荒野台駅(7/15)」「鹿嶋サッカースタジアム駅(7/15)」「延方駅(7/15)」「宮村駅(8/6)」「天橋立駅(8/6)」「ときわ台駅(9/6)」「土合駅(9/16)」「河口湖駅(9/24)」「久里浜駅(10/5)」「津久田駅(10/21)」「後閑駅(10/21)」「基隆駅(10/28)」「新松田駅(12/18)」「かみのやま温泉駅(12/27)」。それぞれに周囲の光景と共に興味深い駅たちでした。ただ、これらの駅で撮った写真をまとめてブログにアップするにはまだ時間がかかりそうです。

§ 今年の酒楽 目次 今年は私の酒履歴に欠かせない一年となりました。
まずは日本酒。今年は日本酒の魅力の深さを知った一年です。それは六月に尾瀬を一緒に旅した小宮さんとのご縁からつながりました。小宮さんのお陰で日本酒の奥深い世界を教えていただきました。「まさるや2018仲秋 日本酒呑んでる会in町田(9月)」「Tokyo Rice Wine 日本酒の会(9月)」「酒家 盃爛処(10月)」「かもすや酒店(10月)新政呑みくらべ」「中澤酒造株式会社(12月)」。感謝です。あとパートナー企業の社長様が日本酒に詳しく、今年は5回ほどご一緒に盃を傾けました。私がちょくちょく日本酒を買って帰るものだから、妻が年末の山形旅行でお酒を買ってくれました。なかなかの美酒のようで楽しみです。今年訪れた酒蔵は二カ所。「富士高砂酒造(5/20)」「中澤酒造(12/18)」。来年もほうぼうを訪れる予感がします。
続いてウイスキー。妻がウイスキー好きになってくれたので、今年は二人+αでいくつかお店を巡りました。「Tokyo Whisky Library(2月)」「ニッカ ブレンダーズ バー(10月)」「スコットランド写真展(10月)」。真ん中のは別のご夫婦とも一緒に伺い、交流を深めました。最後のは娘が来年からお世話になる学校の校長先生が開いた写真展。ここではHighland Parkが40年も含めた3種類、樽でご用意されており、ウイスキー好きには楽園。相当飲みました。また、今年はWhisky Festival in Tokyoに初参戦したことも書かせません。3人で訪れたのですが、何種類呑んだのか覚えていないくらい美酒を飲みまくりました。至福の時でした。Whiskyについては「Bar Harbour Inn(3月)」も欠かせません。ここで飲ませてもらった11年もののBowmoreの美味さ!私にとってこのお店はずっと通う店であり続けるでしょう。また何人かで訪れたお店として「Bar 羽月(4月)」で飲んだ燻酒の美味さはその前の花見でMiltonduffを相当呑んだ後ですが印象に残っています。「Corn Valley澁谷店(5月)」もそう。魂友とふらっと訪れた「草月(9月)」もまた訪れたいバーです。また、一人で訪れた六本木ヒルズアリーナのGlenMorangeイベント(11月)はオレンジに統一された色調や味と共に今でも思い出すとほろ酔いできます。「籠屋(秋元酒店)(2月)」で飲んだイチローズモルトの秩父のIPAカスクには衝撃を受けました。今年訪れた蒸留所は「白州蒸留所(7/29)」。来年こそはクラフトウイスキーや宮城峡を訪れたいものです。できればKAVALANも。
続いて焼酎。沖縄旅行の時に妻と訪れた「ぱいかじ 国際通り店(3月)」では、泡盛を心置きなく飲めました。泡盛はまだまだ深く、極めたいと思っています。魂友と訪れた「玉ちゃん亭(5月)」でも泡盛をたくさんいただきました。池袋の「くさやばー(10月)」で飲んだ情ヶ嶋は麦と芋ともに衝撃の味わいでした。青酎も。情ヶ島の麦はその後ボトルで購入したぐらい惚れ込みました。
続いてビール。今年も各地のクラフトビールを呑み歩きました。CarftBeerを扱うお店が増えてきたのでうれしい限りです。ビールについてはほとんどが一人のみ。私にとっては短時間でさっと飲むときに重宝する酒になりました。
続いてハイボール。これは「極鶏Bar下北沢(8月)(12月)」以外ありません。12月に訪れた際は絶品のイノシシ鍋をつつかせてもらいました。これがハイボールによく合っていて完璧でした。
続いてワイン。今年は「ワイン&グルメ ジャパン2018(4月)」につきます。四名で会場を巡りました。去年からワインのおいしさにも目覚めており、ここで飲んだワインが絶品でした。日本のワインもすごいのです。また、先にも書いた「 Tokyo Rice Wine 日本酒の会(9月) 」では日本酒酵母で醸したワインをいただきました。さらに一人のみですが「富士の国 やまなし館」でも山梨産のワインに喉を潤しました。
最後にカクテル。私がカクテルをBarで頼むことはほとんどないのですが、どれも妻と訪れたバーで飲みました。「Stella Lounge(1月)」「カメリア(9月)」。後者は東京駅内にあるバーで、旅情を思わせるカクテルが印象的です。あと、忘れてはいけないのが「アジアンフード バー バグース(4月)」で飲んだパクチーモヒートです。4名で訪れてパクチーを食べまくりましたが、モヒートも美味しかった。
今年もほうぼうに商談に赴いたこともあって、毎月の独りのみは出来たと思っています。「籠屋(秋元酒店)(2月・狛江)」「BrewDog Roppongi(4月・六本木)」「富士の国 やまなし館(4月・日本橋)」「Craft Beer Moon Light 本店(5月・川崎登戸)」「地ビール厨房 COPA 町田店(6月・町田)」「イングリッシュパブ トラファルガー(7月・町田)」「京橋エドグラン(8月・東京京橋)」「Hop-Scotch Craft Beer & Whiskey(9月・飯田橋)」「世界のビール博物館(10月・押上)」「六本木ヒルズアリーナ(11月・六本木)」「Classy’s Bar(12月・川崎)」。
結局呑みの回数は年間で70回でした。大体5日に1度。呑みは週一度に抑えたいと思っていたので結果的に実現できて良かったです。

§ 今年のその他活動 目次 人生も半分を過ぎ、まだ焦りが募っています。少しでも日々に変化をつけようとする気持ちに衰えは見えません。
・一昨年に二枚、昨年に五枚ゲットしたマンホールカードの収集。今年は九枚入手しました。兵庫県西宮市(3/2)、大阪府大阪市(3/5)、神奈川県川崎市(4/20)、群馬県藤岡市(4/29)、茨城県鹿嶋市(7/15)、東京都立川市(9/12)、群馬県沼田市(9/16)、東京都昭島市(10/11)、山形県上山市(12/27)。来年も折を見て各地でゲットしようと思っています。
・ダムカードも一枚いただきました。城山ダム(9/23)です。
・風景印も三つ。「天橋立駅前郵便局(8/6)」「上山十日町郵便局(12/27)」「上山旭町郵便局(12/28)」。
・灯台も二カ所回っています。「伊計島灯台(3/28)」「鹿嶋灯台(7/15)」。来年は灯台巡りもしたいと思っています。
・旅先で訪れた資料館・博物館・美術館では勉強しました。「根津美術館(2/11)」「大阪人権博物館(リバティおおさか)(3/3)」「尾崎咢堂記念館(5/6)」「NTTドコモ歴史展示スクエア(7/26)」「甲子園歴史館(8/5)」「野球殿堂博物館(8/21)」「三島由紀夫文学館(9/24)」「徳富蘇峰記念館(9/24)」「世田谷文学館(10/16)」「旧前田家本邸(11/2)」「幕末維新ミュージアム霊山歴史館(12/30)」。
・城もあちこち訪れました。「勝連城跡(3/28)」「枡形城(5/5)」「大手門(5/11)」「本佐倉城跡(5/24)」「鹿島城山公園(7/15)」「山中城跡(8/19)」「祢津城山(8/25)」「砥石城跡(8/25)」「桝形城跡(8/25)」「米山城跡(8/25)」「沼田城(9/16)」「伏馬田城趾(9/23)」「鶴ヶ城(10/9)」「長井坂城跡(10/21)」「名胡桃城址(10/21)」「上山城(12/27)」。こうしたデータは上にも書いたkintone Advent Calendarの中で再集計してみました。
・訪れた神社は以下の通り。「白山姫神社(1/1)」「西宮神社(1/2) 」「毘沙門天堂(2/10) 」「塩川神社(2/18) 」「浪速神社(3/3) 」「相州春日神社(3/22) 」「稲毛神社(4/20) 」「野津田神社(4/22) 」「琴平神社(5/14) 」「富士山本宮浅間大社(5/20) 」「将門口ノ宮神社(5/24) 」「成田山 咤枳尼天堂 (出世稲荷)(6/17) 」「旗岡八幡神社(6/27) 」「雑司ヶ谷 鬼子母神 (鬼子母神堂)(7/13) 」「鹿島神宮(7/14)(7/15) 」「鎌足神社(7/15) 」「江の島弁天(8/11) 」「筑土八幡神社(9/5) 」「板橋天祖神社(9/6) 」「十二坐神社(9/16) 」「東京大神宮(9/19) 」「永井箱根神社(10/21) 」「 鶴ヶ峰神社(11/18) 」「驚神社(11/18) 」「野津田神社(12/9) 」「東郷神社(12/16) 」「京都霊山護國神社(12/30) 」「八坂神社(12/30) 」。今年から神社でお参りする度、口で願いを述べ、「努力します」を三回繰り返しています。ただ漠然と願うだけでは自分の思い描く未来は送れないからです。
・訪れた寺は以下の通り。「神呪寺(1/1)」「成田山 新勝寺(6/17)」「根本寺(7/15)」「東陽寺(7/22)」「安全寺(8/31)」「龍山寺(10/29)」「野津田薬師堂(12/9)」「青蓮院門跡(12/30)」「岡崎別院(12/30)」「法然院(12/30)」。お寺も実は本堂の中に入ると面白い。地元の野津田薬師堂には初めて中に入らせてもらいました。臺灣で訪れた龍山寺も地元に密着した様子がたまりませんでした。また、年末に訪れた京都の諸寺では、深く学ばせてもらいました。
・登った山は四つ。「草戸山(4/8)」「桝形山(5/5)」「祢津城山(8/25)」「七国山(12/9)」どれもが低い山です。砥石城も山ですがそちらのほうが急でした。来年は腰を直して百名山に登りたい。
・名木は二カ所。「鬼子母神の公孫樹(7/13)」「山高神代ザクラ(7/29)」。さくらは日本各地に観に行きたいです。
・名水は二カ所。「神田川(5/20)」「益栄の水(12/28)」。前者は平成の名水百選に選ばれています。こうした場所にも訪れていきたい。
・ビーチは二カ所。「エメラルドビーチ(3/27)」「大泊ビーチ(3/28)」。ともに沖縄で訪れた美しすぎる場所。心が洗われるとはこのことです。
私がまだ訪れていない場所の多さにめまいがします。他の活動もまだまだやりたいことがいっぱいあったのですがとても時間がありませんでした。
それぞれの場所で俳句も読みました。数年前から興が乗るたびに読んでいましたが、振り返ってみると今年も結構な数を詠んでいます。そうした訪問記が私にとって何なのかの考察は、年末に「SNSとはライフログツール」として表しました。
ライフログについては上記ブログにも書きましたが、年初から6月ごろまで盛んにGoogle Mapでロケーション情報や口コミを投稿していました。それが評価されたのかランクが次々とあがり、10月にサンフランシスコで行われる世界規模のGoogle Mapイベントに招待されました。英語の動画PRができずに断念したのが心残りです。英語も勉強しなければ。

あらためて「公」「私」を振り返ってみました。今年は冒頭に書いた通り、満足度は高いです。良い一年だったと思います。あとはムラを生じさせる原因を来年どう防いでいくかですね。特にムラ、が重要になりそうです。後1日、今年を無事に締めくくり、来年へと繋げようと思います。


EBISU Tech Night Vol.5にて登壇しました


昨日、EBISU Tech Night Vol.5 で登壇を求められ、喋ってきました。
お題は「kintone + MONACAでモバイルアプリ開発!」
まあ、タイトルはストレートです。

EBISU Tech NightはAWSやcybozu.comの凄腕技術者が集うイベントです。今まで私はVol.2でも、Vol.4でも登壇の機会をいただきました。今回が三度目です。

今回はモバイルアプリ開発というお題で挑んでみました。AWSやcybozu.comを主戦場とする技術者とはいえ、ほとんどの方が開発するシステムはPCで使用するシステムのはず。モバイルアプリはあまり経験されていないのでは。そんな予測で臨んだ今回でしたが、冒頭で「MONACAを知っているでしょうか」と三十名程の聴衆者に伺ってみたところ、ご存じなのはお一人だけでした。手を挙げなかった方を含めても一割ほどの認知でしょうか。この分野でメジャーなXamarinを例に挙げたとしても同じ程度だったかもしれません。

モバイルアプリ開発への認知度がその程度とはいえ、今後もモバイルアプリが求められる確度はかなり高い。これに異をとなえる方はそうはいないはず。モバイルの処理能力が飛躍的に向上した今、PCのアプリに対し優位に立てるのは画面の大きさと、複数アプリの同時表示という点ぐらい。

ところがモバイル開発は技術者にとって鬼門でした。少なくとも私には。かつてのフィーチャーフォンでどれぐらい苦労したか。それこそが環境差異。かつてのフィーチャーフォンが廃れてしまった一因には、キャリアごとに開発環境や言語が違ったため、アプリの開発工数がかかった事情も無視できないと思います。そして今もまた「iOS」と「Android」の間でシェアを巡る争いとバージョンアップによる無数の環境が生まれています。

わたしはこうした環境差異を吸収するために費やす時間は無駄だと考えています。もっと機能そのものをビジネスにフィットさせるべきだろうと。そのためにもMONACAのような簡単に環境の差を乗り越えてアプリをビルドするツールはもっと世に知られるべきだと。

今回はkintoneから取得したデータを元にアプリの画面を描画し、最後はkintoneにデータを書き込むところまでお見せしました。モバイルアプリのデータベースは、Local StorageやSession StorageやWeb SQLやIndexed DBやSQLiteが主流です。が、kintoneを使うことで、データベース周りが簡単に作りこめます。kintoneに加え、なおかつモバイルアプリも簡単に作れる。私が示したかったこととはそれです。

そうした意図で語った一部始終、どこまで皆さんに伝わったかはともかく、環境の差異を回避する策の一環として伝わったのであればひとまずは成功です。惜しむべきは、笑いを織り込むまでにスライドを練られずに壇上に上がったことでしょうか。

来年も引き続きEBISU Tech Nightは行われるとか。すでに司会の方から四回目の登壇のご依頼もいただきました。引き続き精進しつつ、皆さんを引き付けられるような登壇を目指します。

スライド


ライフログのkintone盛り alasql仕込みのGoogle Chart添え


1.読まなくてもいい献立の前書き

  目次へ↓

唐突ですが皆さん、ライフログって言葉覚えてますか? 何!忘れた? そんな言葉あったっけ?

それならば説明しましょう!システムが行った作業の結果がログ。ウェブ上にログを残すからウェブログ。略してブログ。そして、人生のイベントを記録するのがライフログ。今やこの言葉は、数多くの新語とともにハードディスクの肥やしと成り果てています。

ところが、まだ忘れるのは早い!という訳で、kintoneでライフログです。

このライフログという概念は2000年代の初め頃に産声をあげていたといいます。ITジャーナリストの佐々木俊尚氏は、2010年の秋に発表した『キュレーションの時代』の中でライフログの概念は2010年代の間にはまだ根付かないだろう、と的確に予言されています。なぜなら、日本にはプライバシーの公開に気持ち悪さを持つ人が大多数だから、と。つまり、ライフログとはまだこれからの概念なのです。佐々木氏はその本の中で、ライフログを集めるツールとしてFourSquare_logoをプッシュしています。このFourSquare_logoですが、ある時期に仕様が迷走したこともあって日本ではすっかり影を潜めてしまいました。ですが、海外では位置とモノを関連付けたデータをがっちり握った企業として存在感を保っているようです。FourSquare_logoとは、一言でいうと訪問場所でチェックインすることで自分がいつどこにいたかを後世の自分、またはどこかの物好きのために記録しておくツールです。それはまさにライフログ。なお『キュレーションの時代』はかつて弊社のブログでも取り上げています。

kintoneは言うまでもなく優れたプラットホームサービスですし、仕事の改善にはテキメンに効きます。それはもう間違いない。でも、プライベートな使い方だってできるのですよ。ワークライフバランスを充実させるにはプライベートでもkintoneを使い倒したほうがいいと思いませんかみなさん!?

私にとって幸いなことにkintoneFourSquare_logoの連携事例はウェブにほぼ皆無です。そこは青い大海原、ブルーオーシャン!というわけでささやかですが、連携事例を公開したいと思います。あわせて、これもkintoneとの連携事例が極めて少ないGoogle Chartと絡めて。題して「ライフログのkintone盛り alasql仕込みのGoogle Chart添え」

2.ご用意いただく材料

  目次へ↑

ちなみにこのレシピの内容を再現せんと志す奇特な方は、以下のものをご用意ください。

  • FourSquare_logoのアカウント(チェックイン用のアプリSwarm_logoも忘れずに)
  • kintoneのスタンダードプラン
  • phpが動き、cronが実行できるサーバー(レンタルサーバーでも可)
  • Google Maps Platform上で動くライブラリを呼び出すためのAPI KEYの入手。こちらをご参考に

このレシピは2018年12月時点の「さくらのレンタルサーバー スタンダード」(phpは7.2.10(CGI版))で動作することを確認しております。
また、Google Maps Platformで動くAPIについては、月あたり40000リクエストまでが無料枠内だそうです。このレシピはプライベート利用なので、そこまでいかないことを念頭においています。
ちなみに、みんな大好き「zapier」でも、Swarm_logoでチェックインする度にkintoneに新たなレコードを追加できます。が、それをいっちゃぁおしめえよ、ということでお付き合いいただければ幸いです。
このレシピは一日単位でkintoneにライフログを一括で登録することに意義を持たせています。そして激動の一日を振り返りつつ、自分をねぎらいたい、そして昨日を忘れ去りたい「あ・な・た」の味方になることも!

なお、いうまでもなく、ライフログはみだりに公開するものではありませんぞ。このレシピのせいであなたのデイリーライフに何か問題が起こっても責任は取れませんのであしからず〜

3.献立の出来上がりイメージとレシピ

  目次へ↑

FourSquare_logoはAPIがOAUTH付きで公開されています。なので私の策略はこうです。まず、午前0時を過ぎたあたりでFourSquare_logoの前日分のチェックインデータをkintoneにシュっと放り込んでやろう。そして溜まったデータをウヒャヒャと一覧で眺めてみよう。ついでに今年、どんぐらい国や県を訪れたんやろう、と地図に出して一人ニヤけて悦にいる。うーん、ダークロースト。

まずは着地点をお見せします。上が世界の長井。下が日本の長井です。

世界の中心で長井を晒す

日本の中心で長井を晒す

ともにkintoneのカスタマイズビューではなく通常の一覧を使って長井を晒しています。世界地図は日本と台湾に色がついており、日本地図は東京が最も濃く、次に神奈川。データはFourSquare_logoSwarm_logo)でチェックインしたデータをphpでkintoneに取り込みます。地図を書き込むのは一覧画面のヘッダスペースです。そのため、世界地図版と日本地図版で一覧を分けています。

kintoneのアプリの構造はこんなんです。

フィールド名 フィールドコード
場所 場所 文字列(1行)
文字列(1行)
都道府県 都道府県 文字列(1行)
コメント コメント 文字列(1行)
日時 日時 日時

あと、アプリの設定画面で下図の3つのファイルを登録してください。
https://www.gstatic.com/charts/loader.js
とhttps://cdnjs.cloudflare.com/ajax/libs/alasql/0.4.11/alasql.min.js
はCDNから使います。最後のjsファイルはこの後説明します。
kintone_app

ここであらためて全体の構成図をご覧いただきましょう。一目瞭然とはこのことですね。

構成図

4.FourSquareの下ごしらえ

  目次へ↑

日々のチェックイン履歴をFourSquare_logoに溜める方法は、簡単に書くとこんな感じです。

  • Swarm_logoのアプリを立ち上げ、チェックインしたい場所でチェックインボタンを押す。
  • Swarm_logoの候補の一覧にその場所が登場します。
  • 登場しなくても検索すれば場所が指定できます。
  • 指定した場所でチェックイン(構成図の①)を行えば時間とともに自動的に記録(構成図の②)されます。気が向けばコメントも入れられます。

どうです?モンスターボールを投げなくてもよいし、ポータルを三角形で囲わなくてもよいのです。簡単ですよねFourSquare_logo

さて、今回の記事ではAccessTokenをFourSquare_logoから取得する処理(構成図の③)から説明します。AccessTokenはこのレシピの中で一度取得するだけです。なぜ一度だけでよいかというと、AccessTokenはユーザーを特定するのに使われるからです。つまり、一度AccessTokenを取得しておけば、何度でも使いまわしができるのです。FourSquare_logoには他にもたくさんのAPIが用意されています。処理によってはその都度AccessTokenを取らねばならず、ソースも複雑な下ごしらえが求められることもあります。ですが、このレシピではユーザーのチェックイン情報だけをとるのが目的なので、一度きりでよいのです。

5.FourSquareのAPI KeyとAPI Secretを取り寄せる

  目次へ↑

まず、https://ja.foursquare.com/にアクセスしてください。

FourSquarePage

そして、右上の開発者をクリックします。

すると、https://developer.foursquare.com/にページが遷移します。

FourSquareDeveloperPage

がでたら、右上のCreate Accountからアカウントを作成してください。

多分、FourSquare_logoで作ったアカウントがそのまま開発者アカウントとして引き継がれるはずです。

そしたら下図のようにMy Appsを選びましょう。アプリの作成のリンクがあるはずです。

FourSquareMyApp

こんな風に入れてください。

FourSquareMyAppRegist

この中で重要なのは3点。

  • Client ID、Client Secretは次の作業で使うのでちゃんとメモっておきましょう。
  • Client ID、Client Secretは墓まで持っていきましょう。人に教えちゃダメ!
  • Redirect URI (s)もちゃんと考えておきましょう。これは次の作業でこさえるスクリプトのURIです。

Application Urlという項目もありますが、ここは適当でよいです。他の項目も商用で使わなければ空白でよいはず。

6.FourSquareのアクセストークンの取り寄せとソースの仕込み方

  目次へ↑

続いて、アクセストークンを取得するためのphpを示しましょう。98行。38ステップです。

コメントに内容は記載しているので、まずはソースを味わってみてください。

設定A ⇒ 条件分岐B ⇒ 条件分岐C ⇒ 処理D ⇒ 処理E ⇒ 処理F ⇒ 条件分岐G ⇒ 処理H ⇒ 条件分岐I ⇒ 処理Jの順に進みます。

  // 設定A //
  // マイアプリで表示されたClient ID
  $client_id = 'KOKONIHAHONMAYATTARARANDAMUNAMOJIRETSUGAHAITTORUNEN';
  // マイアプリで表示されたClient Secret
  $client_secret = 'SEYAKEDOKOKONISOREDASHITARAORENOKOUDOUGABARERUKARADASAHENNEN';
  // リダイレクトURL (このスクリプト自身のアドレスです)
  $redirect_uri = 'https://*****.*****.ne.jp/*****/****_*********.php';
  // アクセストークン取得URLのベース
  $access_token_baseurl = 'https://foursquare.com/oauth2/access_token';
  // 認証URLのベース
  $authenticate_baseurl = 'https://foursquare.com/oauth2/authenticate';

  // 結果表示HTML用
  $html = '';
  // 結果表示見出し
  $html .= '<h2>実行結果</h2>';

  // 条件分岐B //
  //初回は$_GET['code']がなく中の処理は実行されない。「許可」され、リダイレクトされた場合に実行
  if( isset( $_GET['code'] ) 
    && !empty( $_GET['code'] ) 
    && is_string( $_GET['code'] ) ) {
    // 処理E //
    // 認証画面でFourSquareの実行が許可されると$_GET['code']付きでこのスクリプトが呼び出される。
    // アクセストークンの取得に利用するコード
    $code = $_GET['code'];
    // 処理F //
    // アクセストークン取得のためのパラメータを設定したUrlを組み立てる。
    // リクエストURL
    $request_url = 
      $access_token_baseurl . 
        '?client_id=' . $client_id . 
        '&client_secret=' . $client_secret . 
        '&grant_type=authorization_code' . 
        '&redirect_uri=' . rawurlencode( $redirect_uri ) . 
        '&code=' . $_GET['code'] . 
        '&state=users/self';
    // curlを初期化する
    $curl = curl_init();
    curl_setopt( $curl , CURLOPT_URL , $request_url );
    curl_setopt( $curl , CURLOPT_HEADER, 1 );
    // 証明書の検証を行わない
    curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , false );
    // curl_execの結果を文字列で返す
    curl_setopt( $curl , CURLOPT_RETURNTRANSFER , true );
    // タイムアウトの秒数
    curl_setopt( $curl , CURLOPT_TIMEOUT , 5 );
    // 実行し、結果を$jsonに代入
    $res1 = curl_exec( $curl );
    $res2 = curl_getinfo( $curl );
    curl_close( $curl );
    // 取得したJSONデータ(ヘッダーサイズでTrimしないとFourSquareはエラーになる)
    $json = substr( $res1, $res2['header_size'] );

    // JSONをオブジェクト型に変換する
    $obj = json_decode( $json );

    // 条件分岐G //
    if( !isset( $obj->access_token ) ) {
      // アクセストークンを取得できなかった場合
      $error = 'アクセストークンを上手く取得することができませんでした。';
    } else {
      // 処理H //
      // アクセストークンを[$access_token]に代入する
      $access_token = $obj->access_token;
      // アクセストークンをブラウザーに出力する
      $html .= '<p>取得したアクセストークンは <b><mark>' . 
        $access_token . '</mark></b>です。</p>';
    }
  } elseif( isset( $_GET['error'] ) ) {
    // 「拒否」して返された場合怒る。
    $error = 'なんで「許可」してくれへんの!?';
  } else {
    // 条件分岐C //
    // 初回はこの処理が行われるはず。
    header( 'Location: ' . $authenticate_baseurl . 
      '?client_id=' . $client_id . 
      '&response_type=code' . 
      '&redirect_uri=' . rawurlencode( $redirect_uri ) );
    // 処理D //
    // headerの後はexit()
    exit;
  }

  // 条件分岐I //
  // エラー判定
  if( isset( $error ) && !empty( $error ) ) {
    $html .= '<p><mark>' . $error . '</mark>' . 
      'もう一度、認証をするには、' . 
      '<a href="' . explode( '?' , $_SERVER['REQUEST_URI'] )[0] . '">こちら</a>' . 
      'をクリックして下さい。</p>' ;
  } else {
    // 処理J //
    // ブラウザーに[$html]を出力 (結果としてアクセストークンの文字列が表示されます)
    echo $html;
  }

もう一度上の処理をおさらいします。
・最初にこのスクリプトが呼ばれた際、URLにcodeパラメーターはついていません。
・だからBの条件でEFGHの処理は行われず、条件分岐Cの処理が実行されます。
・その中ではLocationヘッダを送信しています。なので、その下の処理Dでただちに認証画面にリダイレクトされます(認証画面は割愛します)。
・そこで認証が終われば、再びこのスクリプトがcodeパラメーター付きで呼ばれるよう、処理DのLocationヘッダの中にredirect_uriパラメーターを指定しています。
・再びこのスクリプトが実行されると、今度は条件分岐Bで処理E、Fが実行されます。
・FではFourSquare_logoのアクセストークンを返すAPIが呼ばれます。
・なので、無事にアクセストークンが返ってくるという流れです。お判りでしょうか?

そしたらこのスクリプトファイルをどこかのウェブサーバーに送ってください。phpファイルの実行権限付きで。先ほどFourSquare_logoのマイアプリの設定でRedirect Url (s)に入力していただきましたが、その内容と合わせておいてください。

たとえばhttps://hanamogera.com/mokeke/foursqaure_tokun_yokose.phpに送るとします。そしたらブラウザーのアドレスバーに直接上のアドレスを指定し、実行します。

すると結果が以下のように表示されるはずです。このマーカー部分をコピーしておきましょう。

アクセストークン

おめでとうございます。アクセストークンはこれであなたのものです。ついに調理人として存分に腕を振るう時が来たのです!!

7.FourSquareからCheckinデータの取り寄せとソースの仕込み方

  目次へ↑

続いては、いよいよAccessTokenを使ってFourSquare_logoにデータくれ!とおねだり (構成図の④) してみましょう!もらったデータをkintoneにシュッと投げ込むまで(構成図の⑤)のphpも説明します。まずはphpを以下に示します。115行。64ステップです。

こちらもコメントに内容は記載しているので、まずはソースを味わってみてください。
先のスクリプトはソースに大分シェフの手を加えましたが、このスクリプトは素材の味を生かすような作りにしています。

設定A ⇒ 設定B ⇒ 設定C ⇒ 設定D ⇒ 設定E ⇒ 条件分岐F ⇒ 条件分岐G ⇒ 処理H ⇒ 処理I ⇒ 処理J ⇒ 処理Kの順に進みます。

  // 設定A //
  // アクセストークン (前の処理で取ってきた文字列です)
  $access_token = 'YATTAYOAKUSESUTOKUNTORETAYOKOREDESIAWASENINARERUNE';

  // 設定項目 (ここはアクセストークン以外はデフォルト)
  $params = array(
    'oauth_token' => $access_token ,// アクセストークン (これでユーザーが認識される)
    'locale' => 'ja' ,              // ローカライズ (jaは日本)
    'm' => 'swarm' ,                // モード (foursquare OR swarm)
    'v' => '20150801' ,             // バージョン (APIのバージョン。今のところ左の年月日)
    'limit' => '250'                // 取得件数 (250が上限)
  ) ;
  // 設定B //
  // GETメソッドで指定した場合 (設定項目のパラメーターを差し替える)
  foreach( array( 'locale' , 'm' , 'limit' , 'sort' , 'afterTimestamp' , 'beforeTimestamp' ) as $val ) {
    if( isset( $_GET[ $val ] ) && $_GET[ $val ] != '' ) {
      $params[ $val ] = $_GET[ $val ] ;
    }
  }

  // 設定C //
  // 設定項目 (日付や並び替えなどの条件を追加します。例えば2018/11/30の00:15時点で実行されたとします。
             するとstrtotime("today")は2018-11-30 00:00:00が返されます。
              strtotime("yesterday")は2018-11-29 00:00:00が返されます。
              それをもとにした$params["afterTimestamp"]は2018-11-29 00:00:00より後のチェックインデータを、
              それをもとにした$params["beforeTimestamp"]は2018-11-30 00:00:00より前のチェックインデータを取得します。
              $params["sort"]はoldestfirstを指定すると上記の日付範囲のチェックインデータのうち古いものを最初に取得します。
              ここ重要です。kintoneライフログ調理師試験に出ますので、要おさらい!!) //
  $today = strtotime("today");
  $yesterday = strtotime("yesterday");
  $params["afterTimestamp"]=$yesterday;
  $params["beforeTimestamp"]=$today;
  $params["sort"]="oldestfirst";

  // リクエストURL (usersの次のselfは固定文字)
  $request_url = 'https://api.foursquare.com/v2/users/self/checkins?' . http_build_query( $params );

  // 設定D //
  // cURLでリクエスト
  $curl = curl_init();
  curl_setopt( $curl , CURLOPT_URL , $request_url );
  curl_setopt( $curl , CURLOPT_HEADER, 1 );
  curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , false );
  curl_setopt( $curl , CURLOPT_RETURNTRANSFER , true );
  curl_setopt( $curl , CURLOPT_TIMEOUT , 5 );
  $res1 = curl_exec( $curl );
  $res2 = curl_getinfo( $curl );
  curl_close( $curl );

  // 設定E //
  // 取得したJSONデータをオブジェクト形式に変換する (ヘッダーサイズでTrimしないとFourSquareはエラーになる)
  $json = substr( $res1, $res2['header_size'] );
  $obj = json_decode( $json );

  // 条件分岐F //
  // エラー判定 (metaのcodeの値が200だと正常に取得されている)
  if( !$obj || !isset($obj->meta->code) || $obj->meta->code != 200 ) {
    //ログ出力して調査!
  } else {
    // 説明
    $data = array();
    $count = 0;
    // 条件分岐G //
    //取得したデータオブジェクトの -> response -> checkins -> itemsの中をループする //
    foreach( $obj->response->checkins->items as $item ) {
      // 処理H //
      //$itemの中にはチェックインの場所についての栄養が豊富に含まれています。緯度経度やコメントや市長など。詳しくはhttps://developer.foursquare.com/docs/api/users/checkins //
      // チェックインID
      $id = $item->id ;
      // ベニューのID
      $venue_id = $item->venue->id ;
      // ベニューの国 (国名は日本語で取得できる)
      $venue_country = $item->venue->location->country;
      // ベニューの都道府県 (取得した後、Google Chartの都合で末尾の「都」「府」「県」は除去する)
      $venue_prefecture = $item->venue->location->state;
      switch ($venue_prefecture){
        case '北海道':
          break;
        default:
          $venue_prefecture = mb_substr($venue_prefecture,0,-1, "UTF-8") ;
          break;
      }
      // ベニューの名前 (改行は除去しておく)
      $venue_name = str_replace(array("\r\n", "\r", "\n"), '', $item->venue->name);
      // チェックイン日時(オフセットと合わせる。要は日本の時間に合わせる)
      $createdAt = $item->createdAt + 54000 - 86400;
      // 日時の整形 (kintoneにあった日付データ形式に変更する)
      $createdAt = date( 'Y-m-d' , $createdAt )."T".date( 'H:i:s' , $createdAt ) ;
      // コメント (改行は除去しておく)
      $shout = ( isset($item->shout) ) ? str_replace(array("\r\n", "\r", "\n"), '', $item->shout) : '';
      // kintoneに投げるデータです。フィールドコードとデータ型を合わせることを忘れずに。
      // 処理I //
      //kintoneに投げるデータをここで指定します。文字列データは文字列型にキャストしておくとふっくら仕上がります //
      $data[$count] = array(
        "場所" => array("value" => (string)$venue_name),
        "コメント" => array("value" => (string)$shout),
        "国" => array("value" => (string)$venue_country),
        "都道府県" => array("value" => (string)$venue_prefecture),
        "日時" => array("value" => $createdAt)
      );
      $count++;
    }
  }

  // 処理J //
  // kintoneの対象のアプリIDを指定する。(1111というのはダミーです)。FourSquareからのデータもあわせて。
  $postdata = array("app" => 1111,records=>$data);
  // 処理K //
  // kintoneのアクセストークンを指定する。ベーシック認証がある場合はそちらもあわせて指定。
  $headers = array(
    "X-Cybozu-API-Token:" . "kintoneNOAPURISETTEIDESHUTOKUDEKIRUTOKUN",
    "Authorization:" . "Basic " . base64_encode("YUUZAAID:PASUWAADO"),
    "Content-Type:" . "application/json"
  );
  // 以下の******はお使いのkintoneのサブドメインを入れてください。
  $curl = curl_init('https://******.cybozu.com/k/v1/records.json');
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($postdata,JSON_UNESCAPED_UNICODE));
  curl_setopt($curl, CURLOPT_HEADER, true);
  // curlで出たエラーを補足するためのものです。
  $fp = fopen('curl.log', 'a');
  // 詳細な情報を出力する
  curl_setopt($curl, CURLOPT_VERBOSE, true);
  // STDERR の代わりにエラーを出力するファイルポインタ
  curl_setopt($curl, CURLOPT_STDERR, $fp);
  if(curl_exec($curl) === false){
    //ログ出力して調査!
  } else {
    return true;
  }
  curl_close($curl);

このスクリプトもウェブサーバーに送ってください。ファイルの実行権限付きで。あと、ファイルのUrlはきちんとメモしておいてくださいね(^_^)

次にcronの設定を行います。cron実行のための構文はサーバーによって違います。ここに載せているcron設定はさくらインターネットの例ですが、phpファイルの実行パスと、スクリプトのファイル名はどのサーバーでも求められるはずです。このレシピは毎日00:15に自動で実行するように設定しています。

Cron設定1

cron2-1

8.kintone上でデータの盛り付け

  目次へ↑

さて、7までのレシピ(2018/12時点の)に忠実に行うとチェックインデータは毎日順調にkintoneに流れ込むはず。あとはデータを盛り付けるだけ。「ライフログのkintone盛り alasql仕込みのGoogle Chart添え」とうたっている以上、最後の仕上げにGoogle Chartを添えるのを忘れるなかれ。それぞれの一覧ごとに違うマップを表示するJavaScriptを以下に示します。この中でkintoneのデータをalasqlで集計し、その結果をGoogle Chartで地図に表示しています。

世界地図の場合、処理A ⇒ 条件分岐B ⇒ 処理C ⇒ 処理D ⇒ 処理E ⇒ 処理V ⇒ 処理F ⇒ 処理W ⇒ 処理G ⇒ 処理H ⇒ 処理I ⇒ 処理J ⇒ 処理Kの順に進みます。
日本地図の場合、処理A ⇒ 条件分岐L ⇒ 処理M ⇒ 処理N ⇒ 処理O ⇒ 処理V ⇒ 処理P ⇒ 処理W ⇒ 処理Q ⇒ 処理R ⇒ 処理S ⇒ 処理T ⇒ 処理Uの順に進みます。

(function () {
  "use strict";
  // 処理V //
  // 再帰処理による一回のリクエスト制限を超えた全レコードを取得 //
  function fetchRecords(appId, opt_query, opt_fields, opt_offset, opt_limit, opt_records) {
    var query = opt_query || '';
    var offset = opt_offset || 0;
    var limit = opt_limit || 500;
    var allRecords = opt_records || [];
    var params = {app: appId, query: query + ' limit ' + limit + ' offset ' + offset };
    if (opt_fields) params.fields = opt_fields;
    return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params).then(function(resp) {
      allRecords = allRecords.concat(resp.records);
      if (resp.records.length === limit) {
        return fetchRecords(appId, query, opt_fields, offset + limit, limit, allRecords);
      }
      return allRecords;
    });
  }

  // 処理W //
  // json形式で取得したkintoneのレコードをalasqlで扱えるようレコードセット形式に変換 //
  function convertToRows(records) {
    var rows = records.map(function(record){
      var keys = Object.keys(record);
      var row = {};
      keys.map(function(key){
        row[key] = record[key].type === 'NUMBER' ? Number(record[key].value) : record[key].value;
      });
      return row;
    });
    return rows;
  }

  // 一覧ページ
  kintone.events.on('app.record.index.show', function(event) {
    // 処理A //
    //Google Cloud Platformで発行したAPI KEYです。
    //API KEYがない場合、以下の処理Cでgoogle.charts.load('upcoming', {'packages':['geochart']});としても動きますが、世界地図の色塗りができません。また、コンソールでエラーが表示されます。
    //作成したプロジェクトの認証はリファラーを限定するとよいです。https://subdomain.cybozu.com/* のように指定すると、対象のサブドメインに対して動作します。https://akvabit.cybozu.com/だと動きませんので注意が必要です。
    //あと、許可するAPIですが、「Maps JavaScript API」「Geolocation API」「Geocoding API」の三つを有効にしています。
    const ApiKey = 'k54u6 jkrawyeie-wkjykethiudarwhyeiu_rekyjur';
    // 条件分岐B //
    //世界地図ビューの場合 //
    if (event.viewId === 5351051) {
      // 処理C //
      //google chartを読み込む。種類は地図 //
      google.charts.load('upcoming', {'packages':['geochart'],'mapsApiKey':ApiKey});
      // 処理D //
      //google chartの読み込みが完了したらコールバックでdrawWorldMapを呼び出す //
      google.charts.setOnLoadCallback(drawWorldMap);
      function drawWorldMap() {
        var obj = {};
        // 処理E //
        //このファイルの3-17行のfetchRecords関数を呼び出す。対象アプリは自分で、フィールドは[場所][国] //
        fetchRecords(event.appId, '', ['場所', '国']).then(function(records) {
          // 処理F //
          //取得したレコードをSqlで扱えるようなレコードセットの形式に変換するconvertToRows関数(このファイルの20-30行)をご参照 //
          obj.rs1 = convertToRows(records);
          // 処理G //
          //alasqlでsql文のソースを組み上げ、バインドパラメータに処理Fで得たレコードセットをセットする //
          var result = 
            alasql(
              "SELECT t.[国], COUNT(t.[場所]) as [回数] \
              FROM ? AS t \
              GROUP BY t.[国] \
              ORDER BY t.[国]", [obj.rs1]);
          // 処理H //
          //google chartのデータテーブルのインスタンスを新たに確保する //
          var data = new google.visualization.DataTable();
          // 処理I //
          //google chartのデータテーブルの列と行を追加します。alasqlでグループ集計された国ごとの訪問回数です。 //
          data.addColumn('string', '国');
          data.addColumn('number', '訪問場所数');
          result.forEach(value => {
            data.addRow([value["国"], value["回数"]]);
          });
          // 処理J //
          //google chartの世界地図の色塗りの書式を設定する //
          var options = {
            datalessRegionColor: '#ffffff',
            colorAxis:{
                maxValue:500,
                colors:['#D8F6CE','#21610B']
            }
          };
          // 処理K //
          //google chartの世界地図のデータに処理Iで格納した内容を代入し、kintoneのヘッダスペースに描画する //
          var chart = new google.visualization.GeoChart(kintone.app.getHeaderSpaceElement());
          chart.draw(data, options);
        });
      }
    // 条件分岐L //
    //日本地図ビューの場合 //
    } else if (event.viewId === 5351053) {
      // 処理M //
      //google chartを読み込む。種類は地図 //
      google.charts.load('upcoming', {'packages':['geochart'],'mapsApiKey':ApiKey});
      // 処理N //
      //google chartの読み込みが完了したらコールバックでdrawJapanMapを呼び出す //
      google.charts.setOnLoadCallback(drawJapanMap);
      function drawJapanMap() {
        var obj = {};
        // 処理O //
        //このファイルの3-17行のfetchRecords関数を呼び出す。対象アプリは自分で、フィールドは[場所][都道府県] //
        fetchRecords(event.appId, '', ['場所', '都道府県']).then(function(records) {
          // 処理P //
          //取得したレコードをSqlで扱えるようなレコードセットの形式に変換するconvertToRows関数(このファイルの20-30行)をご参照 //
          obj.rs1 = convertToRows(records);
          // 処理Q //
          //alasqlでsql文のソースを組み上げ、バインドパラメータに処理Pで得たレコードセットをセットする //
          var result = 
            alasql(
              "SELECT a.[都道府県], COUNT(a.[場所]) as [回数] \
              FROM ? AS a \
              GROUP BY a.[都道府県] \
              ORDER BY a.[都道府県]", [obj.rs1]);
          // 処理R //
          //google chartのデータテーブルのインスタンスを新たに確保する //
          var data = new google.visualization.DataTable();
          // 処理S //
          //google chartのデータテーブルの列と行を追加します。alasqlでグループ集計された都道府県ごとの訪問回数です。 //
          data.addColumn('string', '都道府県');
          data.addColumn('number', '訪問場所数');
          result.forEach(value => {
            data.addRow([value["都道府県"], value["回数"]]);
          });
          // 処理T //
          //google chartの地図を日本地図の都道府県とし、色塗りの書式を設定する //
          var options = {
            region: 'JP',
            resolution: 'provinces',
            datalessRegionColor: '#ffffff',
            colorAxis:{
                maxValue:600,
                colors:['#F2FBEF','#21610B']
            }
          };
          // 処理U //
          //google chartの世界地図のデータに処理Sで格納した内容を代入し、kintoneのヘッダスペースに描画する //
          var chart = new google.visualization.GeoChart(kintone.app.getHeaderSpaceElement());
          chart.draw(data, options);
        });
      }
    }
  });
})();

いかがでしょうか? ここはカスタマイズビューでリッチにデータを表現しても良いですし、条件に応じて絞り込めば、さらに面白いこともできます。チェックインデータにはカテゴリーもありますので、例えば訪れた酒場だけを抜き出し都道府県で図示したり、訪れたラーメン屋だけを都道府県で抜き出すことだってできます。例えば私の趣味ですが、今までに訪れた滝を色分けすればこうなります。城とすればこう。駅だとこう。他にも登った山や訪れた蒸留所や酒蔵、ブルワリー。各地の日本酒や世界の酒、料理などで色分けしても面白そうです。
残念なことにGoogle chartはまだ市町村には対応していません。もしそうなればもっと面白いライフログが作れそうです。もちろん、地図で塗り分けるほかにもGoogle chartはかなりのグラフの種類を用意しています。そこは皆様の自由です。
なお、ライフログとは、別に人様に見せて放浪癖を誇るものでも、旅行経験を自慢するものでもありません。あくまでもプライベートな利用がよろしいかと思います。ご自身の今までの人生とこれから残された人生に何を成すかを定める助けになればそれで十分です。そのあたり、ライフログについての私の考えは、このレシピ同時に書いたこちらで世に問うてみました。またご覧頂ければ幸いです。
このレシピをまとめるなら、要するにkintoneをプライベート用途に使おうよ、との主旨です。そういう使い方がもっと増えればkintoneはより身近なものになるのですから!

9.当レシピの参考にさせていただいたブログ

  目次へ↑

最後になりましたが、このレシピを作るのに、以下の5サイトを参考にさせていただきました。ありがとうございました。

 Foursquare(Swarm) APIの使い方まとめ (サンプルコード付き)
 Get Check-Ins for a User
 kintone でSQLを使う
 GoogleのGeochartを使ってみた
Google Maps Platform


平成30年10月のまとめ


この5月から毎月のまとめを弊社ホームページ上でアップしています。

この10月を一言で言うなら、小休止といったところでしょうか。作業の体制を切り替えるにあたっての過渡期といいかえてもよいです。常駐先での作業が主だったころと変わらぬ額の売り上げは確保しましたが、大きなSES案件が一つ、9月で終わったこともあって10月は少し売上が落ちています。

ただ、唯一のSES案件が終わろうとも、粗利率の向上を目指す施策に変わりありません。私自身が携わり、開発に手を染める案件を増やす―粗利率を上げる―方向に変わりありません。 また、10月に手掛けた案件の多くはkintone案件を中心とした、集中した作業によって実を結べる類の案件でした。そのため、SES案件を除いた売上額では、従来の売上額からの落ち込みはありません。まずは一安心しています。

一方で、11月はいろいろな案件が始まります。今まで種々の集いに顔を出したことが実を結んだ案件もあります。また、既存のお客様のフォローに動いたことから別のお話をいただいた案件も数個あります。kintone案件の外にもいろいろと受注をいただいています。イノベーションプラス様とはパートナー契約を締結させていただきました。11月はさらに忙しくなりそうです。下半期の開始としては上々のスタートかもしれません。

あとはたくさんいただいた案件を粗利率を下げずにどうやってこなしていくかです。11月に始まる案件の一つにSES案件があります。これを完全に技術者さんに任せてしまうと、弊社の粗利率が減ってしまいます。5~9月に粗利率を悪化させた同じ轍を踏むことは避けなければ。なのでこの案件については週一、二ペースで私も携わろうと思っています。また、以前の反省点として色々な案件に手を出したことで、工数が想定を超えてしまった反省がありました。ですが、今回はその時に手を染めたことにより、ノウハウを得ている話が来ました。これでかつての苦労も投資として振り返れるかもしれません。

大きなお客様が増え、弊社にとって安定度が増してきました。ただ、今月は一つだけ弊社の歴史にとって記憶しておくべき出来事もあります。それは10年に渡ってホームぺージ製作や保守を担当していたお客様との契約が今月で終わってしまうことです。個人事業主になった私がSESを除いて請け負った二件目のお客様でした。それから10年。弊社の歴史とともに歩んで頂いたので、少し感傷的にもなります。ですが、弊社としては、ホームページ製作の割合を減らしていくつもりでした。無料で簡単に作れるホームぺージ製作ツールも多数ある中、今やホームページの製作で粗利をあげる難しさをつくづく感じていましたので。円満に新たな業者様に引き継いでいるので、これからもご縁は続くと信じています。

10月は、弊社の発信の仕方を、Twitterを中心にして少し変えてみました。DevRelJp Meetup in Tokyoというイベントにも参加し、有益な情報もいただきました。それをいかしつつ、引き続き試行錯誤してみたいと思います。あとニコニコ動画で伝統工芸の世界を発信するハロー職1にも参加し、新たな情報発信のあり方を学んだ月でもあります。また、会津では地元の魅力を伝える取り組みに触れることができました。臺灣では日本と変わらずに仕事や作業を行える方法を会得してきました。あと、今月はAWS Loft Tokyoのオープニングイベントにも参加し、AWS Loft TokyoやDeNAのShibuya Studioといった作業場も使わせていただけるようになりました。それらも含めて、10月はインプットという意味でも有益な月となったように思います。

慢心することなかれ、安住することなかれ、変化を恐れることなかれ、今に満足することなかれ。


平成30年9月のまとめ


この5月から毎月のまとめを弊社ホームページ上でアップしています。

粗利率の向上がここ二、三カ月のテーマでしたが、今月は改善ができたように思います。

それは、私自身が携わり、開発に手を染める案件を増やしたからです。また、それが売り上げとして結実したからです。
しかも、その多くはkintone案件を中心とした、作業を集中することで実を結ぶことができる案件でした。実はもう一つkintone案件がありましたが、それは9月中に売り上げを立てられるまでに至りませんでした。でも、ほぼめどがついたので来月に結果を出せそうです。

他にも今月は上半期のまとめとして、下半期につなげられるような動きに心を配りました。
それも結実しそうな予感がします。売上を確保しつつ、粗利率を挙げられるような方向で。

たとえばAWS社に訪問し、クラウド上に作成するデータベースの開発・保守についてお話を伺えたことも大きい話です。

あと、大きなお客様が増えてきたことで、弊社にとって安定度が増してきました。
もう一つ、書くことを中心にした発信の仕方を、Twitterを中心にして少し変えてみました。
その成果が今後どう出るか。引き続き試行錯誤してみたいと思います。

慢心することなかれ、安住することなかれ、変化を恐れることなかれ、今に満足することなかれ。


kintoneのPromiseを説明できるスキル


以前よりお付き合いさせていただいている株式会社アディエム様(https://adiem.jp/)より、
先日ご依頼を受けたたkintone開発案件は、何重にも入れ子になった多重Promise処理が必要でした。

弊社にてコーディングと単体テストを行い、無事納品にこぎつけられたのですが、
アディエム社の技術者様にもコードの説明を行う必要が生じました。

弊社の代表もPromiseの習得にはかなり手を焼いたのですが、そのスキルを習得できたかの判断基準は、その内容を人に説明できるかどうかです。つまり今回、うまく説明できたかどうかは、弊社代表がPromiseを理解できているかのベンチマークにもなりました。

説明を行った結果、アディエム社の技術者様にPromise処理をご理解していただけたようです。追加の処理を実装し、さらにテストまでも行えるまでになったとか。その結果を以下のようなメッセージでいただきましたのでご紹介します。

先日はコードのレクチャーをありがとうござました。
本日、検索部分のエラーハンドリングを追加し、本番環境にリリース致しました。
負荷テストとして4001件のデータを使用して、正常に更新されることも確認しました。

kintone APIのノーマル呼び出しパターン、kintone promise を使ったパターン、promiseでも thenにresolve, rejectを引き渡すパターン、thenとcatchを書くパターンと、かなりケースの整理が できました。また返値の扱いもデバックすることで理解が進みました。
まだうまく関数化して可読性の良いソースを書く自信はありませんが、長井さんソースを参考にさせて 頂きたいと思います。

以上、ご報告まで。

弊社代表は以前より、kintoneのエバンジェリストとしてサイボウズ社より任命されております。
最近はこうしたマンツーマンに近い形で、技術をお伝えする案件も増えつつあります。
その中でこうしたご評価を頂戴したことは、弊社代表にとっても自信になりました。もちろん、スキルの習得に終わりはありません。新たな技術も次々と世の中に生まれています。まだまだ切磋琢磨していかねば。精進します。

今後もアディエム社とはkintone案件のご提案からコーディング・テストまでを協業できる関係を築いていければと思います。
kintoneでのシステム開発のご相談、アディエム社、および弊社にお気軽にお寄せ下さいませ。

また、もし御社の技術者に対し、こうしたマンツーマン形式でのレクチャーをご要望の際は、
ご連絡をください! ご相談に乗らせていただきます。


box for kintoneでERR_CONNECTION_REFUSEDが出てしまった場合


kintoneをカスタマイズする際は、デバッグが欠かせません。
ブラウザーのコンソールに出るエラーメッセージはデバッグを行う上で重要なメッセージですよね。

とくに複数のカスタマイズやプラグインを入れたアプリでは、どのエラーがどのJavaScriptによって出力されるのか把握しておかねばなりません。そうしないと私のように脳のフラッシュメモリー容量が少ない人はすぐにCPU100%に達してしまうのです。

今回、弊社で別のプラグインを作るにあたり、box for kintoneで謎のエラーが出ていました。
エラーが出ているのにbox for kintoneのプラグイン自体はきちんと動作しているという。おやまあ。
謎です。全くの謎です。

と、そんな混乱は、以下にご紹介する方法で解消されました。
ウェブ上でもあまりこの件についての記事がなかったので、ニッチですが皆様のご参考になればとアップしました。

同様にファイアウォール系拡張機能とオンラインストレージの組み合わせだと出るかも。

0.box for kintoneとは

 オンラインストレージとkintoneを連動するプラグインです。こちらは「box for kintone」で検索していただければいくつも見つかると思います。使用上の注意をよく読み、用法 用量を守って正しくお使い下さい。
 こちらとか

1.謎のエラー

 ところが、一見すると想定通りに動いているように見えるbox for kintoneですが、コンソールには
 謎のエラーがうごめいています。

 な、なんやこれ?
 上図では見えませんが、エラーに「その心は?」と聞いてみると「ERR_CONNECTION_REFUSED!」と叫んでいます

 他のカスタマイズを進める都合上、こういうエラーは先につぶしておかないと。

 普通、ERR_CONNECTION_REFUSEDはウェブサイトにアクセスできないときに出るエラー。
 なのにkintoneの画面上にあるboxの窓には接続できていて、ドラッグするとファイルのアップロードもできる。謎です。

 何かが起これば、ファイアウォールを疑う。これは某氏(誰?)の金言です。

 と、そこで、ブラウザー(Google Chrome)に拡張機能として入れているマカフィーの存在に思い至ります。

2.拡張機能を探す。

 拡張機能については、下図のようにたどれば設定画面にたどりつけるはずです。
 

 ここでマカフィーウェブアドバイザーなる拡張機能が登場。これかな。
 

3.拡張機能の「ファイルのURLへのアクセスを許可する」機能をオフにする。

 詳細を押すと、こんな画面が。うむ。OFFになっている模様。これをOnにするといかがかな?
 


 
 こんな風にぽちっと。青くなりましたね。

4.念のためキャッシュやクッキーも消しておきましょうね。

 やってみたらうまくいかないので、ブラウザーがクッキーの消化不良を起こしているに違いない。ここは胃を空っぽにしてあげましょう。

 ここでは閲覧履歴データの消去を選びます。

 ここで閲覧履歴にチェックをいれて消去してしまうと、いろんなサイトで再アクセスが必要になるのでご用心ください。

 すると、謎のboxエラーはいなくなりました。めでたしめでたし。

5.終わりに

これは、2018/9/5時点の情報です。
もちろん、折角ファイアウォールさんがファイルへのURLを許可しないようにしてくれているのに、それを許可するということは、セキュリティ上リスクも増します。
そのあたりをご理解の上、参考にしていただければ。もちろん何かあっても弊社では責任はとれませんので。

なお、弊社はこれから、box for kintoneを拡張し、サブテーブルの行ごとにBOX上でサブフォルダーも作れるようにする予定です。


平成30年8月のまとめ


先々々月から毎月のまとめを弊社ホームページ上でアップしています。

粗利率の向上がテーマのここ二、三カ月のテーマです。粗利率をどうやって向上させるか。

先月、税理士の先生の下で財務計画を検討したときにいただいたアドバイスは二つ。売上を増やすか外注率を下げるかのどちらかです。実は売上については今年の上半期の状況が続けば、最終的には前年度をかなり上回れそうな見込みです。今月も水準は超えています。ところがそこには外注率の高い案件が含まれています。粗利率を向上させるには、外注率を下げるしかありません。ということは、外注率の低い案件を増やすしかありません。そして、外注率を下げれば、現時点の弊社の体制では自動的に私に負担がかかることを意味します。

今までの私の反省。それは、あれこれの技術に面白がって手を出してしまったことです。そのため、スキル取得のコストが生産性の足かせになっていました。生産性を上げれば、外注費を掛けずに私一人でこなせる案件も増やせます。では、私一人でいくつも案件をこなすためには何をすればよいか。私にとっての得意分野をやっていくしかありません。新規スキル習得を後回しにしても、既存のスキルで回せる案件を増やしていく。私にとって既存のスキルで回せる案件とは、デザインスキルがさほど要らず、基盤構築が不要なクラウド上での開発案件です。特にkintone。

7月のまとめでいくつかkintone案件で受注が採れたと書きました。実は今月も新たなkintone案件の受注をいただきました。しかも名の通った会社様からのkintone案件が増えています。おかげで営業をせずに次の案件を請けられるようになりつつあります。これはとても嬉しいことです。今まで、弊社が口コミ以外で新規に受注できた案件の多くは、マッチングサイトからのものでした。ところがマッチングサイト経由だとクラウド案件はあまりなかったのです。それどころか、新たたスキルを求められる案件が多く、それが新規スキルの習得コストに跳ね返っていたのです。それがkintoneだけを極めていけば、次々と案件が来るような兆しができたのは大きい。ようやく弊社にとって望ましい状況が見えてきたのが今月だといえます。

8月はkintoneの多重Promise処理が求められる案件もこなし、だいぶスキルがあがりました。でも、まだまだです。そのためにも勉強は欠かせません。そのため、kintone dev camp 2018にも参加しました。その時のご縁でTwilioビジネスセミナーにもお呼ばれし、kintone Café 東京にも参加しました。kintone連携のサービスの営業パートナーにもなり、今もお客様のもとでkintoneソリューションを組み合わせた案件の仕様策定に関わっています。ようやくkintoneエバンジェリストとしてお役が立てそうな気がしています。これを機にTwitterの弊社アカウント(@akvabit_llc)でもkintoneネタをつぶやいていきますので、フォローをお願いします。

ただ、まだまだ弊社の売上の中でkintone案件の割合は3割ぐらい。これをもっともっと上げていかねば。弊社も願わくはkintone専業をうたってみたいもの。そのためにもやるべきことはまだまだ多い。

九月は新たなkintone案件に注力しつつ、売上よりも粗利率を考慮しながら経営したいと思います。少しでもkintone率をあげられるように。もちろん、プライベートの生活も大切にしながら、体も大切にしつつ。読書ブログもたくさん書いて。

慢心することなかれ、安住することなかれ、変化を恐れることなかれ、今に満足することなかれ。


チーム応援ライセンス開始記念セミナーに登壇しました


5月16日にサイボウズ社27階で開かれた
「チーム応援ライセンス開始記念セミナー」(https://npo.cybozu.co.jp/blog/post/53/)
に弊社代表が登壇者として参加させて頂きました。

今回は、どちらかといえば自治会の元総務部長としての肩書きが主です。

直前に開かれた自治会の役員会で自治会名の実名を出すことが否決されました。
なので、実際の活用事例を写真や具体例で示しませんでした。
そのかわり、サイボウズLiveをサイボウズOfficeに切り替えるにあたり、
どういういきさつで選考を行い、どういう基準で採用したかの観点でお話ししました。
また、予算の限られた任意団体において、どれだけチーム応援ライセンスが重要かということも。

もちろん、最後にはkintoneエバンジェリストとして、
kintoneが自治会や他の組織にこれだけ効きますよ、ということも交え。
スライドはこちら(http://slides.com/yoshikazunagai/for_residents_association)

私は話し終わった後には、隣に座っていた方からお褒めの言葉も頂き、
懇親会でも様々な方からご挨拶や好意的な反応も戴きました。
サイボウズOfficeとkintoneのどちらを採用すればよいか、
との質問も数名の方から頂きました。
また、参加されていた当の自治会の方からも好意的なコメントを頂きました。

逆に反省点もあります。

・スライドに一切具体例を出せず、聞き手の皆様に抽象的な印象を与えたかもしれないこと。
・話の途中で質問してみたところ、自治会の役員経験者が聞き手の1割もいらっしゃらず、
 自治会を経験していない方には、私の話の意図が伝わらなかった可能性があること。
・質問の時間を取れなかったこと。
・kintoneを勧めておきながら、アプリのデモの時間をとらなかったこと。

実際、サイボウズ社より聞き手の皆様から頂いたアンケート結果(個人情報は省いたもの)を見せて頂きましたが、
反応がわかれています。
他の講演者より私の講演に高評価をつけて下さったかたもいれば、逆の評価をした方もいました。
サイボウズLiveの代替をOfficeにする決意がついたと仰って下さった方もいましたし、
懇親会でもそのような評価も頂きました。

そこも含め、どうすればうまく伝えられるか、私の方でも自治会や町内会、任意団体の方々に提案を行う上で、
とてもよい勉強になりました。

最後になりますが、ご出席くださったかた、サイボウズ社のみなさま、ありがとうございました。


2016年のまとめ


昨年に続き、今年もこちらで年のまとめを書きます。

総括すると、2016年は、節目となった昨年に続き、充実した一年になったと思います。行動したという意味では当初考えた以上の動きが出来ました。ただ、仕事の面では進歩も充実も得られましたが、私的な部分で反省点が多々あります。達成度4割。達成感7割。満足感8割というのが自己採点です。2016年の私とご縁をいただいたすべての方々に感謝します。ありがとうございました。

公私の「公」

●弊社事業の概況
§ 2015年に法人成りを果たした弊社ですが、今年は4月から常駐業務を月の半分に減らしました。つまり、残りの月半分は自分で仕事を取って来て、全責任を担うことになります。その範囲は、受注から納品、お客様によるご検収、最後にご入金までの全過程に及びます。今までは個人事業主や法人を名乗っていたとはいえ、常駐先に入っての請負が主な業態でした。つまり、真の意味で独立していなかったといえます。そして、常駐での請負業務を今後続けていったところで、営業チャネルも視野も広がりません。それは、遠からず確実に訪れる年齢リスクを鑑みると甚だ危険な状態といえます。常駐業務を離れるにはむしろ遅すぎたくらいかもしれません。この4月からは半分だけ自立を達成したことになります。営業や仕様策定、開発から回収、そして総務までやらねばなりません。開発の遅れは検収の遅れにつながり、入金の遅延にもつながります。正直大変な時期もありました。また、より一層不規則な睡眠、不規則な生活を余儀なくされました。しかし、後悔はしません。私自身の心構えにも張りとやり甲斐がみなぎった一年でした。重ね重ねお仕事でご縁を頂いた皆さまに感謝いたします。
§ 2015年から交流会への参加を始めました。最初のうちは、同じタイプの交流会に繰り返し出席することが多かったです。今年は同じ交流会への参加をなるべくせず、様々な交流会に出るよう心がけました。一つの集りだけに参加することは、居心地はよいのですが、交流範囲が限定されがちになります。そうではなく、今年は様々な集りにどんどん顔を出すべきと思いました。弊社として個人として、様々な団体や集まりに顔を出し、顔を露出し、顔を売り込む時期だと。一人でも知り合いがいれば、初対面の方ばかりであっても臆することなくイベントに参加しました。数十人の参加イベントで知人が1~2名しかいないといった経験はしょっちゅうでした。でも、おかげさまで人脈もビジネスも広がりました。
§ 講師として呼ばれることが増えました。2016年は講師として三度登壇させていただきました。 郡山商工会議所でのkintoneセミナーと、Connect in Koriyama 2016でのkintone技術セミナー、IoT分科会でのIoTと自治会という題の勉強会など。さらに、講師以外でも登壇者としての立場で五回喋る機会をもらえました。kintone Café 神奈川 Vol.2~4の3回、kintone Café 埼玉 Vol.1kintone Café福島 Vol.1。また、Lightning Talkという位置づけではkintone Café埼玉 Vol.2~3、kintone Café Japanのエバンジェリストプレミアムパーティーでも人前に立ちました。まだまだトークも未熟ではありますが、引き続き上っ面でなく、心からほとばしるような話を、抑揚と起伏と笑いを添えてお届けできるよう努力します。また、今年はイベントを主催するまでには至りませんでしたが、妻も一度ココデンタルで開催しましたし、来年は挑戦できればと思っています。
§   昨年、某社の関西営業所長のお話を頂いていました。ところが、年の瀬になってから急に先方からの申し出が変わりました。請負契約ではなく社員雇用の契約形態へと。社員雇用ということは、せっかく法人化した会社を畳まねばなりません。それは受け入れられるものではありませんでした。そんなわけで正月明け、年賀はがきの当選番号が発表される頃に、先方にお断りを入れました。四月から常駐を半分に減らすにあたり、私の収入の算段は大きく狂いましたが、初志貫徹で四月からは半分独立に突き進んでいます。
§   四月から半分独立を果たすに当たっては、今まで常駐業務のため商談申込を諦めていた規模の案件にも積極的に応募するようにしています。その結果、kintoneでも1人月程度の案件を6案件受注できました。他にもdrupalやwordpressといったCMS案件も数個、laravelによるCMS保守案件など、手放した失った月半分の常駐作業を埋める以上のお仕事が受注できています。ありがたいことですが、営業と作業者を兼務することが難しくなってきたのも事実です。とくに交流会などで酒を飲む場が今年はかなり多かったのですが、酒を飲むとその後の作業能率が顕著に低下するのが辛かったです。来年は総務経理系のお手伝いの方の雇用と技術者の外注比率を上げようかと思っています。
§   今年は書くというお仕事では引き続き自分なりに努力しました。ただ、四月から半分独立によって余裕がなくなってしまい、トイロハさんへの連載がストップしてしまったのは悔いが残ります。もっとも、秋になってHTMLの書き方や、boxやone driveについての記事をトイロハさんへ書かせていただいたのですが。また、12月には昨年に続きkintone Advent Calendarに参加させて頂きました。今年は書く決心をしてから割当日まで5日もなかったので、wordpressとkintone連携ネタ三題噺というタイトルで開発時のネタを基に書かせて頂きました。あと、ブログについては多数書いたのですが、その中でも特筆できる記事としては、地方の応援記事が印象に残っています。春に淡路島でのパソナさんでの地方振興事業を見学させて頂きました。その記事を書かせていただきました。また、秋に福島県郡山市に二度にわたってお呼びいただきました。その1回目の訪問で郡山市に好印象を持ったこともあり、福島県を応援する意図の記事(まとめその1その2その3)を書きました。2016年は書くことへの情熱が尽きることない一年となりました。これについては来年も引き続き切磋琢磨していこうと思っています。
§   今年は地方との繋がりも大きく育った一年でした。上に書いた淡路島への視察訪問は、後日お二方と仕事の提案にまで結びつきました。そのうち一人の方とは実際のお仕事にも発展しました。また、埼玉でお会いした福島県の皆様とのご縁は二度の福島訪問にも繋がりました。それは、私自身が地震以来数年におよんでもっていた福島への思いが多少成りとも満たせた瞬間です。また、山口の方々とは何度か酒席をご一緒させていただき、山口や東京の会場とつないだ勉強会では発表までさせて頂きました。こちらも次なるお仕事に繋がっているのがありがたい限りです。
§ 妻のココデンタルクリニックは、思い切って大幅にWEBサイトをリニューアルしました。それもあってか、一時は新規患者さんが多数来院するなど、ようやく軌道に乗ったように見えます。ただ秋以降、ブログ執筆が息切れとなってしまい、それが残念です。そういえば春先には名高達郎氏をクリニックにお招きし、妻と私でインタビューを受けるという経験もしました。いわゆるインタビュー商法に敢えて乗っかってみた感じです。また、ココデンタル主催のイベントも一回開催し、行田市で救急救命医をしていらっしゃる小山先生をお呼びしてのセミナーを開きました。妻自身は引き続き人脈を増やしたり、AGEという新たな目標を見つけたりと、他の歯科診療室とは差別化を図っています。クレジット決済も導入しました。この前向きな感じで来年も続けてもらえれば。
§ 常駐先での仕事は半分に減らしたこともあり、私の中での重みがだいぶ落ちてしまいました。でも、なんとか引き継ぐ後任の方と協力しながらやって行きます。パフォーマンスが落ちてしまったのは申し訳ないですが、こういう形態でやらせてもらっていることは感謝です。

公私の「私」

●家族との一年
§ 長女は高校に、次女は中学に。環境が変わり、娘たちそれぞれに新たな人生の幕が開けました。少しずつ子離れするように努めていますが、やはり寂しさもあります。ただ、私の場合、娘たちそれぞれとさしで会話ができるので、まだ恵まれているのかもしれません。
§ 我が家も御多分にもれず、スマホのもつ魔力に振り回された一年でもありました。特に次女にはその悪い面が出てしまい、悩まされました。私は仕事に忙殺され、妻もごひいきのヅカスターの退団にぶつかってしまったのも間が悪かった。吹奏楽の楽しさを通じて前向きに生きて行って欲しいと思いますが、来年以降、生きていくための道筋をどうやってつけて行ってやれるか、正念場だと思っています。道筋を付けるというより、道筋を切り拓くためのスキルをどうやって身に付けさせるかです。どうにか時間を作らないと、というのが課題です。
§ 長女は無事に希望する高校、それも普通科ではなく芸術系の学科に合格出来ました。友達もたくさん出来、高校生活を心底満喫しているようです。多様な世界観の持ち主が集まった学科だけのことはあり、それぞれの世界観の違いを尊重しあえている様子。理想的な交流ですよね。我が娘ながら羨ましいと思います。個人事業主として初めて仕事がいただけたのも今年でした。その仕事とは、タカラヅカの某スターさんのイラストでした。納入時にはイラスト独自の納入方法に従わねばならず、私も手伝いました。でも、価格や仕様交渉は自分でやりました。しかも、私や妻が紹介した仕事ではなかったことは言っておかねば。妻が以前Facebookにアップしたタカラヅカトップスターのイラストがたまたま目にとまり、そこから発注が来たのです。その後、私の会社からもロゴを発注しました。引き続き高校生活を満喫してもらえるよう応援したいと思います。
§ 次女は、中学校に入って壁にぶつかった一年です。悩んだ末、吹奏楽を選び、そこで一生懸命活動しているようです。でも習い事との両立が難しくなりました。吹奏楽では何度も人前で演奏し、チアコンペティションでの頑張り、カポエイラでも昇段試験に合格しました。学業では今イチですが、なんとか本人がしたいことを探している姿が印象に残りました。ただ、スマホでは本人も痛い目をあったらしく、来年は依存度を高めないための競り合いがあるでしょうね。
§ 昨年よりはかなり減りましたが、家族とはなんだかんだと出かけた一年でした。ここ二年続けていた私の両親を含めての夏旅行は学校の部活とも重なって行かれませんでした。でも、正月は難波駅にラピート。そして北野天満宮、平野神社、嵐山へ。靖国神社へも家族で訪れました(1月)。小山のいちごの里や谷中遊水地、佐野厄除大師に行ったあと、佐野ラーメンを食べたのは春(3月)。長女のチア卒団式を見届けたのも3月です。家族で温泉に行き、写真館で写真を撮り、カラオケに行ったのも春爛漫の4月です。5月には鳴沢氷穴にくぐってもみじ台に登り、締めをほうとう不動で締めたのも楽しい思い出です。妻のココデンタルが主催のセミナーは5月。6月は体育祭を観にいき、7月は座間にひまわりを観にいきました。そうそう、海上自衛隊横須賀基地で「たかなみ」に乗せて頂いたのも7月のことでした。8月はバレエ発表会やチアコンペティションで頑張った姿を家族で応援しました。実家にも帰省し、時間のない中ですが宝塚大劇場へも家族で観にいきました。9月は長女の高校の文化祭に家族で訪れ、品川アクアパークでも見事なショーも見てきました。10月は次女の誕生日のお祝いで始まり、10月末には帰省を除けば今年唯一の家族旅行だった長崎へ。ハウステンボスへようやく連れて行くことができ、長崎原爆資料館や浦上天主堂にも連れて行けました。11月にはDiamond☆Dogsのコンサートへ家族で出かけました。12月もクリスマスや長女の誕生日を一緒にお祝いできました。こうやって見ると、なんだかんだと家族で揃って行動できていたのかもしれません。
§ あと、娘と2人で行った場所も想い出深いです。長女と二人では、イラスト買い出しに町田に行ったり(1月)、高円寺のふくろうカフェバロンに友人親子に連れて行って頂き(4月)、高校入学式(4月)、ランチを一緒に(9月)。次女と二人ではカポエイラレッスンを何度も送迎し、中学授業参観(4月)、ステーキを一緒に(5月)、カウンター鮨を一緒に(5月)、吹奏楽演奏会(9月2回)、芹が谷公園でのチアイベント(10月)、吹奏楽アンサンブルコンサート(12月)、年末の帰省(12月)が一緒でした。長女と次女と三人では、次女のお台場でのカポエイラ昇段試験(5月)、町田リス園(7月)でした。
§ 他にも、妻と長女の組み合わせでは大妖怪展(8月)、日光金谷ホテル(9月)、日光東照宮(9月)、丸沼、湯滝、竜頭の滝(9月)など。妻と次女の組み合わせは、茅ヶ崎のTouch is Loveジーンズストアさんへ(1月)、チアや吹奏楽やカポエイラのイベントや、ゼルビア開幕戦vsセレッソ大阪(3月)、高滝湖、養老渓谷(8月)。家族とのイベントが減ったと思っていたけれど、なんだかんだと出かけてますね。

●私自身の一年(交友関係)
§ 今年は元々は関西で月の半分の時間を過ごす予定だったのですが、それが無くなってしまいました。でも、少ない機会を縫って関西の友人たちとの交流ができました。恩人である先輩のご霊前へのお参りもできました。また、高校時代の親友には大阪で酒飲みに付き合ってもらい、大学の同輩後輩とは4月と8月の二度にわたって飲み会を開いてもらいました。関西の30年来の友人が東京に出てきた際におでんを共に突いたのも思い出です。また、それ以外にも上に書いたとおり、淡路島を取り持つご縁で何人かの知己が兵庫に出来ました。それは大きいです。また、福島県や山口県の方とも何度か飲む機会があり、私自身の地方への目が広がりました。あと千葉の市川や船橋といった場所では、火鍋会やkintone Caféでも多数のつながりを頂きました。同じ大学の交友が船橋で同時に四人めぐり合うという偶然もうれしい年でした。
§ 今年もまた、鉄道や城巡りといった旅を愛する友人二人と、茨城の逆井城跡公園を観にいったり、秋には山梨の勝沼巡りでもお世話になりました。このような旅を共に出来る友人がいることに感謝です。今後とも旅を愛する人生にお付き合い頂ければ嬉しいです。
§ 今年は寺社仏閣への訪問でも印象深い年となりました。1月には靖国神社の本殿に参拝するという経験も出来ました。また、6月には戸隠五社参拝のツアーに参加させて頂き、お神楽や護摩焚き、奉納太鼓を目の前で見るという幸運や、公明院での写経体験も思い出深いです。長崎では浦上天主堂も初めて訪れました。これもまた宗教的な荘厳さに打たれたよい経験です。自社仏閣とは少し違いますが、日本民族学の泰斗である柳田國男氏の故郷を求めて福崎を訪れたのも良い思い出です。

●私自身の一年(文化活動)
§ 読んだ本のレビューを記す読ん読ブログの執筆は、主に2015年に読んだ87冊分となりました。レビュー執筆は、私の中では大切なライフワークとなりつつあります。自分が何を読み、何をインプットし、どういうアウトプットを行うか。ただ、仕事を優先する関係上、どうしてもアップは後回しになっています。読んでからアップするまでの日数も1ヶ月まで縮めることを目標にしていましたが、11ヶ月かかっています。この期間を質を落とさずに早めることが課題です。舞台観劇と映画鑑賞のレビューについては、遅れずに書けているので何とか縮めて行きたいと思っています。ただ、書くことへの熱意は衰えていませんので、引き続き続けていくつもりです。
§ 読書については、今年は103冊読みました。また、ジャンルを問わずの乱読傾向は相変わらずです。その中でジャンル分けするとすれば、ビジネス書、歴史、ミステリ、時代小説、文化論が多いでしょうか。戦後70年に関する書籍が目立った一年でもありました。いずれも今年の私の知的関心の方向性を示しています。103冊についてそれぞれに思い入れは深く、その中のベストを選ぶといったおこがましいことはしません。今のところそのうち7割についてレビューは書けているので、徐々にアップする読書レビュー(読ん読く)をご覧頂ければと思います。なお、今年度話題となった本についてはあまりよく知りません。ゆくゆくゆっくり読むつもりです。
§ 映画鑑賞については、今年はたったの3本しか見られませんでした。「グランド・イリュージョン 見破られたトリック」「マダム・フローレンス! 夢見るふたり」「ローグ・ワン スター・ウォーズ・ストーリー」。それぞれが映像や演技など観るべきところがあり、レビューにも書きました。それ以外でもAmazon Primeで数本ほど映画を観ましたが、今年はやはり映画を観られない年でしたそれがとても残念でした。
§ 舞台については、今年度は3本の鑑賞でした。3本いずれも素晴らしい内容でした。「桜華に舞え/ロマンス‼︎」は宝塚星組トップスターの北翔海莉さんと妃海風さんの退団公演。薩摩の桐野利秋の散りざまに宝塚人生の散りざまを重ね、全編薩摩弁で通したものです。「噂 ルーマーズ」は喜劇の巨匠ニール・サイモン作ということで、良きアメリカの喜劇が堪能できました。「双頭の鷲」はジャン・コクトー作であり、宝塚のスター達がミュージカルとして演じていましたが、「エリザベート」と表裏をなすような戯曲としての確かな骨格に、宝塚流の演出がうまく噛みあっており、素晴らしい体験でした。
今年は仕事上でお客様のサービス紹介のためのドラマにエキストラ出演させて頂きました。演ずる側としてドラマに携われたことは貴重な体験でした。

§ 音楽については、今年は友人とスターダスト・レビューのコンサートに行きました(9月)。さらには、家族で赤坂BlitzでのDIAMOND⭐️DOGSのコンサートに行きました(11月)。映画を観る時間が取れなかったのと同じく、コンサートを観る時間もなかった一年でした。ただ、今年の我が家は吹奏楽の年でした。中学生になった次女が吹奏楽部に入部し、ユーフォニアムを担当するようになったからです。吹奏楽部の発表会や演奏会には時間を作っては聴きにいきました。4回ほど。その内の一回は合唱を主とした中学校の音楽祭で、審査員を務める娘の姿をしかと焼き付けました。
また、今年は音楽を聴きながら仕事をする機会が増えました。Google Play Musicの恩恵です。かなり頻繁に利用しました。様々なアーティストやジャンルの曲が聴き放題なので、仕事の能率も向上しました。特に、2016年は洋楽の大物アーティストの訃報が相次いだため、その度にGoogle Play Musicにはお世話になりました。David Bowie(1/10)、Glenn Frey(1/18)、Maurice White(2/3)、Keith Emerson(3/10)、Prince(4/21)、Pete Burns(10/23)、Leon Russel(11/13)、Greg Lake(12/7)、George Michael(12/25)といった亡くなられたミュージシャンは高校時代から良く聴く方々です。彼らの死去に際しては三本ほどブログ(その1その2その3)として書かせて頂いたりもしました。
他にもジョージ・マーティン、パパ・ウェンバ、ロッド・テンパートン、ポール・カントナー、レナード・コーエン、富田勲といった方々が亡くなられた一年でした。
そんな訃報も多かった一年ですが、ボブ・ディランのノーベル文学賞受賞は正直うれしいニュースでしたね。ブログにもアップしました。
ですが、私自身は流行の音楽からますます遠ざかってしまい、仕事に没頭すればするほど世の中の流行に触れる暇ガない矛盾に直面する一年でもありました。

§ 美術については、昨年の私は盛り上がったのですが今年は少し低調でした。写真ではなく絵で私の日々をアップすることは去年に引き続き全く手がつかず。鑑賞活動としては、5月に富士フォトクラブ新宿での「第7回 TKフォトクラブ作品展 四季の彩景」を観にいき、山への想いを描きたてられました。さらに6月には妻と東京都庭園美術館へ「メディチ家の至宝 ルネサンスのジュエリーと名画」で昔の写実絵画や工芸の粋に酔いしれました。7月には市ヶ谷の山脇学園で催されていた「カーモビルアート連盟作品展」で機械フォルムの美しさに見入ってました。8月には妻と長女とで江戸東京博物館の「大妖怪展」へ。日本の美意識の中に潜む妖怪の役割について考察を深めました。
§ スポーツについては、正直なところ低調でした。スキーもソフトボールもテニスもマラソンもやらないまま一年をおえてしまいました。ただ、あとで触れますが、滝巡りの一年だったので、山歩きは何度も行いました。中でもパーティーに参加して大菩薩嶺へ登頂したのは良い思い出です。私にとっては生まれて初めての日本百名山登頂です。また、衝動的に町田の家から所沢へ自転車で往復したのも今年です。妻とは西澤渓谷の山歩きや、家族での富士山麓のもみじ台登頂も果たしました。それと私もお仕事でお世話になっている方に卓球に連れて行って頂き、何十年振りかにラケットを握りました。あと2016年はオリンピックイヤーでした。私も中継はあまりみられませんでしたが、ニュースその他で熱戦の感動を共に体験しました。広島東洋カープの25ぶりの優勝や、大谷選手の二刀流といった記憶に残る出来事もありましたが、イチロー選手が大リーグ通算3000本安打を達成したことは、同い年としてとても勇気をもらいました。2月には清原元選手の覚せい剤騒動もあって水道橋の野球体育博物館に行き、私の野球史好きの血を鎮めてきました。サッカー観戦も何度か行きましたが、町田ゼルビアのJ2開幕戦にセレッソ大阪を迎えて善戦し、しばらくは首位を走っていたのも印象に深い一年でした。それと久しぶりに味の素スタジアムにFC東京VS横浜Fマリノスの試合もご招待頂いたのも思い出深いです。

§ 今年はお酒文化へ親しんだ一年でもあります。2月に妻とウィスキー検定3級を受検に行きました。妻は残念でしたが、私は合格できました。こうやって勉強するのはとても大切なこと。そのためにも、月一度恒例としている一人飲みで勉強したいものです。仕事を冷静に振り返り、じっくりとした一人の時間が持てるのがとても貴重です。行かれなかった月もありましたが、大体は一人で飲めました。それと、9月に妻と参加させて頂いたほっこりバスツアーで山梨のメルシャンワイナリーと
養老酒造の見学をさせていただいたのもよい勉強の機会です。バスの中でもずっと酒盛りで、私は寝落ちしてしまったのですが・・・。あと、六本木で催されたベルギービールウィークエンドとウィスキーフライトに続けて参加し、世界の酒文化の芳醇さに酔いしれました。もう一つ。秋になって日本のクラフトビール文化の発信地として著名な両国のポパイでのビールセミナーを受講し、ビール文化の深みを覗くことができました。

§ 今年は生涯のプライベートの目標を定めました。それは、全ての日本の滝百選の滝訪問。全ての関東・関西・東北の駅百選の駅訪問。そしてなるべく多くの日本百名山の登頂です。その結果、今年訪れた滝は23箇所を数えます。そのうち6か所は日本の滝百選に選ばれています。西から順に「原不動滝」「龍双ヶ滝」「七ツ釜五段の滝」「払沢の滝」「銚子ヶ滝」「乙字ヶ滝」です。いずれも素晴らしい経験でした。駅も20箇所以上は訪れ、それぞれで写真を撮りました。そのうち東北の駅百選は「磐梯熱海駅」、関東の駅百選は「横須賀駅」、中部の駅百選は「越前大野駅」、近畿の駅百選は「嵐電嵐山駅」「平福駅」とどれも1箇所以上訪れることができました。あと、日本百名山はスポーツの欄にも書いたとおり大菩薩嶺への登頂を果たし、まずは第一歩を記しています。

あらためて「公」「私」を振り返ってみて、良い一年だったと思います。ですが、来年はさらに私の時間を確保しつつ、公も成果を出さねばならないでしょう。引き続き努力を重ね、皆様のご助言を受け入れ、良い年にしたいと思っています。

以下は今年の公私イベントを全て表にしています。

こちらをクリックすると表示切替


Connect 2016 in Koriyamaに参加します


お知らせです。

11/12-13に福島県郡山市でConnect 2016 in Koriyama, with UDC (ハッカソン)が開催されます。
http://www.techno-media.net6.or.jp/newmedia/human/1371

そこに弊社も参加させて頂くことになりました。ただし、参加といいましても、皆さんと一緒にアーバンデータチャレンジ(UDC)2016の応募を目指してアプリを作る側ではありません。アプリを作るための技術セミナーの講師として参加させて頂きます。弊社代表が担当する技術セミナーはkintone。

当日は、福島に対する想いを沢山お持ちの皆様のアイデアが、アプリ開発を通じて実現されてゆくプロセスを目の当たりに出来るはずです。熱気溢れる場となることでしょう。奇想やビジネス感覚に溢れたアイデアにも出会えることでしょう。弊社代表もハッカソンには今まで誘われていながら、一度も参加できていませんでした。今回はとても刺激を受けることになるはずで、今から楽しみにしています。

残念ながら応募者多数により、新規受付は締め切られてしまったそうです。が、当日の模様については可能な限りブログにてレポートさせて頂きたいと思っています。乞うご期待!


kintone Café 福島 Vol.1 ではkintone愛を語りました


%e5%86%99%e7%9c%9f-2016-10-01-14-57-489/30の郡山商工会議所でのセミナーについては、こちらのブログで反省点も含めて報告させて頂きました。こちらは、その翌日10/1に行われたkintone Café 福島 Vol.1についてのエントリーとなります。

セミナーを終えてホテルに投宿した私は、反省と手応えの両方を握り締めていました。今日のセミナーで得た反応を明日のkintone Café 福島 Vol.1にどう活かすか。反省点を改善して臨むのか、それとも手応えをより伸ばして臨むのか。

私が選んだのは、手応えをより伸ばす方でした。もちろん、セミナーで得た反省点は反省点として真摯に受け止める必要があります。しかし、私は元々減点評価でなく加点評価で物事を捉えがち。それにkintone Café 福島 Vol.1を翌日に控え、今さら付け焼刃の修正もないだろうと。それよりも、今日のセミナーで得た手応えを元に、長所をより出していこうと判断しました。

もともと主催者の方に事前にお伝えしていた私の演目のタイトルは「開発者から見たkintone」。であれば、タイトル通り、開発者から見たkintoneの良さをとことん語ってやろうではないか。そう前向きに考えました。kintoneと出会って感じた衝撃や、そこから私が得た技術者としての手応え、管理部門として埋没し掛かっていた自分が再び技術者としての可能性に目覚めるまで。そんな自分のkintone愛を書きまくってやろうではないか、と。しかも、kintone Café 福島 Vol.1には、私をkintoneに誘い、その後エバンジェリストにまで推挙して下さった方がサイボウズ社からいらっしゃるとか。であれば、その方への御礼もしたいではないですか。そしてそういった私の思いを話すことで、福島や郡山の技術者の皆さんにkintoneの良さが伝われば、開発プラットホームとして選ぶに値するとに思って頂ければ本望ではないか。そう思いました。

それからは、月末締めの準備と並行しつつ、喋る内容を再度練り直す作業に没頭しました。そして、練り直すと同時にスライド原稿にも手を入れました。結果、書き上げた私の演目内容は、今までmixiでもTwitterでもFacebookでもブログでも書いたことのない、個人的な技術者としての想いが詰まったものになりました。

その夜は郡山のThe Bar Watanabeでお酒を心行くまで楽しみ、翌朝も月初の仕事をこなした後、気合を入れて往復40キロの自転車旅を敢行しました。おかげでkintone Café 福島 vol.1の会場であるCO-BA KORIYAMAに到着したのは開始ぎりぎりの15:00でしたが。

%e5%86%99%e7%9c%9f-2016-10-01-15-06-35会場となるCO-BA KORIYAMAはとても広く、しかもスツールやカウンターテーブルが置かれたり、ソファに絨毯のスペースがあったりと、とても居心地のよい空間となっていました。なぜか中央に鎮座する卓球台兼テーブルもポイント高いです。そして、人数が前日のセミナー並みに集っています。しかも、年齢層がぐっと下がり、いかにも技術者が集った感が醸し出されてまして。これは多分、セミナーに比べて技術者率がぐっと上がったということでしょう。期待度をひしひしと感じました。そして、サイクリングの疲れでフラフラでしたが、私が昨夜書き直したトーク内容が通ずる、という予感がしました。

私の話した内容はこんな感じです。

%e5%86%99%e7%9c%9f-2016-10-01-23-19-36初めてのサイボウズ社との出会いから、kintoneβテスターとしての申込み、ユーザー会でサイボウズ社の社風に触れたこと、kintone発売開始と私自身kintone案件受注。この辺りのエピソードを当時のTwitterの画面ハードコピーをお見せしながら紹介しました。次いで、私が常駐先の多忙により全くkintoneから離れてしまったこと。その間、技術者としてkintoneの進化に全く付いていけない焦り。技術者として袋小路に入ってしまったという危機感と絶望。最後に、エバンジェリストとしての推挙から法人化を経、ジェネラリストよりもエキスパートたれ、という言葉に開眼し、kintoneエキスパートを目指すことに社業のこれからを賭けようと思ったこと。そういった私の変遷を語りながら、一人親方の技術者としてなぜkintoneがふさわしいかを述べました。商談の場で要件定義と実装とテストが済んでしまうkintoneが、要件定義書や内部設計書やテスト仕様書、エビデンスの作成工数を省ける。それがなんでも一人でやらねばならない一人親方にとってどれだけ現状打破のツールとして魅力的か。そんなことを述べました。

CO-BA KORIYAMAは、演台と聴衆の皆様との距離が近い!私の前に喋られたお二方(サイボウズ社の後迫さん、テクネコ社の加藤さん)はどう思われたのか知りませんが、私にとっては聴衆との間合いがとても喋りやすかったです。前日のセミナーと差別するため、敢えてクダけた雰囲気で喋るつもりでしたが、会場の雰囲気もそれを手助けしてくれました。また、距離の近いことで、うなづきながら聞いて下さる方、笑って下さる方の反応もしっかり受け止められましたし。しかも、全く時計を見ずに喋ったにも拘らず、喋り終えたのは丁度30分きっかり。自分の持ち時間ぴったりでした。これには本気で驚きましたし、自分でも凄え!と思いました。

でも、良かったのはここまで。その後の質疑コーナーでは、まだまだ自らの知識不足を反省しました。トークでも触れたとおり、私が本格的にkintoneとの取り組みを再開したのは昨年秋。それまでの4年分の空白を埋めようと10ヶ月間追いつこうと努力してきました。しかし、まだまだ追いつけていないことが露呈しましたね。こなした案件数としてもまだまだ少ないと思わされました。

例えば、ユーザーが大量のアプリを作った際のアプリ管理はどうするか、というご質問。私自身が関わり納入したお客様は、こちらが提供したアプリ以外は自ら作らない方がほとんど。大量にアプリが存在する際のノウハウについて全く蓄積がなくお手上げでした。また、もう一つ抜かったと思ったのは、バッチ実行をどうするか、という質問でした。ここで私はkintoneのコマンドラインツールのことをすっかり失念してしまっておりました。また、スペース機能の活用についても、経験不足を反省しました。その辺りは、後迫さんと加藤さんにしっかりとフォローして頂きました。ありがとうございました。

こういった反省は、今後沢山の案件をこなして行くことで身につけるしかないでしょうね。kintone Café 福島 Vol.1で得た私の課題は、アプリのカスタマイズよりもむしろ運用面。この課題をどう埋めていくか。そこに努力を集中すべきという気付きが得られました。様々な業種、そして職種のお客様とkintoneを使ったシステムを組み上げて行く。そして運用面のノウハウを少しずつ積み上げて行く。これしかないと思います。

kintone Café 福島 Vol.1では、kintoneのβ版から関わったけれど、そのあと4年のブランクがあったことについて率直に述べました。任命を頂いてしばらくは肩書だけのエバンジェリストでしかなかったことも正直に言いました。しかし、昨秋から活動を再開し、今は伸びしろあるエバンジェリストになろうと努力していることも述べました。今さら経験を飾ろうとも思いませんし、運用ノウハウ不足をハッタリで補おうとも思いません。運用面の経験はこれからも引き続き積み上げ、そのためにもこれから頑張りで沢山のkintone案件を受注できるように頑張るしかないです。そして、その通りに郡山から帰ってからの二週間で、複数のkintone案件の引き合いを頂けています。ありがたいことです。

そういう意味でも、9/30の「脱Excel! 「kintone(キントーン)」で業務改善セミナー」とkintone Café 福島 Vol.1が地元の新聞で記事として頂いたことは、励みとなりました。両記事共に写真に私が登場しています。また、前者の記事には社名や私の名前までも載せて頂いています。仕事に関して新聞に名前が載ったのは初めてなので、正直嬉しいです。

あとは、今回のセミナーとkintone Caféで私が喋った内容が福島県の技術者や会社経営者の皆様にとって何らかの助けになったのであれば、これに勝る喜びはありません。そもそも私が何ゆえ郡山からの御招聘にお応えしたか。それは福島県の人々に何か貢献したいという思いです。これまで阪神・淡路大震災の被災者として、福島県の皆さんには何も出来ていませんでした。そういった私の心情についてはまたブログに書くつもりです。これからも今回のようなお誘いはなるべくお受けしたいと思っています。

その夜の懇親会は、とても初訪問の地とは思えぬほど、気持ちよく飲ませて頂きました。テーブルの下で足が攣るぐらいに。なのにうたた寝してしまうくらいに。

改めまして、kintone Café 福島 Vol.1の主催者の皆様、参加者の皆様、ありがとうございました!


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


先週末、セミナーの講師としてお招き頂き、郡山に行って参りました。
今回は、郡山地域ニューメディア・コミュニティ事業推進協議会様からのご依頼でした。題して、
「脱Excel! 「kintone(キントーン)」で業務改善セミナー」
http://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があったのですが、ホテルに帰ってからも資料の改訂作業にも熱がこもりました。

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


2期目を迎え、2週間を経ての所感


4月に入ってから、ワークスタイルを少しだけ私の理想に近付けています。

Facebook静かな自宅では開発を集中して好きなだけ行い、一方では営業に商談に交流会にセミナーに自由に動き回る。といったような。もちろん、それにはリスクも覚悟も伴います。バランス感覚がより一層求められることは言うまでもなく。そんなわけで、今日から外回りの際はネクタイを締めることにしました。身だしなみ云々よりも自分のけじめのために。

今日は練馬のお客様の下へ訪問させて頂きました。社長様より経営哲学をじっくり聞かせて頂き、会社内も存分に見学させていただきました。実に見事な運営ぶりや、社員様やパート様との関係を実に上手に築いておられる姿に、感銘しました。アナログとITの長所が実にがっちりとかみ合っている運営を見るにつけ、非常に刺激になりました。ありがとうございました。

弊社も今後は人を雇って作業を分担していかねばなりません。すでに4月から一部の作業についてはお手伝いをお願いし始めています。でも人を自在に使いこなし、適材適所に相乗効果を発揮してもらうレベルに達するにはまだまだ私自身の精進が必要です。努力すべきと思っています。

4月に入ってからは、私自身の開発者としてのスキルをもう一度磨き直すべく、あえてタイトな納期のLAMP案件を請け、CUIでの操作も含めた開発・テストに没頭しています。一方ではkintoneエバンジェリストとしての動きを活発にしています。kintone Café 埼玉 vol.1の事務局を担当し、さらには別のkintone Caféの準備メンバーとしても動いています。そういった動きを重ねることで、人前でしゃべる技術を磨くという私自身の課題も少しずつ前に進んでいるように思います。今後もそのような場で登壇の場数を重ねるようにして、少しずつ経営者としての実践を身に付けて行きたいと思っています。

kintone案件のコンサル兼開発担当も2月から請けさせて頂いているのですが、そちらでも追加開発のご用命を頂きました。さらには今日、ありがたいことに別のお客様からもkintone案件をご用命頂きました。何とかkintoneエバンジェリストとしての顔でも、少しだけ見せられるようになってきたかな、と思っています。

ただ、私自身のマンパワーも限られています。開発とテストと営業と商談に加え、常駐先での作業もまだ続きます。トイロハさんへの記事アップは2週間ほど出稿出来ていません。トイロハさんは今後も続けていきたいと思っております。そんなわけで、交流会の出席はかなり厳選しなければ、と思っています。今日お話を聞かせて頂いた経営者の方も、交流会は厳選して参加されておられるとか。私も少し見直す時期が来ているのかもしれません。

でも、お蔭さまでなんとか4月からのワークスタイル変更もいい滑り出しを見せています。これも皆さまのお力添えの賜物と感謝しております。その場限りの儲け目当てではなく、お互いが永きにわたって良い関係を得られるよう、引き続き努力していきたいと思っております。

今後ともよろしくお願い申し上げます。


kintone Café 埼玉 vol.1を終えて


4/2にkintone Café 埼玉 vol.1が開催されました。
写真 2016-04-02 15 00 18

15名の参加者をお迎えし、なかなかに盛り上がりを見せたCaféとなりました。初回にしては上々の出来ではなかったかと思います。

vol.1の開催概要はdoorkeeperに記載の通りです。

内容については発起人の新妻さんによるこちらがすばらしく簡潔でよいです。

本当に皆様、よい発表だったと思います。私自身もとても参考になるところがありました。改めて発表者の皆様、参加者の皆様、ありがとうございました。

私自身は、ハンズオンを担当させて頂きました。そして、自分の知識不足を痛感しました。ただ、ハンズオンを担当して嬉しいこともありました。それは、とある参加者の方から私のハンズオンの分かり易さを評価して頂いたことです。これは私にとってはハンズオンそのものを評価されただけでなく、別の意味でも嬉しいことでした。

昨夏、私はエバンジェリストとして伸び悩んでいました。今後の活動について、どうすればいいのか、と。常駐先の仕事は忙しく、バージョンアップの度に新機能が実装されても検証の時間すら取れない焦り。ユーザー会やkintone Caféにもほとんど出る暇のない日々。それはただ、ひたすらに悶々とする日々でした。技術者としての自らのキャリアパスにとって、kintoneが最適解の一つであることは確信を持っていました。では自分のkintoneエバンジェリストとしての価値はどうすれば打ちだせるのか。

そんな葛藤の中、私が選んだのは最新の技術を追うのではなく、まずkintoneの本質を伝える道でした。kintoneに初めて出会った時の感動を愚直に伝えるのも、伝道師-エバンジェリストの役目なのではないかと。

もくもく会やkintone Caféで出会うエバンジェリストの皆さんは本当に優秀です。多分今の私よりもずっと。kintoneの可能性を限りなく拡げて行って下さる方があってこそ、kintoneの裾野は広がっていきます。無くてはならない方々だと思います。であれば、技術の追求は他のエバンジェリストの方にお任せして、私は愚直に初心者の方に、ユーザーの方に業務目線でアプローチしてみればよいのではないか? 元々私自身、ユーザー出身者として、ユーザー目線のシステム構築を売りにしていたのではなかったか、と。

そんな中、ご縁があってトイロハさんで初心者向け記事を書かせて頂く機会を頂きました。
https://toiroha.jp/media/detail/185
連載を読んで頂いている方はお分かりのとおり、こちらの連載はかなり異質です。見方によっては、IT女子二人の試行錯誤がだらだらと続いているだけ、とも読めます。最短距離をゆき、効率的合理的に説明を果たすアプローチとは一線を画しているのがこの連載です。でも、私は本連載の中で、敢えてユーザーの立場からの試行錯誤の跡を隠すことなく書いてみようと思いました。

まだ、このやり方が正しいかどうかはわかりません。私自身もこのアプローチでよいのか迷うこともあります。でも、少しずつ評価を頂くことが増えています。なので、今回のハンズオンも同じアプローチを採りました。トイロハさん連載に登場するIT女子だけでなく、著者自身もまた試行錯誤の中にあることを隠さないのと同じように、ハンズオンのスピーカーもまた、修行中であることを隠さぬアプローチ。だから、今回のハンズオンがある参加者の方から評価されたことは、私にとって特別な嬉しさがあった訳です。

今、kintoneは追い風にあります。最近、特にそう思う出来事が増えてきています。

電車に乗っていてサラリーマン同志の交わす会話から「kintone」の言葉が聞こえます。システムの提案要件に当初から「kintone」の含められる案件が増えています。今日も、とある案件の応募先のご担当者様とお話しする機会を頂きました。その中で、弊社以外にも「kintone」による提案が多々あったと教えて頂きました。何よりもお客様の下に伺って「kintone」の提案をすると反応が上々であるケースが増えています。間違いなくシステム構築案件の選択肢の一つとして、kintoneの地位は上がっています。

そういった波に乗るにあたり、私も技術者の端くれですからJavaScriptを駆使したカスタマイズや他システムとのAPI連携に挑みたい気持ちはあります。意図した動作が実現できた時の高揚感は、技術者冥利に尽きますし。

でも、私自身のエバンジェリストとしての存在意義は、きっとそこにはないのだと思っています。少なくとも現時点では。初心者目線を保ったままのアプローチ。まずは業務より始めよ、です。業務とkintoneの互いを活かして相乗効果を産むアプローチ。業務をシステムに合わせるのではなく、システムを業務にカスタマイズするのでもなく、両者の良いところを組み合わせるアプローチ。このアプローチでもう少しやってみようと思っています。

次回のkintone Café埼玉 vol.2。または準備中のkintone Café某所。スピーカーとしての腕前はまだまだこれから磨かねばならない私です。が、引き続き初心者目線でのアプローチは崩すことなく、kintone Caféに臨んで行きたいと思っています。まだkintoneを知らない方に、kintoneの良さを少しでも伝える。これもまたエバンジェリストのあり方の一つだと信じて。

昨夏から試行錯誤してきたエバンジェリストとして行くべき道がようやく少し見えてきた気がします。

これからも、弊社のブログなどでkintone Café埼玉やkintone Café某所のご案内は流して行きたいと思います。そして、その場でまだ見ぬ皆様とお会いできることを楽しみにしています。既存の業務要件を入口に、納品を出口としたシステムでは拾いきれなかったニーズを持ったユーザー様は、あちこちにいらっしゃるはずですから。


年賀状の宛名書きをkintoneにお願いする。WordとAccessを和えて


kintone Advent Calendarへの参加表明をしたはいいですが、ネタ選びで思惑が狂ってしまいました。ネタにしようと目論んでいたSansan API(eightではなくてSansanの方)とkintoneの連携。ところがSansan様よりAPIの技術情報をブログ等で出すことなかれ、と言われてしまいまして。
え、あと私の担当日まで3日しかないのに、どうしよう・・飲み会も続くし、年賀状も書いてないのに。・・・ん?年賀状? と思いついたのがこちらです。はがきといえば差し込み印刷。Wordです。Wordからkintoneを読み込めないか、という浅い思いつきで調べてみました。 あまり実践的な内容とはいえませんが、ごらん頂ければ幸いです。

本記事のネタは 2015/12/11時点のkintoneとWord 2010とAccess 2010で構築しています。12/12に予定されていたkintoneアップデートは延期されてしまいました。アップデートの後も本記事にある技術は使えると思います。
あ、それとQiitaから頂いたリマインドメールにはブログにアップしたurlを連携してもよいと書かれていたので、当方のブログにアップしました。不都合があればQiitaに上げなおします。

 

Wordの差し込み印刷

さて、まずはWordを立ち上げて下さい。メニューの差し込み文書から、宛先の選択を選びます。

1

 

すると、新しいアドレス帳というダイアログが開き、情報が入れられます。いいですねぇ。ちなみに私、Wordの差し込み印刷はほとんど触ったことがありません。

2

 

で、入れ終わって閉じてみると、mdbの保存ダイアログが出てきました。ほう、Wordの裏側はAccessだったんですね。これは思惑が狂いました。調べてみたのですが直接Wordを触って差し込み印刷の値を設定する方法がわかりませんでした。でも、Accessとkintoneって近いようであまり連携例を見かけません。この機会に連携も試してみましょう。ではAccessを任意の場所に保存してみましょう。

3

 

Accessの設定

Accessが出来ました。Address.mdbというやつです。じゃあこれを元にしてkintoneに一つアプリを作ってみましょうか。作成されたAddress.mdbにあるテーブルは一つだけ。Office_Address_Listというテーブルです。これをエクスポートして、csvファイルとして保存し、そのcsvファイルをkintoneに備わっているcsvからアプリを作る機能で作れば何とかなりそうです。

4

 

テキストエクスポートウィザードで出してみます。

5

 

カンマ区切りですね。あとは先頭行をフィールドとして使うにチェックを入れてください。kintoneのアプリストアでExcel/CSVからのアプリ作成で、先頭行に見出し行が設定されている必要があります。

6

 

じゃあ、この場所にcsvを作ってみましょう。

7

 

そしてkintoneへ

いよいよkintoneの出番です。アプリストアから「Excel/CSVから作成」を選びましょう。そしてAccess.mdbから出力したcsvファイルは、以下の通りとなっています。これはWordのアドレス帳のテーブルです。各項目のフィールドタイプはホームページとメール以外は「文字列(一行)」で設定しましょう。

8

 

無事、アプリが作成できました。あとはここに住所を入れて行けば、念願のクラウドでの住所録管理は目の前です。あ、それと、kintoneのフォームで各フィールドのフィールドコードの設定を以下の通りでお願いします。

            ふりがな(姓) → FamilyName_Furigana
            姓 → FamilyName
            ふりがな (名) → FirstName_Furigana
            名 → FirstName
            敬称 → Title
            会社名 → CompanyName
            部署名 → DivisionName
            役職 → Position
            郵便番号 → ZipCode
            住所 1 → Address1
            住所 2 → Address2
            住所 3 → Address3
            勤務先電話番号 → OfficeTelNo
            勤務先 FAX 番号 → OfficeFaxNo
            自宅電話番号 → HomeTelNo
            自宅 FAX 番号 → HomeFaxNo
            連名 → JointSignature
            連名敬称 → JointSignatureTitle
            電子メール アドレス → MailAddress
            ホーム ページ → WebSiteUrl
            市区町村 → City
            都道府県 → Prefecture
            国/地域 → Country

9

 

いよいよAccessからkintoneへ

kintoneにアプリを作ったら、今度はAddress.mdbです。このAccessとkintoneが連携できればよいわけです。ここで、Visual Basic Editorを開いていただき、ツール(T)→参照設定をお願いします。

10

 

参照設定でなにをするかというと、連想配列を使うのでMicrosoft Scripting Runtimeにチェック。それとmdbへのテーブル操作にADOを入れてみましょう。Access 10であれば ADO 2.8が無難でしょうね。これもチェックをお願いします。

11

 

つづきまして、以下の標準モジュールとクラスモジュールを入れてください。ファイルのインポートで可能です。なお、それぞれのモジュールファイルは用意しました。ダウンロードしやすいようにzip化しておきました。解凍してお使い頂ければ。あ、怪しくないので大丈夫ですよ ^_^

JSON
Mod_CommonDeclaration
Mod_DataTrust
Mod_GetKintone

12

 

さて、インポート頂いたファイルですが、ほとんどはそのままで使えるようにしていますが、皆様の環境に応じて若干の変更が必要です。そうしないと動きません。例えば、Mod_GetKintoneのファイルの19行目。ここで
Set objJSON = GetJSON("/k/v1/records.json?app=**") という記載があります。このアスタリスクの2文字は、先にkintoneに作ったアプリのUrlにある数字を入れてください。

12-3

 

続いて Mod_DataTrustです。ここは7行目。
Private Const TARGET_URL As String = "https://*******.cybozu.com"
という記述の****** の部分に、ご契約されているkintoneのドメイン名を当ててください。

12-1

 

さらに Mod_DataTrustです。ここは76、77、78、79行目に情報を入れて頂きます。
76行目はベーシック認証の情報です。BAsic_IDの部分にIDを。Basic_PWの部分にパスワードをお願いします。
77行目はご契約されているkintoneのドメイン名を****の部分に入力してください。
78行目はBAsic_IDの部分にIDを。Basic_PWの部分にパスワードをお願いします。
79行目はkintone内で使用するユーザーのIDとパスワードです。IDの部分にIDを。PWの部分にPWをお願いします。
12-2

さて、ここまででAccess.mdbとkintoneの連携は出来ました。AccessからMod_GetKintoneの中にあるgS_CmdDataRequeryClickを実行すれば、kintoneのデータを反映するのがわかります。

 

再びWord

さて、Wordに戻りましょう。Wordの文書は新たに作成して結構です。作成したら、差し込み文書を選びます。さらにはがき印刷を選んでください。

13

 

さらに、宛名面の作成を選びましょう。

14

 

するとはがき宛名面印刷ウィザードが開きます。

15

 

種類は、年賀/暑中見舞いを選びます。

16

 

さらに様式を選びましょう。好みで縦書きでも横書きでも結構です。

17

 

フォントも選びましょう。

18

 

差出人の情報を選びます。差出人を印刷するにチェックを入れると差出人情報が印刷されます。

19

 

既存の住所録ファイルにラジオにチェックして下さい。さらに、住所録ファイル名は、先ほどAccessのmdbを保存したパスを入力して下さい。

20

 

これではがき宛名面印刷ウィザードは完了です。

21

 

すると、年賀状のイメージと各項目のフィールドに、kintoneに入力した情報が出てきます。この時点で出ているのは、当初アドレス帳に入力して、Address.mdbに入った情報です。

22

 

違う宛先を表示させるには、差し込み文書からメニューの右にある矢印をクリックすればそれぞれの情報にアクセスできます。

23

 

それではこのWord文書を保存して閉じましょう。そして、もう一度開き直すと、以下のようなメッセージが表示されます。これは毎回Address.mdbの情報を見に行き、SQL文を発行してAccess.mdbの情報を取得していることを意味します。

25

 

さて、ここまで出来ているのであれば、もう一段階進んでみましょうか。
先程Accessにモジュールを組み込んで頂いた際に、「AccessからMod_GetKintoneの中にあるgS_CmdDataRequeryClickを実行すれば、kintoneからデータを取りに行ってくれます」と書きました。では、これをWordから行えるようにすれば、いちいちAccessを起動せずに済みますよね。
そんなわけで、GetKintoneFromWordをご用意いたしました。こちらもzip化しています。解凍したらGetKintoneFromWord.basが現れます。これをWordのVisual Basic Editorからファイルのインポートで取り込んで頂ければ。すると、Wordからkintoneの取り込みを行い、その結果をAccess.mdbに取り込むことが出来ます。なお、mdbの場所は C:¥kintone¥Address.mdb にある前提で作成しています。26

 

では、組み込んだマクロを実行してみましょう。メニューの表示からマクロ→マクロの表示を選びます。

26

 

一覧が出るので「アドレス帳最新化」を選んで実行を押してください。

27

 

そうするとkintoneで変更した内容がwordにも反映されます。これで完成です♪
どうでしょう? 今ならまだ年賀状に間に合いますよ♪

29

 

 


cybozu.com conference 2015に参加して


先日、cybozu.com conference 2015 Tokyoに行ってまいりました。https://cybozuconf.com/
私にとってcybozu.com conferenceは3年半前に参加して以来となります。

その時のcybozu.com conference 2012では「世界に通用する日本の企業クラウドを作る」という青野社長の基調講演から、各種セミナーにいたるまでじっくりと参加できました。その少し前に行われたcybozu.comのプレス発表会にも参加させて頂いた私は、海外製品が幅を利かせる現状にサイボウズさんが風穴を開けてくれることに期待し、心地良い期待感と昂揚感に胸躍らせたことを覚えています。

以来、cybozu.comの成長は素晴らしいものがあります。まさに日本発のソフトウェア企業として、有数の会社になっていると思います。私もその波に乗りたかったのですが、cybozu.com conference 2012の直後から参画したプロジェクトに忙殺され、まったくユーザー会にもカンファレンスにもお伺いできずじまい。忸怩たる思いをずっと抱えていました。Kintoneの正式リリース前からkintoneβ版で開発し、正式リリースとほぼ変わらぬ時期にお客様に販売管理システムを無事納品し、以来ずっと運用している自負を持つだけになおさら。

でも、現状をどうこう言っていても仕方ありません。現状をいかにして将来に役立てるかが重要です。今回のサイボウズカンファレンス2015ではセミナー2つのみの参加でした。しかし、その2つのセミナーこそが、今私が参画しているプロジェクトでの経験を将来に役立てるにあたり、ためになると思ったので参加しました。

「サイボウズで実現するNotesマイグレーション~事例に学ぶーNotesマイグレーション成功の鍵~」
「ただしく恐れるクラウドのセキュリティ」

最初のNotesセミナーですが、私にとって現状を活かすには最適なセミナーでした。今のプロジェクト行っている諸作業のうち、Notes Designerを使ってのNotesDB作成があります。正直なところクラウド全盛の今にあって、クライアント/サーバー(クラサバ型)システムによるNotesグループウェアが通用するかは微妙です。しかし、NotesはNotesで今まで広く使われていただけに、慣れた人には使いやすいのでしょう。私にしてもNotes Designerを使い始めたのはこの1、2年ですが、拡張性や機能自体は悪くないと思います。ただ、Lotus Scriptのデバッグやエディタなどがイライラするほどユーザーに優しくないことを除けば、やれないことはあまりないといってもよいと思います。しかし、それにはスキルがいります。NotesはNotesでクラウド化を推進していると聞きますが、多くの現場では依然としてクラサバ型の構成が主流でしょう。特定のNotes技術者を育成せねばならぬところ、開発者向けの環境充実にあまり力を入れていないところからすると、衰退も致し方ないのかもしれません。

しかも、Notes Designerを触って思ったのが、テーブルいらずの発想が、クラウド製品に似通っていること。普通はテーブル設計から入り、Create文を作ってストアド・プロシージャ―などを流してDBを作り込みます。しかし、Notesはいきなりフォーム設計から入ります。フォーム設計でフィールドとして項目を埋め込んでいくことで、それがテーブルとなっていく。この構成は実は、kintoneやSalesForce.comといったクラウドの代表的なアプリにも見えます。ここらに、両者に共通する点を見つけることができました。セミナーでうかがったのですが、青野社長がサイボウズ社を創業するにあたり、Notesの管理者をされていたことがベースにあったとか。これは知らなかった。

サイボウズさんでは、Notesマイグレーション事業を行うにあたり、ターゲットとなる製品をGaroonとkintoneで想定していらっしゃるようです。そして私はkintoneユーザーかつエバンジェリストの端くれでもあります。Notes Designerの現役開発者であり、かつ、kintoneの開発者。ここに私には現状を将来に向けて活かせる突破口を見出したのです。

また、私はkintoneには慣れていますが、Garoonはまだ触ったこともない状態。今回はGaroonに取り組むきっかけになるのでは、とも思いました。例えばNotes上の文書に貼り付ける添付ファイルの位置、これもGaroon上でほぼ再現できるそうです。これは大きいセールスポイントです。

ここ3年ほど、私の人生にとって、技術力の成長面では停滞していたといわれても仕方ありません。エバンジェリストにして頂いたり、法人化を成し遂げたり、診療所を開設したり、自治会で総務部長を完遂したりと個人的にはかなりの成長を遂げることができた3年ですが、最新技術の吸収ではかなり遅れを取っています。危機感も相当持っています。今回のセミナーは、そういった意味でも勉強になりましたし、今後の自分のスキルとして営業に加えていこうと考えています。

また続いてのセキュリティセミナー。これもまた重要です。実は今までもサイボウズさんのセキュリティに関するセミナーには参加させてもらっています。しかしやはり現役の運用本部長からのお話は、紙やディスプレイで読むのと違い、頭に入ります。クラウドに興味を持っていただくお客様の第一の要件は、業務を遂行することができるか、ということです。ただ、お客様自身、あまり口には出しませんが、クラウドのセキュリティへの不安はお持ちではないかと思うことがあります。それはまた、2016年1月からのマイナンバー導入を目前にした今、ますます注視されていることでしょう。私にとって、改めてサイボウズさんの施している万全のセキュリティに対する体制を伺わせて頂いたことは、良かったと思います。今参画しているプロジェクトでも、セキュリティ遵守に関する話は統括部門だけに当然耳に入ってきます。また、運用本部長の山本氏のセキュリティについての謙虚な姿勢も良かったです。100%安全ですというセキュリティに対する態度程危ないものはないと思っています。常に努力と改善しかないのだろうな、と思います。

今回のセキュリティセミナーの受講で新たになった私の知識は、今後のクラウド提案に活かせると思っています。会場でも配布していましたが、セキュリティ&運用基盤というパンフレットは常に最新版を持ち歩いていたいと思いました。説明を求められた際には対応できるように。

現場の作業の都合もあり、青野社長をはじめとした豪華ゲストの方々による基調講演は行かれず。また、夜の池上彰氏による特別講演も聞かれませんでした。しかし、たとえわずかな時間であっても、昨年は参加すら出来なかったことに比べたら状況は回復の途中にあるといえます。私も、このまま回復基調を維持し、次なるキャリアステップに役立てたいと思います。


kintoneのレコード詳細ページからAmazon商品データを参照するテクニック(3/3)


3.kintoneからのJavaScript呼び出しとJavaScript内でのAjaxの記載について

 ここでは、kintoneへのJavaScriptの適用方法その他の説明は割愛します。はじめよう kintone JavaScript API の記述が大変参考になります。私も最初はここから勉強しました^^

 ただし、本稿でもまた、前書きを書かねばなりません。恐縮ですm(_ _)m

 それは、kintoneからAmazon API呼び出しのタイミングについてです。冒頭でも挙げたように、本稿ではレコードの詳細画面でAmazon情報を呼び出すのが目的です。しかし、レコード詳細画面の編集時画面での実装については、本稿では触れていません。できなくもないのですが、現在の2014年9月時点のkintone JavaScript APIでは、レコード詳細画面のテキストボックスの値変更時にJavaScriptを呼び出すことができません。そのため、編集時画面でAmazonからの情報を表示させる意味がないと判断し、記載から外させて頂きました。ご了承下さい。ただし、レコード編集画面のフィールド値変更時イベントについては、2015/07/12の定期メンテナンスにおけるkintone API更新で実装されました。が、本稿ではまだ検証に至っておらず、掲載しておりません。ご了承ください。

 また、Amazonからの呼び出し自体にも、全く問題がない訳ではありません。Amazon側にリクエストを続けて投げると、Http/1.1 Service Unavailableのエラーが返ってくる場合があります。なので、リクエストはほどほどに・・・ということなのでしょう。このエラー対策については、jQueryのAjaxで、Errorハンドラから再帰呼び出しを試したのですが、calleeとuse strictが両立できていません。なので、時間をおいて再実行ということでご了承ください。

 最後にクロスドメイン制約についてです。本稿の目指す実装は、*****.cybozu.com から ****.jp/ または *****.co.jpといった違ったドメインのサーバーにAjaxリクエストを発行します。が、そのような別ドメインへのリクエストは、セキュリティ上脆弱になりかねないため、環境によっては簡単に通信ができないようになっています。本稿ではphpからkintoneへ渡すデータ形式をXMLにしました。JSONPを使えばクロスドメイン制約についても解決できるようです。が、今回はXMLを選択しました。ご了承頂ければと思います。随所にそのあたりについて

 あと、jQueryの呼び出しも必要となりますので、kintoneのアプリ設定画面から、JavaScript登録を忘れずに。

 さて、気を取り直して実装開始^^

 以下は、AmazonCallBookInfoDetail.jsの内容です。200行あるすべてのコードを開示しながら、適宜解説を加えていきたいと思います。

  4行目     jQuery.support.cors = true; はクロスドメイン制約をかいくぐるための呪文の一つです。

  5行目     kintone.events.on('app.record.detail.show', function(event){
は詳細レコード呼び出し時に書く呪文です。

  6行目     実行しているブラウザの種別をここで取得しています。呼び出し先のURLがhttpsから始まっても、画像はhttpが返されることがあり、それを防ぐために一部ブラウザによって画像のアドレスを変更しています。

  8行目     表示したkintone詳細レコードのISBNフィールド(フィールド名はF_Isbn)の値を取得しています。

  9行目     8行目で取得したIsbnから – ハイフンを除去しています。

  10行目     8行目で取得したIsbnから  ISBN を除去しています。

  11行目     kintoneフォーム上で事前に作成しておいたスペースをここで取得しています。このスペース内にAmazon からの情報を書き込んでいきます。

  12行目     kintoneフォーム上で事前に作成しておいたスペースをここで取得しています。このスペース内にAmazon からの大きな画像を表示させます。

  15-17行目 本稿で実装する内容では、ユーザ入力データからのサニタイズ処理はあまりありません。唯一この場所で実施しています。数値がどうかをチェックしていますが、ISBNの末尾一桁のチェックディジット結果が X となる場合があり、その場合のみ許可しています。

  19行目     12行目で取得した画像表示用イメージの横幅を指定しています。

  20行目     11行目で取得したAmazonデータ表示用スペースにユーザを飽きさせないために表示しております。

 

 

  24行目     先に紹介しましたが、codeとIsbnという2つのパラメーター以外に、nowというパラメーターも追加しています。実はnowパラメーターは以下の処理では使われていません。投げるリクエストURLを常に変化させないとInternet Explorer上でうまく値が戻ってこないという情報から、このような記載を設けています。

  25行目     ここは xml を指定しています。おそらくはjsonpでもjsonでもうまくいくことでしょう。

  26行目     キャッシュをOFFにしないとInternet Explorerで正常に戻ってこないという情報を基に追加しました。

  27行目     非同期処理をONにしています。ここをOFFまたは記載なしにすると、何らかのエラーがAjaxで発生した場合、ブラウザがフリーズしてしまいます。

  28行目     10000ミリ秒、つまり10秒間だけphpからの戻り値を待ちましょう。という指定です。

  29行目     正常にデータが戻ってきた場合の処理を30行目以下に記載します。関数の引数dataが、成功した場合に受け取るデータが格納された変数です。

 

 

  30-79行目     商品情報に関するすべてのAmazonからの戻り値を変数として宣言してあります。正直、ここまでやる必要はありません。ありませんとも。

  82行目以下は、実際のXMLの内容を基に、DOMの森を探索することになります。なので、以下ではXMLを実際に表示させてみます。

  この中で実際に表示させるのに必要なのは、32行目の<Item>タグ以下のデータとなります。

  53-101行目までは各種商品イメージの情報が記載されています。この中で53行目から67行目までのSmallImageとMediumImageとLargeImageは。その下の68行目から101行目までの間に同一の情報があります。なので、この部分は取得を省略してもよいでしょう。

  102行目以下は主要な情報が並んでいます。これらはほぼ取得すべきところです。ただし、データの種類によってはタグ自体がないものもあります。以下の例でいうと、104行目の<Creator>タグは小説のように著者がある本には登場しません。著者がある本は<Author>タグが替わりをつとめます。また、112行から117行の<Languages>タグや135行目の<ReleaseDate>タグがないデータがあることも確認しています。

 もう一件、AmazonからのXMLデータで気を付けるべき点があります。それは書籍とkindle書籍の場合です。kindle書籍はISBN項目を持っていないのですが、Amazonの仕様でISBNに対してデータ検索結果にkindleデータも含まれます。XML上では、2つの<Item>タグが紐付いています。その場合は、JavaScript側で<Item>タグ内をループさせるのですが、<ISBN>タグの有無で判別しています。

 大体のXMLデータの構造がおわかり頂けましたでしょうか。先に紹介したAmazonのガイドですが、項目の位置はこちらでガイドされています。ただし、各項目がどのように商品データに関連付いているかはわかりません。なので、上に挙げた項目以外にも存在することもあるかと思います。ご容赦ください。

  82行目     jQueryの文法に則り、XMLのデータが格納された変数dataに対し、<item>タグの要素を検索しています。その結果をループしたのが82行目の記述となります。

  83行目     条件文が真の場合、84行以下の処理を実行しています。条件文の頭に$(this)とありますが、これは 82行目でループを開始した<item>タグの要素データを指します。<item>タグ内でさらに<ItemAttributes>タグを検索し、さらにその中で<ISBN>タグを検索しています。この構造については、3ページ前のXMLをご参照ください。<ISBN>タグの要素内のテキストを取得しているのが text()です。
つまり、ISBNの要素の有無によって判定を分けています。これは先にXMLの構造を説明する際にも書きましたが、kindle書籍データが含まれている場合の退避処理となります。

  84-85行目     <item>タグの要素データ内の<ASIN>タグや<DetailPageURL>タグの要素内データを取得しています。

  86行目     82行目で始めた<item>タグ内ループの中で、さらに<ItemLink>タグを検索し、さらに<Description>タグを検索し、それをループしています。

  87行目     86行目で始めた<Description>タグ内ループの中で、要素内の文字列が Add to Wish Listに等しいかを尋ねています。

  88行目     87行目で条件に合致した場合、<Description>タグと同じレベルの隣のタグ<URL>タグの要素内のデータを取得しています。

  90-98行目 87、88行目と同様です。それぞれの<URL>タグの内容を取得しています。

  99行目     86行目で始めたループを閉じています。

 

  100行目     82行目で始めた<item>タグ内ループの中で、さらに<ImageSet>タグを検索し、それをループしています。

 

  101-118行目    100行目で始めた<ImageSet>タグ内ループの中で、それぞれの要素タグの内容を取得しています。

  119行目     100行目で始めたループを閉じています。

 ここまで来たら大分要領がつかめてきたのではないでしょうか。あともう少しで終わりです。お疲れのことでしょう。
私も大分疲れてきました・・・(^^;)

 120-146行目     それぞれの要素内データを取得しています。もう説明は不要ですよね。ただ、121行目ですが、Attrという見慣れない記述があります。この部分に対応しているのは XMLの104行目に当ります。<Creator>タグ内に Role="監修"というRole属性の値を取得するために、Attrという命令を発行しています。これを末尾につなげることで、 サイボウズ式編集部 監修 という文字列を組み立てているわけです。

 

  147行目     83行目の<ISBN>タグの有無を判定したif文の終わりです。

 

  148行目     82行目で始めたループを閉じています。

  149行目     aws_ASINの値が真かどうかを判定しています。cybozu.com developer networkのTipsの中に(小技)undefined と空文字のスマートな if 文判定がありますが、そちらの記述通り、文字列の取得結果がnull または undefined以外のデータの場合、150行目以下の処理を実行します。

  150-173行目   11行目で取得したスペースに対し、innerHTMLを使用して書き込むべき文字列を生成しています。今回の実装では、一つのスペース内に改行で区切ってAmazonからの情報を羅列する手法を採りました。冒頭に記載しましたが、編集時画面に実装し、Isbnの値の変更時に各フィールドに自動入力するほうが望ましいという考えもあります。なお、169行目から173行目は取得したURL文字列を<a>タグの中に含めています。

  174行目     6行目でブラウザの種別を取得しました。取得したブラウザ文字列にfirefoxが含まれているかどうか、要は実行しているブラウザの種類を問うているのがこの行です。

  175行目     使用ブラウザがfirefoxの場合、12行目で取得したスペースのinnerHTMLに対して書き込む画像の http: を 空白文字 にしています。Firefoxだけが、https:// から http:// の画像を読み込もうとするとエラーが出るため、このような処置を取っています。

  176-178行目     使用ブラウザがFirefox以外の場合、12行目で取得したスペースのinnerHTMLに対して書き込む画像のURLをそのまま使用しています

  179行目     149行目で判定したaws_ASINの値が偽だった場合に、180~184行目の処理が動作します。なお、Amazon側に渡したISBNコードが不正な値だった場合、XMLは違う種類のメッセージを返します。ほとんどの部分は一緒なのですが、<Items>タグの中の<Item>タグが<Errors>タグに置き換えられています。以下にエラー時のXMLを提示します。

 

  180-184行目     11行目で取得したスペースにエラー情報を含めます。上の図にあるとおりのエラー構造に基づいて、適宜整形して頂ければと思います。

 

  185行目     149行目で判定した条件式の終わりの部分です。

  186行目     29行目で判定したAmazonから正常な値が戻ってきたかどうかの判定式の終わりの括弧です。

  187行目     Ajax通信に何らかのエラーが生じた場合、処理はこちらのステートメント内で行われます。関数の引数として、XMLHttpRequest、textStatus、errorThrownといった値が返されますので、その値に応じてメッセージを整形されるとよいでしょう。

  193-195行目     errorThrownは場所の数だけ配列として戻ってきますので、193~195行では配列の要素数だけ処理を行っています。

  196行目     ここでは取得したエラー情報をアラートとしてポップアップ表示しています。Amazon情報を表示するスペースに表示するのもよいでしょう。

  197行目     187行目からのエラー時に実行される関数の終わり部分です。

  198行目     22行目からの$.ajaxの関数の終わりの括弧です。

  200行目     5行目からのkintone詳細レコード表示時に実行される関数を終えるにあたり、戻り値を返しています。

  201行目     5行目からのkintone詳細レコード表示時に実行される関数の終わりの括弧です。

  203行目     本JavaScript全体の無名関数の終わりの括弧です。

これでJavaScriptの実装は終了です。お疲れ様でした。お互い・・・

 さて、JavaScriptを完成させ、あとはこれをkintoneのアプリ管理画面からアップすれば完成!

 のはずですが・・・・・実は先ほどのJavaScriptの仕組みでは動かないブラウザがあります。それは。。。。Internet Explorerです。jQueryのAjax関数では、Internet Explorer 9より前のバージョンに対応しておらず、別の仕組みを経由してAjaxを実装する必要があります。なんてこった!またまたクロスドメインではまることになりました。

 Googleで検索を行うと、いくつかInternet Explorer 9以前のバージョンでのクロスドメイン実装についてのJavaScriptが存在します。私もいくつか試しましたが、私の環境ではそのうち動いたのが以下の1つだけでした。

 MoonScript/jQuery-ajaxTransport-XDomainRequest

 なので、今回はこちらのJavaScriptも使わせて頂きました。ありがとうございます。

 結果として、kintone上にアップするJavaScriptファイルは3種類となりました。最初にjQuery本体。次にIE9以前対応のクロスドメイン制約対応のJavaScript。最後に今回作成したJavaScriptです。

 これで完成です。

 と。このように表示が出来ましたでしょうか。レコードを移動すると新たなレコード先でAmazonから呼び出されたデータが表示されます。ただし、あまり短い時間で呼び出すとAmazonからの応答が途絶えてしまうことがあります。その場合は F5でリロードを行って頂ければと思います。

 外部認証が必要な複雑なAPIを呼び出す場合、このような方法があるよ、ということを理解頂ければ、さまざまなケースで実装が可能になり、kintoneをより一層ご活用頂くことができることでしょう。ぜひ、お試しください。ただしくれぐれも過度なAmazonへのリクエストはお控えください。1時間当たりのリクエスト回数も上限が定められているようですし・・・・

 本件について、文責は全て私、合同会社アクアビットの長井にあります。もし内容についての御質問などございましたら、お寄せいただければ、時間の許す限り、回答させて頂くようにいたします。


kintoneのレコード詳細ページからAmazon商品データを参照するテクニック(2/3)


2.phpを利用したAmazonへのパラメーターの生成方法について

 最初に一言申し添えておかねばなりません。なぜkintoneからAmazonの情報を取得するのにphpを介さなければならないか、について。

 cybozu.com developer networkをご覧の皆様は、すでに有識者の皆様が執筆された、秀逸なTipsの数々にも目を通されたことでしょう。Tipsの中には

  外部APIの同期処理をつかってみよう!

  他サービスのAPIからデータを取得してkintoneに表示してみよう

 という2つのkintoneから外部APIに接続するTipsも挙げられています。私も本稿を書くにあたって参考にしました。ありがとうございますm(_ _)m。

 これらのTipsはkintoneのJavaScript APIを使用しています。JavaScript内に外部APIのURLを直接書き込み、その結果を表示させる方法です。一方、Amazon APIを呼び出す際のURLですが、その中には全章で取得したAmazonの「Access Key ID」「Secret Access Key」「トラッキングID」の3種類から生成した署名文字列を含める必要があります。つまり、署名文字列を生成するにあたっては、JavaScript内に「Access Key ID」「Secret Access Key」「トラッキングID」という機密情報を埋め込まねばなりません。それを避けるために、外部のphpに署名文字列の生成や機密情報の扱いを任せようというのが狙いです。

 能書きが長くなりました。それでは実装に移らせて頂きます。

 まず、kintoneに埋め込むJavaScript内で呼び出すAPIのURLを記します。

パラメーターは ?code=ISBN&no='+Isbn としています。Isbnとあるのは、kintoneのフィールドに入力された本のIsbnを変数化したものです。Amazon認証情報に関する情報の一切はJavaScriptからは省かれています。

 次にパラメーターを受け取ったAmazonBookInfo.phpの中身を示します。

 JavaScriptに値を返すための各種ヘッダの記述と、Amazonから情報を取得する本体のphpであるSetBookByAmazon.phpの呼び出しが書かれています。ヘッダについてはGoogle ChromeとFirefox、そしてInternet Explorer 9で正常にデータが渡せることが確認できています。これは環境によって違いますので、工夫してみてください。特に4番目のヘッダで application/xml となっています。これはJavaScriptに対して渡すデータの種類を xmlとして規定する部分ですから、重要です。

 最後にパラメーターを受け取ったSetBookByAmazon.phpの中身を示します。

 これで動くはずです。あ、Access Key IDとSecret Access Key IDとアソシエイトTagはこんなふざけたものではなく、きちんとAmazonで取得した文字列を使って下さいね^^。

  define('AssociateTag','anatanoiddesu-99'); の赤字の部分を前章で取得した「トラッキングID」で置き換えてください。

  define('AccessKeyId','ICHIBANSAISHINNOAKUSESUKII');  の赤字の部分を前章で取得した「Access Key ID」で置き換えてください。

  define('SecretAccessKey','DAIJINADAIJINASIIKURETTOAKUSESUKIIDESUNENN');   の赤字の部分を前章で取得した「Secret Access Key」で置き換えてください。

 それ以外は、この内容でデータが取得できるはずです。このphpをサーバーにアップし、URLをアドレス欄に打ち込んでみてください。例えば以下のように。

 どうでしょう。XML形式でデータが表示されたのではないでしょうか。そう、あの本の情報が\(^o^)/

 なお、渡すパラメータや取得できる情報の種類はかなり多岐に亘っています。本稿ではISBNのみに焦点を当て、ISBNから取得可能な書籍情報のみについて紹介したいと思います。上に挙げたphpの内容もISBNによる取得に対応しています。Amazon Products Advertising APIの単一商品取得の ItemLookUpはこちらのリンクが公式情報となっています。

 上のphpの内容に ・・・・・・あ といった記述があります。くれぐれもこの部分はphpファイルからは除いてくださいね。動かなくなってしまいますので^^。

 以下は、その あ~か についての説明を記します。

 ・・・・あ その上の行と共にJavaScriptから渡ってきた変数が格納される場所です。

 ・・・・い Amazonから取得する情報の種類を指定します。ItemAttributesは商品詳細、Imagesは画像情報。このように複数の種類を指定する場合 , カンマでつなげます。

 ・・・・う 指定した各種パラメーターをそのパラメーター名称で並び替えます。署名作成時に必要な処理です。

 ・・・・え 指定した各種パラメーターをエンコードします。RFC3986で定められた方法に準じています。

 ・・・・お 署名文字列の生成部分です。ここで初めてSecret Access Keyの活躍の場が与えられます。ハッシュ関数によって、容易には結果から元々の文字列が推測できないような文字列に変換されます。

 ・・・・か 組み立てられたUrlから取得した文字列を取得します。結果文字列はXML形式で帰ってきています。

 ・・・・き 帰ってきた文字列を表示します。この表示処理によって、呼び出し元へ文字列が戻されます。

 これで、Access Key ID と Secret Access Key、トラッキングIDの3種類の情報とISBNからAmazonの書籍情報がデータ取得できました。あとはこれをJavaScriptで加工するだけです。あと一息です!もうしばらくご辛抱ください!!

 最後に、こちらで作成した SetBookByAmazon.php と AmazonBookInfo.php ですが、サーバーにアップする際、http://の領域ではなく、https:// の方にアップされたほうが良いかと存じます。

なぜかというと、呼び出し元となるkintoneのURLは https://******.cybozu.com/k/12/ とhttps://から始まります。これに対し、上記2つのphpファイルが http:// から始まる領域から始まると、ブラウザによっては好ましからざる動きをするからです。


kintoneのレコード詳細ページからAmazon商品データを参照するテクニック(1/3)


はじめに

kintone アプリで資産管理を行いたい、という要望はよく聞きます。その際、既存サイトのデータが参照できたら便利ですよね。例えば商品データを参照したい場合、Amazon APIを通して取得したいといった要件は十分考えられます。本稿では、kintoneの詳細レコード上に、Amazon APIから取得したデータを表示する方法について紹介します。

少々長くなってしまうので、簡単に本稿の構成を書いておきます。

1.AmazonのAccess Key ID と Secret Access Key、トラッキングIDの取得方法について

2.phpを利用したAmazonへのパラメーターの生成方法について

3.kintoneからのJavaScript呼び出しとJavaScript内でのAjaxの記載について

その前に・・・本件を実現するために必要なものがあります。それは例えば・・・

  1. パソコン。ノートでもデスクトップでもよいですが、スマートフォンや俗にいうガラパゴス携帯、またタブレットからの利用は考慮していません。
  2. パソコンのブラウザ。本件ではGoogle Chrome、Firefox、Internet Explorer9、11で検証しています。その他のブラウザでは予測不可能な動作に遭遇するかもしれません。もちろん、他のブラウザでも動けばそれに越したことはありません。ノウハウはぜひ教えて頂ければ^^;)・・・。とりあえずこの4種でお願いします。
  3. phpの動作するサーバー。今回の検証で使用したレンタルサーバーは、php.iniも変更できず、pearなどのライブラリも利用できません。SSLも専用でははく共用SSLを使用しています。phpネイティブだけを頼りに構築しているので、サーバー間の動作差異はあまりないと思えます。なお、レンタルサーバのOSはUnix系で、Apache 2.2で動いているそうです。phpのバージョンは5.3.2です。
  4. kintoneの画面ですが、最低限3つのフィールドが必要です。Isbnを入力するためのフィールド(名称:F_Isbn)を追加し、Amazon情報表示用のスペース(名称:Space_Image)と画像表示用のスペース(名称:Large_Image)を追加してください。
    表にまとめると以下のような感じとなります。

    フィールドタイプ フィールド名 フィールドコード 説明
    文字列(1行) ISBNコード F_Isbn ISBNコード用
    スペース Space_Image Amazon情報表示用スペース
    スペース Large_Image 画像表示用スペース

    (※以下の結果画面は違うフィールドも多数入っていますが)

    それらを満たし、かつ、kintoneにカスタマイズを加えると、以下のように詳細画面にAmazonからの呼び出し結果が表示できるようになります♪

最後になりますが、本稿は2014/10月に書かれました。その時期のkintoneとAWSの仕様に合わせています。cybozu.com developers networkへの掲載に合わせ、サイボウズ社のご担当者のチェックを経て、2015/2月のkintoneのバージョンアップ内容と本稿の記載を照合させた上で投稿しています。2015/7現在、まだ同じ仕組みで動作しているので、本稿の内容に問題ないとは思われますが、今後のkintoneおよびAWSのバージョンアップによっては本稿の内容が正常に動作しない恐れもあります。ご承知の上、ご参考になさって下さい。

1.AmazonのAccess Key ID と Secret Access Key、トラッキングIDの取得方法について

 https://www.amazon.co.jpにアクセスしましょう。まずはここから。

 次にアカウントを既にお持ちの方はログインし、まだの方はアカウントの新規作成をお願いします。

 アカウントでログインすると、下の図の赤枠が こんにちは ○○○さん という表示になっています。

 その赤枠部分をクリックすると、アカウントの管理画面に移動します。

管理画面では、アフィリエイトの報酬結果を見たい気持ちをこらえ、ページの下端まで移動してください。すると下図のような記載が見つかると思います。その中のアソシエイト(アフィリエイト)をクリックしてください。

 下図は、アソシエイト・セントラルの画面です。左上にIDのようなものが書かれています(赤枠囲み)。これがkintoneからAmazonへアクセスする際に必要な情報の一つ「トラッキングID」です。是非φ(..)メモしておいてください。

 続いて、上図のメニューバナーの中に Product Advertising APIというのがあります。そのバナーをクリックしてください。Product Advertising APIのページに移動します。

 Product Advertising API のページ内にはAmazonへのAPIアクセスの奥義が沢山書かれています。是非 お読み頂ければと思います。が、ここは先を急ぎましょう。

 ページの中ほどに、下図のようなリソースというコーナーが設けられており、その中にアカウント設定というリンクがあります。これをクリックします。

 アカウントサービスのページに移動しました(下図)。アクセスキー情報という枠の中に、こちらのリンクというリンクがあります(下図の赤枠です)。これをクリックしてください。

 ダッシュボードのページに移ったと同時に、ダイアログボックスが登場します(下図)。Amazonでは、アカウント管理についてはIAMというサービスを推奨しています。きめ細やかな各種権限設定が可能になっているようです。しかし、今回のAmazonへのAPIに当っては、最初にAmazonにログインした際に使用したアカウント(IAMではルートIDと呼んでいるようです)の認証情報を使用する必要があります。なので、先にContinue to Security Credentialsの方をクリックして下さい。

 下図のようなYour Security Credentialsの画面が表示されました。右側の + Access Keys(Access Key ID and Secret Access Key)をクリックして下さい。

 下図のようにメニューが開きました。Important Changeとメッセージがあります。これはSecret Access Keyの取扱いが変更になり、以前から持っていたAmazonアカウントに紐付いたAccess Key IDでは、再取得を行わないとSecret Access Keyが使用できないという意味です。なので、新たなAccess Key IDを作成しました。新たなAccess Key IDの作成は下図のCreate New Access Keyをクリックすると発行できます。発行が終われば、前のAccess Key IDはDeleteしてください。

新たなAccess Key IDを発行した画面が下図です。Show Access Keyをクリックすると、今回kintoneからAmazon APIへアクセスする際に必要な情報の二つ「Access Key ID」「Secret Access Key」が表示されます。是非φ(..)メモしておいてください。Download Key Fileをクリックすると、csvファイルで2つのIDが保存できます。

 これで、Access Key ID と Secret Access Key、トラッキングIDの3種類の情報が取得できました。3種類とも是非φ(..)メモしておいてください。 図が多くて見にくかったことでしょう。お疲れ様でした。


kintoneについての紹介とデモのイベントを行います



弊社が出展するイベントの情報です。

来たる6/21(日)、町田市鶴川にあるポプリホールの多目的室において、ココデンタルクリニックさん主催のイベントの1部として
「ぶきっちょさんでも出来る?! デジタル健康管理とお財布の健康」
というお題でデモをさせて頂くことになりました。

30分程度の同じ内容を午前中に2回ほどやらせて頂こうと考えています。
kintoneの紹介を10分、残り20分でその場でアプリを作成し、簡単にアプリが出来る様子を見て頂ければと思います。
技術者向けの内容ではないため、やさしくゆっくりめのご説明を心がけたいと思います。また詳細については、変更があるかもしれませんので、追ってご連絡させて頂きます。なお、個別にお話を伺ったりデモさせて頂くことも可能です。当日は16時近くまでイベントに参加しておりますので。

また、午前の1部ではライフプランナーさんがこっそり教える
「お財布の健康」
についての講演を行います。

第2部
お昼からは、
ゲストに、東京なちゅらるぐるめのオーナー宮地祥子さんと、タロットコーチングの佐々木美保さんをお迎えして
「お口から考える、心と身体に良いこと」
をテーマに講演を行います。
ココデンタルクリニック院長(弊社代表の妻です)も、参加いたします。

そして…
会場内では1日を通して、お子様を対象にkao*kaoさんの簡単なワークショップコーナーも設けております。

会場への入場は無料となっておりますので、日曜日のひと時是非足をお運びください✨

本日より、詳細を順次アップして参ります( ´ ▽ ` )ノ