Articles tagged with: kintone

2020年7月のまとめ(個人)


昨年から、毎月ごとに個人と法人を分けてまとめを書きます。

公私の「私」

●家族とのふれあい

§ 総括 コロナウィルスに翻弄されたこの数カ月。
七月になって落ち着くはずが、また感染者が増え、GoToキャンペーンが糾弾されています。

今年に入ってから通院することになった妻ですが、来月に手術の日程が決まります。
コロナによって手術の日程が定まっていなかった現状も、ようやく先が見えそうです。
秋に向けて団結しなければなりません。わが家は自粛の中でもなんとか発散させようと工夫に工夫を重ねています。

六月は家族で信州に旅し、娘の顔が腫れたりと起伏に富んでいましたが、今月は平穏でした。
ただ、末になって宝塚の公演が始まることが確定しました。それによって妻から余裕が失われ、家庭にまた波風が立っています。

家族のフォローをきちんとしなければならない時ですが、私も仕事が詰まってきており、余裕がありません。
それを見極めながら、引き続き工夫を重ねて、自粛の中でも生きる喜びを謳歌したいと思います。

今月は二、三十年ぶりに両親に料理を振る舞った事でも思い出に残りそうです。

家族とは四回、妻とは五回、妻と長女とは三回、妻と次女とは二回、お出かけしました。

いずれにせよ娘たちは巣立ちます。私は仕事以外にやりたいことが盛りだくさんな人間なので、子離れや引退をきっかけに老け込まなさそうですが、限られた人生でも家族との時間を大切にしたいと思っています。

§ 月表

・七月お出かけ

カリカリ、旭川味噌拉麺ばんから 上野店、餃子製造販売店 町田いち五郎、まやま釣具、ドラッグストア ウェルネス湖山東店、丸亀製麺 鳥取店、鳥取港千代岸壁、イオンモール鳥取北、工楽松右衛門旧宅、高砂来て民家 旧花井家住宅、高砂神社、池田輝政公高砂城趾、加古川駅、江井ヶ嶋酒造、道の駅 フレッシュあさご、しのびの滝、名もなき沢の滝、岩間の滝、糸滝、連理の滝、名もなき沢の滝、久遠の滝、名もなき沢の滝、夫婦滝、鼓ケ滝、天滝、宝幢寺、分散ギャラリー 養蚕農家、赤堂観音 蓮華寺、栃尾谷城、養父駅、道の駅 但馬楽座、黒毛和牛 けむり屋 牛力、まいどおいど、麺屋 八海山、安満遺跡公園、ボーネルンド プレイヴィル 安満遺跡公園、tssy、愛知県庁、市役所駅 (M07)、名古屋市役所、あんかけ太郎、名城公園、名古屋城、名古屋市上下水道局 下水道科学館、錦橋、キッチン なごや、小樽食堂 町田広袴店南町田グランベリーパークCrisp Salad Works、Libro、久世福商店JACK  IN THE DONUTS  グランベリーパーク店、町田市立中央図書館、品川製麺所、やまや 青山一丁目店、Jami Jami Burger 森野店東雲寺、カットファクトリー 新百合ヶ丘、スピカルボ、三ツ矢堂製麺、京急油壺マリンパーク農産物直売所 すかなごっそ井上成美記念館横須賀PA (上り)、薬師池公園 蓮園、薬師池公園、やっこ、中華そば 新、恵比寿 新進気鋭、Sizzler両国橋茶房刀剣博物館築地食堂 源ちゃん浅草雷門浅草仲見世通り小山商店追分だんご本舗万世麺店、自家製麺つけそば 九六、多摩川(調布花火)、日本新聞博物館、山下公園、馬車道タップルーム、モスバーガー 鶴川店都南産婦人科南風(ナンプウ)、巧 潮 上野製麺所、祝言寺、多摩川

・七月ツイート
https://togetter.com/li/1567945

§ 家族のお出かけ 家族で出かけたのは、上の年表で黄地に太字にしているイベントです。家族で出かけたのは、今月は一回です。
自粛の嵐の中、家族ではほぼ毎日顔を合わせている我が家。
唯一家族で出かけたのは府中のSizzlerです(7/23)。生まれ変わったら何したい、という話題の中で地球を作り直したいとのたまった次女が、アダムとイブも名前を変えて創造し直すといい、出した名前が「ジュンコとテツオ」。笑いました。

今回のコロナは、自粛を強いられたからこそ、家族の意味を考えさせられる良い機会にもなっています。
生きる意味とは何か、死ぬと人は無に消えるのか。コロナは私たちに生きる意味を問いかけています。悪いことだけではありません。
働き方と生き方に思いを馳せる機会として活かさないと。


§ 妻とのお出かけ 妻と出かけたのは、上の年表で桃地に太字にしているイベントです。今月は妻と二人で四回お出かけしました。
通院の後、恒例となりつつある町田の街中でのランチ。Jami Jami Burgerに初訪問しましたが、とてもハンバーガーがおいしかった(7/14)。町田にはまだクラフトバーガーのお店に行ったことがなく、今後も応援したいと思いました。
油壺マリンパークではイルカやカワウソ、ペンギンやイカとたわむれ、梅雨の最中の晴れ間を堪能しました(7/19)。帰りには井上成美海軍大将の旧宅も9カ月ぶりに再訪できました。
また、両国の刀剣博物館で見事な業物に目を奪われたのも今月です(7/24)。両国駅の横でおいしい甘味とどんぶりに満足しました。帰りは刀を探しに浅草まで。賑わいがまだまだ復活していない仲見世を歩いたのですが、目指すお店に妻の求める居合刀は見つかりませんでした。
月末にも再度通院に付き合い、その時のランチは南風でした。十数年ぶりに訪れたのですが、私の目の前に飾られたアンリ・ルソーの絵にタッチがよく似た絵画が印象的でした。

§ 妻と長女とのお出かけ 上の年表で緑地に太字にしているイベントです。
今月は妻と長女と三人で五回お出かけしました。
長女にとっても6月の信州の旅は良い影響を与えてくれたと信じています。
ですが、長女は家族が揃うことを望んでいます。次女の彼氏の出現で亀裂ができた姉妹の間に私ができることは何か。それを今月も考えさせられました。
小樽食堂で食事をした日(7/11)も、南町田クランベリーパークに買い物に行った日(7/12)も、妻の母と祖父母の盂蘭盆会に参加した際(7/15)も、モスバーガーに食べに行った日(7/27)も。
長女もまもなく二十歳を迎え、社会に出ます。彼氏の一人も作ってほしいとは思うのですが。 

§ 妻と次女とのお出かけ 上の年表で緑地に太字にしているイベントです。
今月はその機会はありませんでした。
今月は次女もバイトが復活し始め、家族で過ごす時間が少なくなっています。

§ 娘たちとのお出かけ 上の年表で青地に太字にしているイベントです。
今月はコロナの影響もあり、私が家にいることも多く、娘たちとはかなりの時間、顔を合わせています。
ただ、次女の心も長女の心も日によって不安定になることもあります。
一日だけ、長女とはいっしょに買い物に出かけました。また、何度か課題の手伝いもお願いしました。
そういえば、弊社のロゴも娘にバージョンアップをお願いしています。

●私自身の七月(交友関係)

§ 関西の交流関係 今月は、なんと言っても鳥取でのイカ釣りです。
中学の頃からの長年の親友と船に揺られてイカを釣る。それは実に素晴らしい経験でした。今まで二回、イカ釣りの機会を悪天候その他で逃してきたので、喜びは大きかったです。
もっとも私は、初めてのイカ釣りで八杯も釣ったとはいえ、船酔いでマーライオンと化し、息も絶え絶えでしたが。
でも、船酔いは別にしてもとても楽しかったです。
その出発前には親友の会社を訪問し、仕事の面でもかなりの刺激を受けました。
努力で成長した親友から刺激を受け、自らの成長に活かす。それこそ望ましい友人関係といえます。こういう親友を持てていることに感謝でした。

イカ釣りから帰った後、両親と弟にイカを捌いて刺身にして振る舞いましたが、それは多分、私にとって二、三十年ぶりに両親に作った料理。
よい親孝行ができました。

4月に手術をしたばかりの母に私が無自覚にコロナを移してしまわないか、心配でしたが、六月と七月に泊まった後に母親に感染の気配がないのが安心です。

また、その翌日には兵庫の天滝を訪れたのですが、その帰りにふと訪れた蓮華寺の住職さんと色々なお話ができました。これも、旅のご縁のありがたみだと思います。


§ 今月の交流 コロナウィルスによるイベント自粛の嵐は、私から飲み会の機会を何度も奪いました。
それを取り返すだけの回数を今月は飲みました。飲んだ日数は9日。延べ12軒。

今、リアルで飲める機会が激減していただけに、リアルの場で飲む喜びは大きいです。

蔵前にある角打ちの「酒のフタバ」では二回も飲みました(7/1)(7/21)。ともにセンベロセットですが、あれだけの銘酒が格安で飲めてしまうことがセンベロの良さ。お酒屋さんが運営しているだけあって、扱う酒もまた確かで美味しい。
その翌日は    町田で技術者同士の情報交流も含めた飲み会を。「四十八漁場 町田店」「餃子製造販売店 町田いち五郎」で飲んだお酒は、アルコールが交流の橋渡しになることの証拠でした(7/2)。
大阪出張の際に訪れた高槻の「さふらん」いうお店でお客様と一緒に美味しい酒と料理を楽しみ、高槻のグルメを堪能しました。さらに下北沢で懇意にしている高槻出身の方から教わった「まいどおいど」にも訪問しました。後者は昭和感の濃厚な店内とマスターの気さくな感じが強く印象に残りました(7/6)。
その翌日は私が一人だったので、上に書いた方の弟さんがオーナーをされている「Stand Bar & Public House TSSY」でおいしいひと時を(7/7)。開店直後でお客様がいなかったこともあって、高槻の話など多彩なお話に花を咲かせられました。実は他にも共通の知人が数人いたことにも驚きの夜でした。日本各地の美味しい蒸留酒を格安で出してくれることもよかったです。また高槻に訪れた際は伺いたいです。
さらにその翌日の名古屋出張の締めに訪れたのが名駅のグルメ街にある「キッチン なごや」(7/8)。名古屋の名物に舌鼓をうちつつ飲むお酒は、五泊六日にわたった出張の締めにふさわしいものでした。名古屋サイダーのハイボールが個人的には気に入りました。
上に書いた「酒のブタバ」の帰りにさらに立ち寄ったのが「中華そば 新」(7/21)。ラーメンとともに飲むお酒もあって、仕事をともに頑張ろうと思える瞬間でした。
今月の交流から、シークレット肉会を外すわけにはいきません(7/22)。「恵比寿 新進気鋭」は完全会員制で、住所と電話番号は非公開。値段も張ります。ですが、それだけのことはありました。おいしい肉やウニ、トリュフなど出てくる料理がみな絶品でした。そしてもちろんお酒も。私が早速妻のために快気祝いの予約を取ったことは内緒です。上に書いた飲み会はすべて旧知の仕事仲間との飲み会でしたが、この回だけは5人で訪れたうち、三人とは初対面でした。こういう交流から公私の豊かさが生まれることを私は今までの経験でよく知っています。

今月の私とご縁を結んでくださった皆様、本当にありがとうございました!


●私自身の七月(文化活動)

§ 読書・観劇レビュー 読んだ本のレビューを記す読ん読ブログの執筆は、主に2019年に読んだ6冊分となりました。
レビュー執筆は、私の中では大切なライフワークとして位置付けています。このところ、書く時間があまり取れていませんでしたが、先月にかなりのペースでアップできたため、現在のところ一年の遅れです。この期間を質を落とさずに縮めたい。それが去年に引き続いての課題です。書く行為への熱意は衰えていませんので、引き続き続けたいです。
また、宿泊を伴った旅についても日記としてアップしていますが、一年以内にアップする目標から遅れてしまっていました。なので、今月は2019年の初夏の二つの旅を一気に5本アップしました。

おととしの春まで連載していたCarry Meさんの運用する本音採用サイトの「アクアビット 航海記」を弊社サイトにアップする作業ですが、今月はアップできませんでした。
余裕がなかったためです。その分、来月に2本アップしようと思っています。

今月、書いた本のレビューは6本(
掏摸
ミステリークロック
メデューサの嵐 上
メデューサの嵐 下
天国でまた会おう 上
天国でまた会おう 下」)
今月、書いた抱負は0本() 。
今月、書いた旅日記は5本(
神戸三宮・北野・梅田 2019/4/29-4/30
鳥取・由良・北栄の旅 2019/5/1
蒜山・長浜神社・出雲大社・日御碕の旅 2019/5/2
高速道路・沼津の旅 2019/5/3
名古屋出張・桑名・養老・大垣の旅 2019/6/4-5」) 。
今月、書いた物申すは0本() 。
今月、書いた弊社の活動ブログは0本()。

§ 今月の読書 今月は6冊の本を読みました。内訳は娯楽小説一冊、純文学三冊、ビジネス書一冊、数学書一冊。
私の今年の目標の一つは本を出版することですが、まだまだ道は遠いです。
また、読書とは少し違いますが、商談の後に訪れた日本新聞博物館では学びを得ました。
ジャーナリズムとは、情報リテラシーとは何か。
それらは読書の習慣から養われます。今、情報に振り回される人々が絶えません。それもそうした人々に読書の習慣がないためでは、という仮説を立てたくなります。
読書の喜びは知らない人にとってはまったく知らずに死んでいくことでしょう。私も何か貢献したいと思うのですが。

§ 今月の映画 今月の映画鑑賞は0本です。
今月もキングダムは見られずじまい。これで4カ月見られていません。

§ 今月の舞台 舞台については、今月は0本です。
今月ついに宝塚の公演が再開されたことで、妻の代表としてのさまざまな雑務でピリピリしています。
それが私の目下の切実な悩みです。

§ 今月の音楽 今月は生演奏を聴く機会がありませんでした。ただ、相変わらずGoogle Musicには活躍してもらっています。YouTube Musicにも移行してみましたが、機能にバグが目立つため、またGoogle Musicに戻っています。
今月はThe Who、Traffic、Fleetwood Macしか聴いていません。70年代洋楽のマイブームはまだ続きそうです。
末日になってサテライトオフィスでアナログレコードでEaglesやQueen、Wes Montgomeryを聞く機会がありました。
私、EaglesやQueenは数えきれないほど聞いてきましたが、全てCDかストリーミングのみでしか聞いたことがありません。アナログレコードで初めて聞けたのはうれしかったです。

§ 今月の美術 今月は妻と刀剣美術館に行き、美しい刀剣の世界に魅了されました。
寸分の狂いのない刃渡りと刃紋の美しさ。
私はかねがね、工芸品を収集するとすれば日本刀がよいと思っていました。こうやって名刀が一堂に会する中、刃の輝きをみるにつけ、あらためてその魅力に惹かれました。
日本刀についての本も購入したので、より知識を深めたいと思っています。

§ 今月のスポーツ 今月は相変わらずコロナが自粛を強いており、スポーツはできていません。
散歩は良く行いましたが、それはスポーツとはいえません。
プロ野球やサッカーの試合をスポーツニュースで見る程度です。
本来ならば東京オリンピックの開会式が行われていたのも今月ですが、果たして来年に無事開催されるのでしょうか。無観客でよいから選手たちのためにも開催してほしいと思います。

§ 今月の滝 今月、訪れた滝は11滝です。
「しのびの滝(7/5)」「名もなき沢の滝(7/5)」「岩間の滝(7/5)」「糸滝(7/5)」「連理の滝(7/5)」「名もなき沢の滝(7/5)」「久遠の滝(7/5)」「名もなき沢の滝(7/5)」「夫婦滝(7/5)」「鼓ケ滝(7/5)」「天滝(7/5)」
どれも兵庫県北部の天滝渓谷にある滝です。
道中の滝もどれも素晴らしかったのですが、やはり天滝の雄大さが随一でした。
100メートル弱の滝から広がり落ちる滝の前では、私の小ささが際立ちます。あらゆる悩みは滝のしぶきと共に雲散霧消してゆく。
ここは私の中で五本の指に入る滝にリストアップされました。実に素晴らしい滝でした。

§ 今月の旅行 今月は、イカ釣りから始まった五泊六日の旅に尽きます。親友からのお誘いがあってまずイカ釣りの日が先に決まったので、あとはそこに出張をからめて。
姫路から鳥取へ。かなり船酔いでヘロヘロになりましたが、帰りは私が運転しました。姫路に戻ってからも二人で片づけを行い、さらにイカのさばき方を教えてもらうという。
そこで覚えたやり方を晩に両親に披露したことは上にも書いた通りです。
姫路からの帰り道にも高砂や加古川、江井ヶ島酒造に立ち寄りながら。特に高砂はかつて訪れたことはあったものの、今回は一人でじっくりと訪問ができました。また、訪れたいと思える街の一つです。
翌日は親に車を借りて兵庫県の北部、養父市へ。天滝のすばらしさは上にも書いた通りです。そしてその帰りにふと立ち寄った蓮華寺で見事な御朱印に2セットをお願いし、住職さんと歴史談義で盛り上がりました。こういうご縁が結べるのが旅の良さであること。その喜びに心震えました。
その翌日と翌々日は高槻で長時間の商談に臨みましたが、夜は高槻の知る人ぞ知る店の魅力にひかれ、高槻の街の魅力をあらためて知った二日間でした。
さらに続いては、名古屋へ。市役所周辺の壮麗な庁舎に見とれ、あんかけスパゲティを食べながら名古屋城を望み、さらに下水道記念館を見学までしてしまいました。

もう一つは妻と訪れた油壷マリンパークです。相模灘を見ると海もいいなあと思えます。
帰りには昨年の10月に訪問した井上成美海軍大将の居宅跡を再訪しました。まだ家屋は立っていますが、井上成美記念館は東日本大震災から閉鎖されたままです。
この辺りは私にとって祖先が住んでいたかもしれない地。長井という地名に。そこに住んでいた井上成美海軍大将とはご縁があるので、何かその遺訓を生かしたいと考えています。



§ 今月の駅鉄 趣味の駅訪問は二駅です。「養父駅(7/5)」「市役所前(7/8)」。
養父駅は天滝の帰りに寄りました。冬場は雪で埋もれると思われますが、訪れた駅は静かにたたずんでいました。トイレにはアマガエルが数匹住み着いていて、それが風情を感じさせてくれました。
市役所前駅は名古屋の中心部に位置しています。市役所と県庁が拡張ある外観で並ぶ駅の近くには、名古屋城が控えています。七つある地上出口のうち、一つだけ名古屋城へつながる出口だけは城の城門を思わせる構えになっており、印象的でした。

§ 今月の酒楽 3月からのコロナウィルスによるイベント自粛の嵐は、私から飲み会の機会を何度も奪いました。
今月はそれを吹き飛ばす回数のお酒を飲みました。飲んだ日数は9日。延べ12軒。
その多くは上の今月の交流にも書いた通りです。
「酒のフタバ」で飲んだ春鶯囀や松竹梅の山田錦特別純米、TOKYO隅田川ブルーイングや変わり種日本酒である信州舞姫のコーヒーヌガーやも美味しかったですし、「TSSY」でいただいた明石、FINLAGGAN、奥飛騨VODKAも私の舌をうならせてくれました。「キッチン なごや」の名古屋サイダーのハイボールは個人的にとても気に入りました。「恵比寿 新進気鋭」ではリストの酒がどれも魅力的過ぎたのですが、醜態をさらさぬためにも控えめに。でも北海道のジン北水鐘は初めて知ったのですがおいしかった。SHUHARIや黒龍も完璧。特に黒龍はウニに合うということでお勧めいただいたのですが、まさにでした。

両親との夕食の際には鳥取で買ってきた満点星を飲み、天滝の近くで買った香住鶴を飲みました。父も美味しいと言ってくれたのがよかった。

それ以外にも、狛江の「スピカルボ」でクラフトビールを一人のみで楽しみました(7/18)。Heretic/Experimental IPAとY.MARKET/ルプリンネクターの両方ともに私の喉を潤してくれました。
また、横浜の商談の帰りにも「Baird Beer馬車道タップルーム」でおいしいクラフトビールを楽しみました(7/26)。フルーツフルライフシトラスIPAとスルガベイインペリアルIPAが雨の中を歩き回った私の足を直してくれました。

また、今月は念願だった江井ヶ島酒造にうかがえたのがよかったです(7/4)。建物の外からみただけでしたが。
かつて、見学に行きたいあまり、電話して以来の念願でした。それもあって「TSSY」では明石を頼んだのです。



§ 今月のその他活動 人生も半分を過ぎ、一層焦りが募っています。少しでも日々に変化をつけようとする気持ちに衰えはありません。健康なのに外出できない。コロナが私たちの行動に制限を掛けています。悔しくてなりません。

・公園は三カ所。「名城公園(7/8)」「薬師池公園(7/20)」「山下公園(7/26)」
・博物館は三カ所。「井上成美記念館(7/19)」「刀剣博物館(7/24)」「日本新聞博物館(7/26)」
・駅は二駅。「養父駅(7/5)」「市役所前(7/8)」

・入手したマンホールカードは四枚。「兵庫県高砂市(7/4)」「兵庫県加古川市(7/4)」「大阪府高槻市(7/7)」「愛知県名古屋市(7/8)」
・滝は十一滝。「しのびの滝(7/5)」「名もなき沢の滝(7/5)」「岩間の滝(7/5)」「糸滝(7/5)」「連理の滝(7/5)」「名もなき沢の滝(7/5)」「久遠の滝(7/5)」「名もなき沢の滝(7/5)」「夫婦滝(7/5)」「鼓ケ滝(7/5)」「天滝(7/5)」

・温泉はゼロカ所。
・山はゼロ山。
・酒蔵は一カ所。「江井ヶ島酒造(7/4)」

・神社は一カ所。「高砂神社(7/4)」

・寺は三カ所。「宝幢寺(7/5)」「赤堂観音 蓮華寺(7/5)」「東雲寺(7/15)」「祝言寺(7/29)」

・教会はゼロカ所。
・史跡は三カ所。「工楽松右衛門旧宅(7/4)」「高砂来て民家 旧花井家住宅(7/4)」「分散ギャラリー 養蚕農家(7/5)」

・遺跡は一カ所。「安満遺跡公園(7/7)」
・城は三カ所。「高砂城趾(7/4)」「栃尾谷城(7/5)」「名古屋城(7/8)」
・灯台はゼロカ所。
・水族館は一か所。「京急油壷マリンパーク(7/19)」

私がまだ訪れていない場所の多さにめまいがします。他の活動もまだまだやりたいことがいっぱいあります。
一番怖いのは年齢から来るあきらめと気力の減退です。これだけは防ぎたい。
家族との縁もこれから姿を変えていくことでしょう。仕事もいつかは引退を求められるでしょう。そうなったときにやることがない、とよくある老残にならぬよう。
人はいつかは死ぬ。コロナウィルスの蔓延はそのことを教えてくれました。これから、健康であっても時間があっても出られない。そんな事態にも見舞われそうです。
だからこそ、後悔だけはしないように全力で生きなければ!
仕事だけでなく、いまのうちに時間の合間を見つけ、行けるところに入っておこうと思います。

一方で、将来のこともそろそろ考えねばなりません。
法人のまとめには書いた通り、コロナにもかかわらず、法人としての売り上げは確保できています。ただ、私個人としては投資もしなければ賭け事もせず、不労所得のタネも持っていません。
つまり、一人で私自身の体だけが頼りです。
なので、体に何かがあれば収入は尽きます。そろそろ貯蓄のことも考えていかなければ。


それぞれの場所で俳句も読みました。今月は12句。いずれもツイートまとめに載せています。

あらためて「私」を振り返ってみました。来月もコロナと共存しつつ、自らの生に後悔のないような日々となることを信じて。


2020年7月のまとめ(法人)


昨年度から、毎月ごとに個人と法人を分けてまとめを書きます。

令和二年七月。コロナウィルスに大きく揺さぶられた世界は、まだまだ落ち着く様子が見えません。
わが国においても一度は落ち着いたように見えたのですが、大都市を中心に患者数が増えています。
とはいえ、緊急事態宣言というカードを一たび切ってしまった今、もう一度同じカードを出すことはないでしょう。出せばそれは経済の死につながるでしょうから。

感染者の抑制と経済の継続を両立するには、夜の街に加えて、満員電車の解消がキーとなるはず。今までの働き方を大幅に見直さねばならないことは今や明白です。

働き方を変えるには仕事で使うツールを変えるのが早道。なのですが、まだまだ周知されているとは言いがたいのが現状です。
だからこそ、弊社がお役に立てることはありそうです。実際、五月から複数の案件のご発注、お引き合いをいただいており、六、七月はほとんど作業に終始していました。

達成度5割。達成感5割。満足感5割。それが今月の代表自身の自己採点です。

パートナーさんへの発注も進めつつ、自社の案件を増やす。外注率は抑えつつ、代表の作業は生産性を高く維持し、売上につなげる。そんなビジョンで業務をこなしてゆきたいと思います。
弊社とご縁をいただいたすべての方々に感謝します。ありがとうございました。

●弊社の業績

§ 総括 七月度の売上は、まだ確定していませんが、少しだけ目標額を割る見込みです。

ですがあまり悲観していません。
というのも引き合いを多くいただいているからです。
普段電話で引き合いを頂くことはほとんどないのですが、四日連続で電話での引き合いが合ったのには驚きました。他にもFacebook Messengerでも数件いただきました。
それに合わせて提案書も三つほど力を尽くして作りました。

引き合いをいただいているとはいえ、弊社にも苦しい時期がやって来るはずです。
実際、お客様の動きは総じて鈍っています。着手開始が遅れている複数の案件もあります。
弊社は以前から取り組んできたフルリモートワークを行っているとはいえ、弊社の場合は開発体制にもまだ工夫の余地が多くあると思っています。

今月は、四、五、六月にいただいたいくつもの案件の開発や打ち合わせを行っていました。
五月よりはかなり頻度は減りましたが、今月も各種のウェブミーティングツールを駆使しての打ち合わせが多かったです。
また、六月に続いて今月も出張で大阪に行き、お客様と打ち合わせてまいりました。

世界が未曽有の危機に襲われる中、弊社ができることの一つ。それは、わが国の会社にリモートワークの考えを根付かせる一助となることだと思っています。

複数の案件を並行して進められるようになりつつありますが、これからも弊社の認知度をあげるためには外部での発信が欠かせません。そうした活動を通して、あらたなご縁からお仕事がつながるからです。
今月は作業や商談と並行して、イベント出展に関する作業も複数行なっていました。
この出展が実を結べば、弊社にとってはとてつもない資産になることでしょう。
来月以降もリモートワークに絡んだ案件は続きます。一方で経営上のリスクを減らす上でも、少し安定の案件に取り組むことを検討しています。

実績を出しながら、日常も充実させる。それらは全て、代表の求めるワークライフバランスの実現につながってゆくはずです。

§ 業務パートナー 四月から業務パートナーさんとの協業を再開しています。

五月末に読んだ「リモートチームでうまくいく」を参考に、内部向けへのSlackで発信する試みを始めています。果たして効果が生まれるのかはこれからの試行錯誤です。
私にしては珍しく仕事よりの内容なので、むしろ私自身の意識改革になっているのかもしれません。

サテライトオフィスに再び週一回のペースで通いつめています。
そして、リモートでの打ち合わせの頻度も増やしています。これによって考えを共有し、よい協業ができるように取り組みを始めています。
また、技術者さんを雇用ではなく、専任の外注でお願いするための準備を進めています。早ければ来月から。

外注費の抑制は大切ですが、それにのみこだわると業務の規模は増えません。
うまくバランスを取ろうと考えています。
引き続き抜かりなく進めていく予定です。

§ 開発案件 今月は八割の開発案件がkintoneがらみでした。
ユーザー様には、引き続きインターフェースのわかりやすさをkintoneの魅力として訴求したいと思います。

今月もまた新規に複数のkintone案件をご依頼や見積もりのご依頼をいただいています。
また、今月はkintoneのphpの仕組み作りをしていました。主要な認証の仕組みであるOAuth認証を行いながら、SaaS同士を連携させる仕組み作りです。
そこで定期的なバッチ実行環境を作ることで、弊社が提案するkintoneの可能性はさらに広がると確信しています。

今月はカンブリア宮殿でサイボウズさんがとり上げられました。私も後日、TVerで見ることができました。また、サイボウズさんのTVCMの放映も今月でした。
ともに、そのサービスにかかわっている一人としてはうれしい出来事でしたし、そのサービスを広める喜びと使命は、月末のサイボウズさんからのインタビューでも熱弁しました。
開発する仕事がそのまま社会貢献につなげられるのですから、こんなに素晴らしいことはありません。

またその一環で今月は、スマレジとkintoneと連携の実装にかなりの時間を使いました。
同様にGoogle Calendarとkintone、Twilioとkintone、カラーミーショップとkintone。
そうした連携を多数手がける中、開発の効率化についてもさらなる工夫が求められます。
他にも秋の出展も含めて連携の準備を進めています。

kintoneの開発ツールも弊社内で独自に作っていますが、その速度も上げていきたいと思います。

来月以降にも、続々とお話をいただいています。お客様の運用の調査のため、先月に続いて今月も大阪、名古屋に出張しました。福岡や大分のお客様ともウェブミーティングを何度も行いました。
そうした準備や実装に余念のない月でした。

§ 財務基盤の堅牢化 財務をきっちりすること。前からの課題です。
弊社としては問題ないのに、家計が絡むととたんに脆弱になる。
いつになればこの状態が落ち着くのか。財務基盤の弱さをいかにして克服するか。課題は山積みです。

財務の件は、引き続き最優先で取り組んでいきます。

§ 社内体制 雇用ではないですが、常時専任の技術者さんに手伝ってもらうことで話を進めています。具体的な仕事の進め方も話し合っています。
来月から具体的になります。雇用ではないため、弊社の負担が抑えられるのが利点です。

今月は、初旬に代表の中学時代からの親友の会社(姫路)を訪問しました。
そこで感じたのは、一人で会社を運営することの限界です。
統制の効く適性の人数(30人)で仕事している彼の会社では、雇用して人を育てることの強みを私に教えてくれました。
弊社も新たなステップに進まねば、という決意を持ちました。それもあって常時専任の技術者さんをお願いすることにしました。

雇用も、懇意にしている社労士さんや税理士さんからも後押しをいただいています。
ただ、そのためにも遅れている経営への考察(業務計画、SWOT分析、経営計画、就業規則、財務計画など)を深める作業を進めなければなりません。

正月に作った経営計画は、完全に古びてしまいました。
なので、コロナを踏まえた景況の悪化と、社会がリモートワークに舵を切ったことによる案件の増加を加味したものをベースに体制を充実したいと思います。

§ 人脈の構築 コロナウィルスに世の中が翻弄され、緊急事態宣言や各自治体による外出自粛の影響もあり、ありとあらゆるイベントが中止となっています。三月以降、いくつのイベントが開催中止になったかもう覚えていません。
ただ、オンラインイベントからは、まだ新たな人脈にも仕事にも結び付けられずにいます。リアルでの出会いの復活ももちろんですが、オンラインイベントからどうやってご縁を繋ぐかが今後の鍵を握ります。
今月、頂戴した名刺は16枚です。
今、開発パートナーさん向けに書いているSlackの書き込みは、代表がSNSにアップする内容とも、弊社ブログに書く内容とも違う意味合いを持たせています。
なので、これをnoteやmediumなどのビジネスブログメディアにアップするかもしれません。

とはいえ、今後もオンラインのイベントが続いてゆくはずです。
オンラインでも人脈を構築し、ビジネスの新たな流れを創り出すため、引き続きオンラインは参加していくつもりです。コロナ禍が落ち着くことは当分なさそうなので。
もちろん、対外活動は怠らずに。
引き続きよろしくお願いいたします。

§  対外活動 今月は以下のイベントに参加しました。Cybozu Tech Meetup(7/14)。

ほとんどがオンラインセミナーです。リアルのイベントが開催できる状況までは、まだ時間が必要でしょう。
弊社も代表も、そして日本の各社もオンラインイベントには工夫を重ねています。
弊社もその流れに乗り遅れまいと、4月からkintone Café、freee & kintone BizTech Hack、freee Open Guildの運営側に参加しています。
今月は、夏秋のイベントの出展について複数の検討と申し込みを行いました。これが実を結ぶと、弊社にとっては巨大な資産となることでしょう。

弊社の開発や記事執筆のお仕事はこうした対外活動から生まれています。代表自身による新たな交流を発信することは絶対に怠ってはならないと肝に銘じています。

また、月末にサイボウズさんからインタビューを受ける機会がありました。
そこで自らの中でのエバンジェリストにかける思いや自分の中での今後を見つめなおす機会が持てたのはよかったです。

きっと、必ずや、コロナは小康状態に落ち着くと信じ、また皆様と交流を深めたいと思っています。
まずは今月の弊社と関わっていただいた皆様、誠にありがとうございました。

§ 執筆活動 一昨年の春まで連載していたCarry Meさんの運用する本音採用サイトの「アクアビット 航海記」を弊社サイトにアップする作業ですが、今月はアップできませんでした。
余裕がなかったためです。その分、来月に2本アップしようと思っています。

今月、書いた本のレビューは6本(
掏摸
ミステリークロック
メデューサの嵐 上
メデューサの嵐 下
天国でまた会おう 上
天国でまた会おう 下」)
今月、書いた抱負は0本() 。
今月、書いた旅日記は5本(
神戸三宮・北野・梅田 2019/4/29-4/30
鳥取・由良・北栄の旅 2019/5/1
蒜山・長浜神社・出雲大社・日御碕の旅 2019/5/2
高速道路・沼津の旅 2019/5/3
名古屋出張・桑名・養老・大垣の旅 2019/6/4-5」) 。
今月、書いた物申すは0本() 。
今月、書いた弊社の活動ブログは0本()。

§ 年表

・七月お仕事

蔵前でお祝い酒、浅草で商談×3、酒のフタバ(蔵前)でお客様と飲み×2、四十八漁場 町田店で飲み、姫路の親友の会社訪問、高槻で商談×2、さふらん(高槻)でお客様と飲み、まいどおいど(高槻)でお客様と飲み、I’ll Be Takatsuki、栄のミーティングスペースで打ち合わせ、新栄町で商談、名古屋でお客様とのみ、新宿御苑前で商談、青山一丁目で商談、蔵前で商談、みなとみらいで商談、神保町で商談、アクアビット サテライトオフィス×8

・七月ツイート

https://togetter.com/li/1567941


2020年6月のまとめ(個人)


昨年から、毎月ごとに個人と法人を分けてまとめを書きます。

公私の「私」

●家族とのふれあい

§ 総括 コロナウィルスに翻弄されたこの数カ月。
六月になってようやく、わが国においてはコロナは落ち着きを見せはじめています。

とはいえ、今年に入ってから通院することになった妻の状態は不安定なままです。コロナによって手術の日程が定まらないからです。
だからこそ、団結しなければなりません。そうした逆風に耐えようと、わが家は自粛の中でもなんとか発散させようと工夫に工夫を重ねています。

その工夫が実り、今月は家族で大町、栂池へ旅をしました。
県をまたいでの移動の自粛要請が解除されるタイミングを読み、直前に宿を予約して。
星野リゾートさんの界 アルプスの施設やサービスには、皆が満足してくれました。本当に行ってよかったです。サービスに感動したあまり、次女が大泣きしたのも良い思い出になりそうです。

そんな幸せな出来事があった一方で、長女の抜歯の際に発覚した予想外の症状が、長女の頬が腫れさせたトラブルも起きました。ようやく腫れが引き始めたとはいえ、まだ気の毒な患部の腫れが続いています。
さらに次女もコロナによる逼塞が原因で、少し情緒を不安定にさせています。
こんな時こそ、家族のフォローををきちんとしなければ。
末尾に次女の話を夫婦でよく聞いてやりました。
引き続き工夫を重ねて、自粛の中でも生きる喜びを謳歌したいと思います。

家族とは四回、妻とは五回、妻と長女とは三回、妻と次女とは二回、お出かけしました。

娘たちが大きくなるとともに、家族で出かける機会が減っている中、こうやって旅をする機会は貴重です。
まだまだこれからもさまざまな出来事はあるでしょうし、まだまだ苦しい時期も続くでしょう。コロナをはじめとした自然の猛威は、私の生活を今後も脅かすに違いないです。
娘たちが妻を支えてくれるようになってきているのは嬉しいですが、そもそも実りの時期を楽しめるように、さらに努力をしなければ。
おかげさまで今月で長女の学費は全て支払いが完了しました。まずは一つ目のマイルストーンを通過しました。

いずれにせよ娘たちは巣立ちます。私は仕事以外にやりたいことが盛りだくさんな人間なので、子離れや引退をきっかけに老け込まなさそうですが、限られた人生でも家族との時間を大切にしたいと思っています。

§ 月表

・六月お出かけ

多摩川緑地公園、コーチャンフォー 若葉台店ジョイフル、俺流塩らーめん、恵比寿神社、ミスタードーナツ、モスバーガー 鶴川店ココデンタルクリニックコーチャンフォー 若葉台店相鉄ローゼン 薬師台店、東海道新幹線 名古屋駅、近鉄 津駅、伊勢中川駅、東青山駅、名張駅、三本松駅、道の駅 宇陀路 室生、鳴海橋、海神社、鎌倉の滝、くさ地蔵?山の神(三本松)、青葉の滝(深野)、青葉寺、道の駅 宇陀路 室生、三本松駅、タコとハイボール、難波神社、芭蕉翁句碑「旅に病で ゆめは枯野を かけまはる」、南御堂 (真宗大谷派 難波別院)、海鮮料理 まどもあぜる、梶平、ブロンコビリー 枚方招提店、トリップカフェ 高槻、村山実 銅像、あまがさき観光案内所(阪神尼崎駅前)、尼崎城 天守閣、Starbucks和食麺処サがミ 町田金井店ココデンタルクリニック、町田市立中央図書館、リカーポート 蔵家オールドヒッコリー 町田境川南町田グランベリーパーク、BIZcomfort南町田(グランベリーパーク)、タリーズコーヒー、Picard 南町田グランベリーパーク、だるまのめ 狛江店、町田市立さるびあ図書館、ジーニーズ 町田店44Apartment 薬師池店、薬師池、秘佛薬師如来、相鉄ローゼン 薬師台店、薬師池公園 蓮園、薬師池公園、江川亭 小金井本店、府中運転免許試験場、多磨霊園、武蔵野台駅、双葉SA (下り)星野リゾート界アルプス、信濃大町駅、清音の滝、八坂大滝、清音の滝、信濃木崎駅、森城跡、仁科神社、稲尾駅、森城跡仁科神社栂池ゴンドラリフト 栂池高原駅栂池ゴンドラリフト 栂の森駅栂池ロープウェイ 栂大門駅栂池ロープウェイ 自然園駅栂池ロープウェイ 自然園駅栂池ビジターセンター栂池自然園、展望湿原、浮島湿原、栂池ロープウェイ 自然園駅道の駅 白馬道の駅 安曇野松川 寄って停まつかわ民宿・そば処 ごほーでん梓川SA (上り)、大庄水産、聖龍、サイゼリヤ、中華そば 七面、薬師池公園 蓮園、薬師池公園、町田市役所ココデンタルクリニックコーチャンフォー 若葉台店

・六月ツイート
https://togetter.com/li/1551551

§ 家族のお出かけ 家族で出かけたのは、上の年表で黄地に太字にしているイベントです。家族で出かけたのは、今月は四回です。
自粛の嵐の中、家族ではほぼ毎日顔を合わせている我が家。

家族でも何度か、出かけましたが、大町温泉郷にある星野リゾート 界 アルプスに泊まったのが今月の特記すべき出来事です。
その翌日は木崎湖、栂池高原へと足を伸ばし、信州の自然を堪能しました。
落ち着いた宿のたたずまい。そして見事な料理。
料理人を志す次女は、そのプロ意識に感動してガチ泣きしました。
お風呂が目当てだった家族は、存分に温泉を満喫していたようです(6/20)。

その翌日は私が妻に連れて行きたいと思った場所へ。
ロープウェイを二本乗り継ぎ、訪れた栂池自然園は、私のもくろみ通り、本州最後に旬を迎えるという水芭蕉の大群落が。しばし、言葉が出ませんでした。
いい旅になったと思います(6/21)。

今回のコロナは、自粛を強いられたからこそ、家族の意味を考えさせられる良い機会にもなっています。
生きる意味とは何か、死ぬと人は無に消えるのか。コロナは私たちに生きる意味を問いかけています。悪いことだけではありません。
働き方と生き方に思いを馳せる機会として活かさないと。

ちなみにこちらがボス猿です。彼らに取り囲まれ、辛くも逃げ出した興奮は私の中でおさまらず、帰りの高速でついついレンタカーの返却も急いでいたため、覆面パトカーに御用となってしまいました。二日前に免許の更新をしたばかりだったのに。。



§ 妻とのお出かけ 妻と出かけたのは、上の年表で桃地に太字にしているイベントです。今月は妻と二人で五回お出かけしました。
近所に整備されたばかりの公園で素晴らしい景色を堪能したり、町田を散歩したり。
今月から妻の歯科医院にkintoneを導入する準備を進めており、ココデンタルクリニックに詰める日も二日ほどありました。
他の日は、近隣のお店に訪れることが多かったです。

§ 妻と長女とのお出かけ 上の年表で緑地に太字にしているイベントです。
長女は親知らずを抜歯する際に、歯科医の祖父に抜歯してもらったのですが、歯が骨に癒着していたため、骨にまで影響が生じてしまいました。
頬が腫れた長女の姿はとても気の毒で、腫れ物に触るような日々が続きましたが、ようやく少し腫れが引き始めたのはよかったです。

長女は学校から多数の課題を出されていますが、オンライン授業が始まった影響からか、自室に閉じこもる傾向が増えたのは若干心配でした。
長女にとっても信州の旅は良い影響を与えてくれたと信じています。

§ 妻と次女とのお出かけ 上の年表で緑地に太字にしているイベントです。
この三人で出かける機会はありませんでしたが、末日になって悩める次女の話を私と妻とでじっくりと聞いてあげる機会を作りました。
進路のこと、バイトのこと。コロナによって世の中が不透明になる今、次女の将来も不透明になり、本人なりに不安を覚えているようです。

次女については学校からのメール連絡を全て家族lineに転送する設定を行ったため、次女の学業の様子は全て把握しており、次女は次女なりに頑張っているようですが、次女の彼氏の存在がうちの家族にも若干の波風を立てています。特に長女にとって。
でも、そういう変化があってこその家族であり、家族で話し合ってより良い人生を皆が歩めるようにしたいと思っています。

§ 娘たちとのお出かけ 上の年表で青地に太字にしているイベントです。
今月はコロナの影響もあり、私が家にいることも多く、娘たちとはかなりの時間、顔を合わせています。
ただ、次女の心も長女の心も日によって不安定になることもあります。
大人になる直前に、コロナに襲われた日々。将来を不安に思う娘たちに、どうやって親として接してゆくのか。
私にも親としての器が求められています。

●私自身の六月(交友関係)

§ 関西の交流関係 今月は関西へ仕事で訪れられました。
4月に手術をしたばかりの母に私が無自覚にコロナを移してしまわないか。
それが心配でしたが、まずはディスプレイ越しではく、面と向かって両親の息災を知ることができたのはよかったです。

帰省の道中は三重と奈良を少し散策し、その翌日はサイボウズさんの大阪支社でお仕事をした後、夜は船場センタービルで高校からの親友と再会を含めてお酒を飲む機会もありました。
翌日とその次の日も、高槻を中心にした何カ所かで、お客様の現在の業務を拝見させていただきました。
四日間で、関西の空気を存分に味わえたのが良かったです(6/7-10)。

特に梅田のサイボウズ大阪支社から北大阪の景色を一望にできた事で、私自身のルーツが大阪にあることを強く意識しました。

§ 今月の交流 コロナウィルスによるイベント自粛の嵐は、私から飲み会の機会を何度も奪いました。飲んだ日数は3日。延べ3軒。
コロナによる自粛の嵐は、飲食業界を直撃しており、私もお店の応援がしたいのですが、そもそもやっていない店があり、テイクアウトで弁当を買ったり、酒屋やネットで遠距離の生産者支援をすることが精いっぱいです。数回、遠方の産物を注文しておいしい料理を堪能しました。
また、お酒も栂池高原や、町田の蔵屋さんで5,6本購入しました。
そうしたお酒はオンライン呑み会でいただくか、妻との晩酌でいただきました。おいしかったです。

そして今、リアルで飲める機会が激減しているだけに、リアルの場で飲む喜びは大きいです。
それも高校時代からの親友となるとなおさら。
船場センタービルの地下にある「海鮮料理 まどもあぜる」での時間は幸せでした(6/8)。
その翌日も高槻の「梶平」というお店でお客様と一緒に美味しい酒と料理を楽しみました(6/9)。おそらく高槻で飲んだのは生まれてはじめてだったかもしれません。親戚が住んでいて昔からなじみの深い地だというのに。
最後はパートナー企業の方と狛江の「大庄水産」でこれまた美味しい魚とお酒を(6/23)。相当酔っぱらってしまいました。

今月の私とご縁を結んでくださった皆様、本当にありがとうございました!

●私自身の五月(文化活動)

§ 読書・観劇レビュー 読んだ本のレビューを記す読ん読ブログの執筆は、主に2019年に読んだ18冊分となりました。
レビュー執筆は、私の中では大切なライフワークとして位置付けています。このところ、書く時間があまり取れていませんでしたが、今月はもともと書いていた原稿に手を入れただけで済んだため、遅れを少しだけ取り戻すことができました。一年と20日遅れです。。この期間を質を落とさずに縮めたい。それが去年に引き続いての課題です。書く行為への熱意は衰えていませんので、引き続き続けたいです。

一昨年の春まで連載していたCarry Meさんの運用する本音採用サイトの「アクアビット 航海記」を弊社サイトにアップする作業ですが、今月は1本アップしました。
(「アクアビット航海記 vol.22〜航海記 その10」)
代表の前半生をまとめました。何が起業にとって良かったのか。それを振り返ることは、今の弊社の社風を形作る上で、参考になると思います。

今月、書いた本のレビューは18本(
ジンの歴史
さくら
時生
チームのことだけ、考えた。
盤上の夜
愚者の夜
魔法の種
楽園のカンヴァス
任務の終わり 上
任務の終わり 下
魔法のラーメン発明物語―私の履歴書
世界史を創ったビジネスモデル
スコッチウィスキー紀行
心霊電流 上
心霊電流 下
世界一速く結果を出す人は、なぜ、メールを使わないのか グーグルの個人・チームで成果を上げる方法
追憶の球団 阪急ブレーブス 光を超えた影法師
奥のほそ道」)。
今月、書いた抱負は0本() 。
今月、書いた旅日記は0本() 。

今月、書いた物申すは1本(
47歳。若いとみるか、老いとみるか。」) 。

今月、書いた弊社の活動ブログは1本(
2020年も気がつけば半ばに(法人)」)。

§ 今月の読書 今月は7冊の本を読みました。内訳は自己啓発書一冊、音楽評論一冊、ビジネス実務書一冊、SF小説一冊、娯楽小説一冊、歴史小説二冊。
私の今年の目標の一つは本を出版することですが、まだまだ道は遠いです。
今月はコロナ自粛もあったため、本屋に何度も足を運びました。
そして何冊も本を買いました。今月の読書の多くはかなり手ごたえがある分量でした。前月にブックカバーチャレンジに参加したことで、読書の魅力を見直したことも多いです。

§ 今月の映画 今月の映画鑑賞は0本です。
今月もキングダムは見られずじまい。これで3カ月見られていません。

§ 今月の舞台 舞台については、今月は0本です。
今月ついに宝塚の公演再開が発表されました。それに応じて妻がまた代表としてのさまざまな準備に追われつつあります。
それが目下の切実な悩みです。

§ 今月の音楽 今月は生演奏を聴く機会がありませんでした。ただ、相変わらずGoogle Musicには活躍してもらっています。YouTube Musicにも移行してみましたが、機能にバグが目立つため、またGoogle Musicに戻っています。
今月はyes、Genesis、Led Zepperin、The Whoしか聴いていません。聴きまくってました。

§ 今月の美術 今月は美術の展覧会を見る機会がありませんでした。

§ 今月のスポーツ 今月は相変わらずコロナが自粛を強いており、スポーツはできていません。
散歩は良く行いましたが、それはスポーツとはいえません。
プロ野球やサッカーも無観客で開幕しましたが、あまり見られていません。
なお、観戦とは意味合いが違いますが、炎のザトペック投法で知られる阪神の名投手、故村山実さんの銅像をようやく母校の跡地で拝見することができました(6/10)。

§ 今月の滝 今月、訪れた滝は4滝です。
「鎌倉の滝(6/7)」「青葉の滝(6/7)」「清音の滝(6/20)」「八坂の大滝(6/20)」
鎌倉の滝は道が崩れていたため、落ち口からしか見られませんでした。また、青葉の滝は見事な自然の造形が石段を形作っており、心を正してくれました。
大町の清音の滝は、道のすぐ脇にある滝で、そばの崖には石仏も彫られた歴史を感じさせる端正な滝でした。
そして八坂の大滝は五十メートルともされる落差にもかかわらず、水量が滝つぼを穿たない程度に抑えられ、風によってあちらこちらに散っていることで、音がとても優雅でした。
もちろん落下する水の下で水を感じることもでき、裏側からものぞくことができる滝で、私に感動を与えてくれました。生涯でも十本の指にいれてもよいぐらいの。

§ 今月の旅行 今月は、大阪出張に行く道中に関西の水を存分に味わいました。
行きに新幹線を名古屋で下車し、そこから近鉄に乗り換える際は間違えてデビューしたばかりのヒノトリに乗ってしまい、偶然にも新型特急の旅を楽しみました(6/7)。
さらに乗り継ぎを間違えたことが功を奏し、東青山駅で電車待ちの間に周囲を散策ができました。
また、それによって赤目四十八滝への訪問を諦めたため、代わりに下車した三本松駅の周辺では、宇多川の清流を見ながら、佇まいも見事な海神社に参拝し、近隣の山に分け入って鎌倉の滝と青葉の滝を求めて歩き回りました(6/7)。
平家ゆかりの青葉の笛が生まれたとされる青葉の滝の姿は見事でした。さらにはかつて伊勢へ参る旅人で賑わったという三本松の旧旅籠町を歩けたのも良い思い出となりました。
その翌日は夕方に松尾芭蕉が死没した難波別院で芭蕉の辞世の句碑を見て、人生の短さをかみしめてきました(6/8)。
コロナが私の人生を不自由にしている今だからこそ、心は常に外の世界に向けなければ。
その想いを新たにしました。

家族で訪れた大町でも、妻子を界 アルプスに送り届けたあと、一人で大町の市街や、駅、そして滝めぐりを楽しみました。特に八坂の大滝の50メートルの滝姿には身惚れました(6/20)。
翌朝も7時前に一人宿を出て、木崎湖畔へ。仁科氏が本拠として構えていた森城址やその後にできた仁科神社。そして美しい木崎湖の姿には時間も忘れて惚れぼれとしていました(6/21)。
あとで妻子を連れて再訪したほどに。
栂池自然園も、雪で塞がっていた先まで一人で登り、雄大な展望湿原から白馬の山を間近にし、その帰りには二十匹ほどのニホンザルの群れに囲まれる経験も。
旅を満喫した二日間でした(6/20-21)。



§ 今月の駅鉄 趣味の駅訪問は五駅です。「東青山駅(6/7)」「三本松駅(6/7)」「信濃大町駅(6/20)」「信濃木崎駅(6/21)」「稲尾駅(6/21)」。
東青山駅は意図せず意図せず訪れ、公園以外に何もない様子が新鮮でした。三本松駅も偶然の産物で訪れることになり、印象に残ります。最後に三つはどれも大糸線の駅です。思えば駅の魅力にはまったのは大糸線の梓橋駅でしたから、原点回帰ができたと思います。

§ 今月の酒楽 コロナウィルスによるイベント自粛の嵐は、私から飲み会の機会を何度も奪いました。飲んだ日数は3日。延べ3軒。
そんな中、WOLFBURN蒸溜所のオンラインセミナーに試飲付きで参加できた経験は売れしかったです。新たなオンラインセミナーの形が見られました(6/28)。
また栂池高原で購入した「栂の森」と「北安大國」のしぼりたて生原酒は美味しかったです。
あとはgin  Festivalが中止になってしまった代替としてgin festival  TVも楽しむことが出来ました。
蔵家で購入した玉泉洞酒造のnew Bornはまだ開けていませんが、楽しみでなりません。
今月は仕事に精魂を傾けていたので、上に書いた大庄水産の飲み(6/23)の後、かなり酔っ払ってしまいましたが。



§ 今月のその他活動 人生も半分を過ぎ、一層焦りが募っています。少しでも日々に変化をつけようとする気持ちに衰えはありません。健康なのに外出できない。コロナが私たちの行動に制限を掛けています。悔しくてなりません。

・公園は三カ所。「多摩川緑地公園(6/3)」「薬師池(6/16)(6/17)(6/29)」「栂池自然園(6/21)」

・博物館はゼロカ所。
・駅は五駅。「東青山駅(6/7)」「三本松駅(6/7)」「信濃大町駅(6/20)」「信濃木崎駅(6/21)」「稲尾駅(6/21)」
・入手したマンホールカードは二枚。「兵庫県尼崎市(6/10)」「長野県大町市(6/20)」
・滝は四滝。「鎌倉の滝(6/7)」「青葉の滝(6/7)」「清音の滝(6/20)」「八坂の大滝(6/20)」


・温泉は一カ所。「大町温泉(星野リゾート 界 アルプス)(6/20)」

・山はゼロ山。
・酒蔵は0カ所。
・神社は四カ所。「恵比寿神社(6/4)」「海神社(6/7)」「難波神社(6/8)」「仁科神社(6/21)」

・寺は三カ所。「青葉寺(6/7)」「南御堂 (真宗大谷派 難波別院)(6/8)」「秘佛薬師如来(6/16)」
・教会はゼロカ所。
・史跡は三カ所。「芭蕉翁句碑(6/8)」「村山実 銅像(6/10)」「多磨霊園(6/19)」
・遺跡はゼロカ所。
・城は二カ所。「尼崎城 天守閣(6/10)」「森城跡(6/21)」

・名水百選はゼロカ所。
・灯台はゼロカ所。

私がまだ訪れていない場所の多さにめまいがします。他の活動もまだまだやりたいことがいっぱいあります。
一番怖いのは年齢から来るあきらめと気力の減退です。これだけは防ぎたい。
家族との縁もこれから姿を変えていくことでしょう。仕事もいつかは引退を求められるでしょう。そうなったときにやることがない、とよくある老残にならぬよう。
人はいつかは死ぬ。コロナウィルスの蔓延はそのことを教えてくれました。これから、健康であっても時間があっても出られない。そんな事態にも見舞われそうです。
だからこそ、後悔だけはしないように全力で生きなければ!
仕事だけでなく、いまのうちに時間の合間を見つけ、行けるところに入っておこうと思います。

一方で、将来のこともそろそろ考えねばなりません。
法人のまとめには書いた通り、コロナにもかかわらず、法人としての売り上げは確保できています。ただ、私個人としては投資もしなければ賭け事もせず、不労所得のタネも持っていません。
つまり、一人で私自身の体だけが頼りです。
なので、体に何かがあれば収入は尽きます。そろそろ貯蓄のことも考えていかなければ。

それぞれの場所で俳句も読みました。今月は16句。いずれもツイートまとめに載せています。

あらためて「私」を振り返ってみました。来月もコロナと共存しつつ、自らの生に後悔のないような日々となることを信じて。


2020年6月のまとめ(法人)


昨年度から、毎月ごとに個人と法人を分けてまとめを書きます。

令和二年六月。コロナウィルスに大きく揺さぶられた世界に徐々に落ち着きが見え始めています。
とはいえ、コロナの影響はまだまだ続くことでしょう。
ただ、リモートワークを普段から実践してきた弊社にとって、直接の影響はありません。
ですが、景気の悪化が確実に見込まれる今、発注が減ることは容易に予想できます。

社会は今、急激にリモートワークの方向へと進みつつあります。そのような流れに沿って、弊社がお役に立てることはありそうです。実際、五月にも複数の案件のご発注をいただき、六月はほとんど作業に終始していました。

達成度5割。達成感5割。満足感5割。それが今月の代表自身の自己採点です。

パートナーさんへの発注も進めつつ、自社の案件を増やす。外注率は抑えつつ、代表の作業は生産性を高く維持し、売上につなげる。そんなビジョンで業務をこなしてゆきたいと思います。
弊社とご縁をいただいたすべての方々に感謝します。ありがとうございました。

●弊社の業績

§ 総括 六月度の売上は、まだ確定していませんが、目標額にはかろうじて達することができました。
とはいえ、これで気を抜くわけにはいきません。
コロナの影響が効いてくるのはこれからでしょう。

また、今月は三月末で締めた決算の結果がでました。結果はわずかに赤字となりました。三月の売り上げ減が響いたといえます。

来月以降も、世の中には不安と混迷が渦巻くはずです。
景況は悪化し、厳しい時代が続くことでしょう。
そんな中、弊社は今までの活動で得た複数のご縁を通し、さまざまな案件の引き合いをいただいています。とはいえ、弊社も等しく苦しい時期がやって来るはずです。
実際、お客様の動きは総じて鈍っています。着手開始が遅れている複数の案件があります。

ただ、弊社が以前から取り組んできたリモートワークへの施策は、コロナから弊社の業務を守ってくれました。
そうした取り組みができるようになった背景には、kintoneのようなプラットフォームや情報技術の発展があったことはもちろんです。

四、五月にいただいたいくつもの案件の開発や打ち合わせを連日複数のお客様と行わせて頂いていました。
五月よりは多少は頻度は減ったとはいえ、今月も各種のウェブミーティングツールを駆使して打ち合わせが多かったです。
また、三月以来、久々に出張で大阪に行き、お客様の業務をつぶさに学んできました。

世界が未曽有の危機に襲われる中、弊社ができることの一つ。それは、わが国の会社にリモートワークの考えを根付かせる一助となることだと思っています。
その一環として、今月は初めてfreee Open Guild Online #2で運営側として参加しましたし、イベントの打ち合わせなども行いました。作業が被っていたため、四、五月よりはイベントの参加は抑えましたが、今後に向けたチャレンジは必要だと思っています。

複数の案件を並行して進められるようになりつつありますが、これからも弊社の認知度をあげるためには外部での発信が欠かせません。そうした活動を通して、あらたなご縁からお仕事がつながるからです。
来月以降もリモートワークに絡んだ案件は続きます。一方で経営上のリスクを減らす上でも、少し安定の案件に取り組むことを検討しています。

実績を出しながら、日常も充実させる。それらは全て、代表の求めるワークライフバランスの実現につながってゆくはずです。

§ 業務パートナー 四月から業務パートナーさんとの協業を再開しています。

五月末に「リモートチームでうまくいく」を読みました。弊社でもまだまだ遅れている部分があることなど痛感しました。
なので、今月から、週三回ほど、Slackで思ったことを書き流す運用を始めています。著者の倉貫氏が「社長ラジオ」として5分ほどの談話を社員向けに流している取り組みに感化されてのことです。効果は出ているように思います。この内容はSNSやブログには挙げておらず、いずれブログにも過去分を載せることを考えています。

今月は自粛が明けたこともあって、サテライトオフィスに再び週一回のペースで通うようにしています。
そして、リモートでの打ち合わせの頻度も増やしています。これによって考えを共有し、よい協業ができるように取り組みを始めています。「リモートチームでうまくいく」を回し読んでもらいながら。

外注費の抑制は大切ですが、それにのみこだわると業務の規模は増えません。
なので、うまくバランスを取ろうと考えています。
引き続き抜かりなく進めていく予定です。

§ 開発案件 今月は八割の開発案件がkintoneがらみでした。
ユーザー様には、引き続きインターフェースのわかりやすさをkintoneの魅力として訴求したいと思います。

今月もまた新規に複数のkintone案件をご依頼や見積もりのご依頼をいただいています。
また、今月はfreee社に関わるイベントの司会進行やfreee & kintone BizTech Hackでオンラインハンズオンのメンターを務めるなど、主要な認証の仕組みであるOAuthについて学びを深めました。また、そうした中でfreee社との関わりがさらに強められました。
また、今月は、スマレジとkintoneと連携の実装にかなりの時間を使いました。
実際、スマレジさんのショールームにも訪問もしましたし。

珍しいところでは、スマレジの仕様上の制限で、16000件のデータを一件ずつ登録する必要に迫られ、十年ぶりに即席RPAを自作し、動かしました。
こちらは即席の割には動いてくれているのでよかったです。

来月以降にも、続々とお話をいただいており、お客様の運用の調査のため、大阪出張をしたのも今月ですし、福岡や大分のお客様ともウェブミーティングを何度も行いました。
そうした準備や実装に余念のない月でした。
そうした連携や今後の弊社の重点を整理するためにも、サイボウズ社大阪支店を訪問できたのもよかったと思っています。

§ 財務基盤の堅牢化 財務をきっちりすること。前からの課題です。
弊社としては問題ないのに、家計が絡むととたんに脆弱になる。
いつになればこの状態が落ち着くのか。財務基盤の弱さをいかにして克服するか。課題は山積みです。

同時にコロナによる経済の悪化に備え、持続化助成金は無事採択され、今月初めに入金が済んでいます。
財務の脆弱性を指摘され、日本政策金融公庫の融資は受けられませんでした。これは反省しかないです。まあ、見方を変えれば無借金経営を貫くことができた、ともいえますが。

財務の件は、引き続き最優先で取り組んでいきます。

§ 社内体制 こちらは少し話を進めました。具体的な話を技術者さんと行い、採用も含めたお話まで踏み込みました。具体的な話に進むにはまだかかるでしょうが、引き続き進めていきたいと思います。
雇用自体は、懇意にしている社労士さんや税理士さんからも後押しをいただいています。ただ、そのためにも遅れている経営への考察(業務計画、SWOT分析、経営計画、就業規則、財務計画など)を深める作業を進めなければなりません。

正月に作った経営計画は、完全に古びてしまいました。
なので、コロナを踏まえた景況の悪化と、社会がリモートワークに舵を切ったことによる案件の増加を加味したものをベースに体制を充実したいと思います。

§ 人脈の構築 コロナウィルスに世の中が翻弄され、緊急事態宣言や各自治体による外出自粛の影響もあり、ありとあらゆるイベントが中止となっています。三月以降、いくつのイベントが開催中止になったかもう覚えていません。
ただ、オンラインイベントからは、まだ新たな人脈にも仕事にも結び付けられていません。リアルでの出会いの復活ももちろんですが、オンラインイベントからどうやってご縁を繋ぐかが今後の鍵を握ります。
今月、頂戴した名刺は8枚です。
今、開発パートナーさん向けに書いているSlackの書き込みは、代表がSNSにアップする内容とも、弊社ブログに書く内容とも違う意味合いを持たせています。
なので、これをnoteやmediumなどのビジネスブログメディアにアップするかもしれません。

とはいえ、今後もオンラインのイベントが続いてゆくはずです。
オンラインでも人脈を構築し、ビジネスの新たな流れを創り出すため、引き続きオンラインは参加していくつもりです。コロナ禍が落ち着くことは、まだなさそうなので。
もちろん、対外活動は怠らずに。
引き続きよろしくお願いいたします。

§  対外活動 今月は以下のイベントに参加しました。Strap β版 オンライン説明会(6/2)。freee Open Guild Online #2(6/17)。kintone ソリューションフェス ONLINE(6/24)。みんなの移住フェス 2020 オンライン(6/26、6/27)。WOLFBURN ONLINE SEMINAR(6/28)。

ほとんどがオンラインセミナーです。リアルのイベントが開催できる状況までは、まだ時間が必要でしょう。
弊社も代表も、そして日本の各社もオンラインイベントには工夫を重ねています。
弊社もその流れに乗り遅れまいと、4月からkintone Café、freee & kintone BizTech Hack、freee Open Guildの運営側に参加しています。
来月以降も何かやりたいと思います。

弊社の開発や記事執筆のお仕事はこうした対外活動から生まれています。代表自身による新たな交流を発信することは絶対に怠ってはならないと肝に銘じています。

きっと、必ずや、コロナは小康状態に落ち着くと信じ、また皆様と交流を深めたいと思っています。
まずは今月の弊社と関わっていただいた皆様、誠にありがとうございました。

§ 執筆活動 一昨年の春まで連載していたCarry Meさんの運用する本音採用サイトの「アクアビット 航海記」を弊社サイトにアップする作業ですが、今月は1本アップしました。
(「アクアビット航海記 vol.22〜航海記 その10」)
代表の前半生をまとめました。何が起業にとって良かったのか。それを振り返ることは、今の弊社の社風を形作る上で、参考になると思います。

今月、書いた本のレビューは18本(
ジンの歴史
さくら
時生
チームのことだけ、考えた。
盤上の夜
愚者の夜
魔法の種
楽園のカンヴァス
任務の終わり 上
任務の終わり 下
魔法のラーメン発明物語―私の履歴書
世界史を創ったビジネスモデル
スコッチウィスキー紀行
心霊電流 上
心霊電流 下
世界一速く結果を出す人は、なぜ、メールを使わないのか グーグルの個人・チームで成果を上げる方法
追憶の球団 阪急ブレーブス 光を超えた影法師
奥のほそ道」)。
今月、書いた抱負は0本() 。
今月、書いた旅日記は0本() 。

今月、書いた物申すは1本(
47歳。若いとみるか、老いとみるか。」) 。

今月、書いた弊社の活動ブログは0本(
2020年も気がつけば半ばに(法人)」)。

§ 年表

・六月お仕事

スマレジ東京ショールーム、ココデンタルクリニック、サイボウズ 大阪オフィス、タコとハイボール、高槻お客様オフィス、梶平、お客様事業所(柱本)、お客様子会社(八幡市)、お客様開発センター(摂津富田)、トリップカフェ 高槻、タリーズコーヒー(南町田グランベリーパーク)、大庄水産、ココデンタルクリニック、町田市役所、アクアビットサテライトオフィス×4

・六月ツイート

https://togetter.com/li/1551242


チームのことだけ、考えた。


令和二年五月の中旬に7日間ブックカバーチャレンジで本書を取り上げました。
あらためて書き直してもよいのですが、その時に書いた内容が私の言うべき事を言い尽くしているので、ほぼ流用してアップします。

これをアップした5/10の前日は、kintone Café Online Vol.1でした。
そのタイミングで本書をご紹介できることをうれしく思います。

7日間ブックカバーチャレンジのDay5では、私の技術者としてのキャリアのきっかけになった「Excel VBA」の入門書をご紹介しました。
その中で私が、ここ5年近くkintoneのエバンジェリストとして活動していると書きました。

kintoneも、私にとっては独学で学んだ思い出の深いサービスです。
もともと、個人事業に進む前までは某社にて雇われ、一人情シスとして試行錯誤しながら、システムの知識をモリモリコツコツとためていた私。
社内システム用にファイルサーバーやウェブサーバーを立て、phpやMySQL、SAMBA、Apacheといったサービスをスクラップ&ビルドしながら、試行錯誤の日々を送っていました。
その時、思っていたのが「こうした作業をもっと汎用化できたら」ということでした。

後年、某銀行の本店でSalesForceの試用を任されたとき、衝撃を受けました。
私がかつて願った世界はここに存在した、とまで思いました。
その体験が鮮烈だったため、kintoneのβテスターを募集しているとのツイートを見た時、私はすぐに申し込みました。

私とサイボウズさんの出会いはさらにさかのぼります。大塚商会さんが主催するセミナーでNo Emailのセッションを聞いたのがきっかけです。そこで登壇されていたのは青野社長。
セッションの最後にCybozu Liveを紹介されておられたので、セッション後に私がガラケーでも使えるんやろか、とつぶやいたところ、青野社長ご本人からメンションが来て度肝を抜かれたのがきっかけです。

そのスピード感はそれまでの開発現場や企業では経験したことがないものです。まさにkintoneが掲げるファストシステムの体現でした。

それをきっかけとして、サイボウズという会社に興味を持った私の目に映ったのが、βテスターのお誘いでした。
そこからkintoneに関わり、kintoneのユーザー会にも参加した私。
そこで触れたサイボウズさんの社風には驚かされることばかりでした。
それまで知っていたいくつもの会社の社風とは、明らかに違っています。一癖も二癖も。

私がkintoneをなぜ推し続けているのか。
それは運営者であるサイボウズ社の社風にあります。
ユーザー会に参加した外部の私の目の前で、社長自らが社員の方とスマホをフリフリしてlineで友達になるような社風。

ユーザー会では二度ほど青野社長の横でお酒をご一緒したこともあります。
そこでお話した経験から感じたのは、サイボウズ社の社風とは、取り繕ったものではないという確信でした。
それまで属していた日本の企業や開発現場に息苦しさを感じていた私は、サイボウズ社とのかかわりに活路を見いだしていきます。

当時のkintoneはSalesForceと違ってまだまだ機能が足りず、お客様への導入もためらわれました。
ところが、当時、折よくシステム構築のご相談をいただきましてリリースされたばかりのkintoneを提案したところ、無事に受注ができました。2011年の暮れです。そのシステムは2012年の4月から稼働し、今もまだ運用中です。

kintoneはそれ以来、今に至るまでに機能を拡充し、素晴らしいシステムとして存在感を増しています。
システムを知らない現場の方でもドラッグアンドドロップで簡単にシステムが構築できる。SQLもスキーマもスクリプトも知らなくても手軽にシステムが運用できる。
もちろん、それも私がひいきにしている理由です。

ですが、私はそれ以上にサイボウズ社の社風に惹かれました。
だからこそ、これだけの長きにわたって応援しているのだと思います。自信を持って。

この本には、サイボウズ社の歴史が語られています。
そしてその中では、無数の試行錯誤から生まれたチームのあり方のヒントが詰まっています。

この本には失敗の歴史も豊富に載っています。システム開発会社にありがちなブラックな勤務体系。離職率の増加に歯止めが利かない中、拙速に人事システムを導入したことによる人離れの加速。M&Aの連続による赤字への泥沼。
そうした自社の黒歴史をオープンに語れる社風こそ、まさに私の惹かれた部分です。

そして、7日間ブックカバーチャレンジのDay4の「ワーク・シフト」にも書いた通り、ゼネラリストからエキスパートへ、という気づきを得ました。そこでkintoneのエキスパートになろうとしたからこそ、今の私があります。

ところが、エキスパートとは私の人生から多様性を奪いかねない決断でした。
エキスパートであることは、視野を狭くし、多様性を軽視してしまう。
ですが、サイボウズ社が多様性を重視していることは、本書にも例がふんだんに記されています。
そうした多様性を重視する会社の提供するkitnoneであれば、エキスパートでありながら多様性も実践できる。そう私は確信しています。

実際のところ、私はまだエキスパートではありません。技術者としても経営者としても人間としても。
そしてチームプレイでも。
私は独立してからずっと、独力で独学でやってきました。だから、チームの力を活かす術を知りません。
それを学ばない限り、私がエキスパートになることは金輪際、ないかもしれません。
その都度、いらだったり、自分の無力に涙することでしょう。そして、なんとか自分の人生を活かそうと、これからもあがき続けることでしょう。
その度に、チームのことだけ考えられるように努力します。

‘2019/3/29-2019/3/30


2020年5月のまとめ(法人)


昨年度から、毎月ごとに個人と法人を分けてまとめを書きます。

令和二年五月。コロナウィルスに大きく揺さぶられた世界に徐々に落ち着きが見え始めています。
とはいえ、コロナの影響はまだまだ続くことでしょう。
ただ、リモートワークを普段から実践してきた弊社にとって、直接の影響はありません。
ですが、景気の悪化が確実に見込まれる今、発注が減ることは容易に予想できます。
発注元の原資に余裕がなくなるからです。

社会は今、急激にリモートワークの方向へと進みつつあります。そのような流れに沿って、弊社がお役に立てることはありそうです。実際、五月にも複数の案件のご発注をいただきました。
また、リモートワークの流れに沿ったオンライン・イベントでも司会進行やメンターの役目を務めました。

達成度6割。達成感6割。満足感6割。それが今月の代表自身の自己採点です。

パートナーさんへの発注も進めつつ、自社の案件を増やす。外注率は抑えつつ、代表の作業は生産性を高く維持し、売上につなげる。そんなビジョンで業務をこなしてゆきたいと思います。
弊社とご縁をいただいたすべての方々に感謝します。ありがとうございました。

●弊社の業績

§ 総括 五月度の売上は、まだ確定していませんが、目標額にはかろうじて達することができました。
とはいえ、これで気を抜くわけにはいきません。
コロナの影響が効いてくるのはこれからでしょう。

来月以降も、世の中には不安と混迷が渦巻くはずです。
景況は悪化し、厳しい時代が続くことでしょう。
そんな中、弊社は今までの活動で得た複数のご縁を通し、さまざまな案件の引き合いをいただいています。

弊社が以前から取り組んできたリモートワークへの施策は、コロナから弊社の業務を守ってくれました。
そうした取り組みができるようになった背景には、kintoneのようなプラットフォームや情報技術の発展があったことはもちろんです。
それらを取り扱う弊社に、リモートワークを進めたいからkintoneについて話を聞かせてほしい、というオファーも届き、来月以降にも複数の案件が続いています。ありがたいことです。

いくつもの来月以降の案件をいただき、その開発や打ち合わせを連日複数のお客様と行わせて頂いていました。そのほとんどがウェブミーティングでした。zoom、ChatWork Live、Google Hangout、Skype、Whereby、BellFace、Microsoft Team、Google Meetのどれかを使わない日はないというぐらいに。珍しいところではSpatial.chatを使ったパーティーのトライアルも行ったり。

世界が未曽有の危機に襲われる中、弊社ができることの一つ。それは、わが国の会社にリモートワークの考えを根付かせる一助となることだと思っています。
その一環として、今月は初めてfreee Open Guild Online #1で司会進行だけを担当する役割に挑戦しました(5/13)。また、4月にfreee & kintone BizTech Hackでオンラインハンズオンの講師も担当しましたが、その中でハンズオンのサポート役であるメンターにも挑戦しました(5/22)。それらの実績はとても大きな気づきと自信を与えてくれました。

複数の案件を並行して進められるようになりつつありますが、これからも弊社の認知度をあげるためには外部での発信が欠かせません。そうした活動を通して、あらたなご縁からお仕事がつながるからです。今後に向けてよいスタートが切れたと思っています。
来月以降もリモートワークに絡んだ案件は続きます。一方で経営上のリスクを減らす上でも、少し安定の案件に取り組むことを検討しています。

実績を出しながら、日常も充実させる。それらは全て、代表の求めるワークライフバランスの実現につながってゆくはずです。

§ 業務パートナー 先月から業務パートナーさんとの協業を再開しています。
代表自身が行ったほうが作業のスピードを落とさず作業ができるのは確かでしょう。
ところが、代表自身のリソースがだんだん切迫しつつあります。そこにさらに案件の伝達やそもそもの開発の方法まで教えなければなりません。
でも、それを含めても業務の伝達は欠かせないと判断しています。まだ案件は増えると予想しているからです。

それもあって、弊社が主体となったリモートミーティングの機会も増やしています。また、自粛期間であるゆえに、顔を合わさずリモートでの取り組みに特化しましたが、これは引き続き続けたいです。

そのためにも少しでもツールを作り、外注部分を減らす取り組みを進めています。
外注先と共存しつつ、外注比率を抑えるにはどうすればよいか。
第5期はその部分にも気を配ったことで弊社の歴史でも最高の売上総利益を達成できました。ただ、外注費の抑制だけにこだわっていると、案件数が増やせません。そもそもの案件ごとの見積額を上げ、なおかつ教えつつ、フォローする時間だけ生産性が落ちることを踏まえた外注費をその都度算出することが重要だと考えています。

引き続き抜かりなく進めていく予定です。

§ 開発案件 今月は九割の開発案件がkintoneがらみでした。
kintoneとAWSやGoogle Apps Script、boxとの連動を行いながら、kintoneを基幹システムの一角として提案し、周辺システムと組み合わせての提案が受注につながっていると思われます。
ユーザー様には、引き続きインターフェースのわかりやすさをkintoneの魅力として訴求したいと思います。

今月もまた新規に複数のkintone案件をご依頼や見積もりのご依頼をいただいています。
また、今月はfreee社に関わるイベントの司会進行やfreee & kintone BizTech Hackでオンラインハンズオンのメンターを務めるなど、主要な認証の仕組みであるOAuthについて学びを深めました。また、そうした中でfreee社との関わりがさらに強められました。
また、kintoneと連携できるサービスを広げるため、いくつかのサービスの調査と勉強を続けています。スマレジ、Infomart、帳票Online、カラーミーショップ、freee、Money Forward、ヤマトビジネス、メールワイズ、Twilio、DocuSign、Apple Calendarなど。

20日に一件、納期があり、その前の3日、4日は連日深夜まで打ち合わせを行っていました。その時期は複数の案件も同時に動いており、なかなかに多忙な状態が続いていましたが、月末にはだいぶ落ち着きました。

今月はとくにスマレジとカラーミーショップとfreeeのAPIドキュメントを見る機会が多かったように思います。
今後もリモートでやる仕事は増えそうです。今の機会を活かして勉強に費やそうと思います。

§ 財務基盤の堅牢化 財務をきっちりすること。前からの課題です。
弊社としては問題ないのに、家計が絡むととたんに脆弱になる。
いつになればこの状態が落ち着くのか。財務基盤の弱さをいかにして克服するか。課題は山積みです。
この分野にはRPAを導入を考えるつもりです。そうしなければ、処理が回らなくなっています。オンラインの請求書を自動的に取り込み、税理士の先生に提出する書類として集めるか。
同時にコロナによる経済の悪化に備え、補助金も申請するなど準備を進めています。
この件は、引き続き最優先で取り組んでいきます。

§ 社内体制 こちらはまだ道半ばです。サテライトオフィスの開設はなりましたが、今、そこでは外注先の技術者に対しての活用しかできていません。
雇用自体は、懇意にしている社労士さんや税理士さんからも後押しをいただいています。ただ、そのためにも遅れている経営への考察(業務計画、SWOT分析、経営計画、就業規則、財務計画など)を深める作業を進めなければなりません。
正月の三日間で来季の経営計画の基本は作成したので、引き続き中期計画の策定に取り掛かりたいと思います。
ただ、正月が1年前に思えるほど、世の中は変わってしまいました。今やコロナを踏まえた景況の悪化と、社会がリモートワークに舵を切ったことによる案件の増加を加味しなければなりません。こちらは引き続き続けていきたいと思います。

§ 人脈の構築 コロナウィルスに世の中が翻弄され、緊急事態宣言や各自治体による外出自粛の影響もあり、ありとあらゆるイベントが中止となっています。今月も参加する予定だった複数のイベントが中止となりました。
そうしたイベントのいくつかはオンライン開催へと切り替わり、そこでは何回か参加できました。
ただ、オンラインイベントは、人脈の構築という意味ではリアルのイベントに比べて圧倒的に弱いです。そのため今月は、人脈の構築もはかばかしくありませんでした。
今月、頂いた名刺は1枚です。これはおそらく、ここ数年で間違いなく最も少ない枚数でしょう。
Sansan社ではオンライン名刺をサービスに打ち出しており、そうした価値観の変化についていく取り組みを始めました。
オンラインでも仕事をやり取りできる関係をどうやって築き上げてゆくか。
新たな人脈の構築手段を考えなければならない時期がきているようです。SNSの使い方も考えなおさねばならないかもしれません。

オンライン飲み会は複数回、開きました。オンラインイベントにも複数回参加しました。ですが、リアルなイベントに参加した時に比べると、参加の実感も弱く、余韻も続かないことが難点です。
リアルなイベントの開催が難しい以上、オンライン・イベントに切り替わることはやむをえません。そしてそこに参加するしかありません。
今後はオンラインのイベントが続いてゆくはずなので、オンラインでも人脈を構築し、ビジネスの新たな流れを創り出すため、引き続きオンラインは参加していくつもりです。SNSの関わり方も見直すつもりです。
コロナ禍が落ち着けば、また対外活動に乗り出すつもりには変わりないのですが。
引き続きよろしくお願いいたします。

§  対外活動 今月は以下のイベントに参加しました。ミニWeb討論会/何がテレワークを阻害しているのか?(5/7)。kintone Café Online Vol.1(5/9)。テレワーク時代のバックオフィス構築セミナー(5/13)。freee Open Guild オンライン #1(5/13)。フォームブリッジカフェ(5/15)。freee & kintone BizTech Hack(5/22)。バーチャル カチドキ パーティールーム vol.0 お試し編(5/24)。
本来ならそれ以外にも、いろいろなイベントがあったはずです。どれも3密を防ぎたい政府や自治体からの要請で中止を余儀なくされました。

ただし、そうした現状を打破しようと、人々はオンラインセミナーの実施に舵を切り始めています。弊社もその流れに乗り遅れまいと、4月にはkintone Café 神奈川 Vol.6を主催し、freee & kintone BizTech Hackではオンラインハンズオンの講師も務めました。今月もfreee Open Guild Online #1の司会進行を務め、freee & kintone BizTech Hackではハンズオン講師をサポートするメンターも務めました。ともに大きな挑戦となりました。
弊社にとってとても大きなステップだったと思います。

弊社の開発や記事執筆のお仕事はこうした対外活動から生まれています。代表自身による新たな交流を発信することは絶対に怠ってはならないと肝に銘じています。

きっと、必ずや、コロナは小康状態に落ち着くと信じ、また皆様と交流を深めたいと思っています。
まずは今月の弊社と関わっていただいた皆様、誠にありがとうございました。

§ 執筆活動 一昨年の春まで連載していたCarry Meさんの運用する本音採用サイトの「アクアビット 航海記」を弊社サイトにアップする作業ですが、今月は1本アップしました。
(「アクアビット航海記 vol.21〜航海記 その9」)
代表の人生を大きく変えた決断は、朝礼の場でクビにされる屈辱から生まれました。起業にむけて大きなステップだったと思います。

今月、書いた本のレビューは12本(
教団X
球体の蛇
パソコン入門
夏の名残りの薔薇
蜩ノ記
七日間ブックカバーチャレンジ-FACTFULLNESS
七日間ブックカバーチャレンジ-成吉思汗の秘密」)。
七日間ブックカバーチャレンジ-占星術殺人事件」)。
七日間ブックカバーチャレンジ-ワーク・シフト」)。
七日間ブックカバーチャレンジ-かんたんプログラミング Excel VBA 基礎編」)。
七日間ブックカバーチャレンジ-チームのことだけ、考えた。」)。
七日間ブックカバーチャレンジ-天津飯の謎」)。

今月、書いた抱負は0本() 。
今月、書いた旅日記は0本() 。

今月、書いた物申すは1本(
コロナをSDG’sの実現に活かすために。」) 。
今月、書いた弊社の活動ブログは1本(
freee Open Guild Online #1で司会進行を担当しました」)。

§ 年表

・五月お仕事

浅草で打ち合わせ・調査×3、サテライトオフィス×2

・五月ツイート

https://togetter.com/li/1529652


七日間ブックカバーチャレンジ-チームのことだけ、考えた。


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

Day6 「チームのことだけ、考えた。」

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

昨日はkintone Café Online Vol.1でした。
そのタイミングで本書をご紹介できることをうれしく思います。

Day5では、私の技術者としてのキャリアのきっかけになった「Excel VBA」の入門書をご紹介しました。
その中で私が、ここ5年近くkintoneのエバンジェリストとして活動していると書きました。

kintoneも、私にとっては独学の連続でした。
もともと、個人事業に進む前までは某社にて雇われ、一人情シスとして試行錯誤しながら、システムの知識をモリモリコツコツと貯めていた私。
社内システム用にファイルサーバーやウェブサーバーを立て、phpやMySQL、SAMBA、Apacheといったサービスをスクラップ&ビルドしながら、試行錯誤の日々を送っていました。
その時、思っていたのが「こうした作業をもっと汎用化できたら」ということでした。

後年、某銀行の本店でSalesForceの試用を任されたとき、衝撃を受けました。
私がかつて願った世界はここに存在した、とまで思いました。
その体験が鮮烈だったため、kintoneのβテスターを募集しているとのツイートを見た時、私はすぐに申し込みました。

私とサイボウズさんの出会いはさらにさかのぼります。大塚商会さんが主催するセミナーでNo Emailのセッションを聞いたのがきっかけです。そこで登壇されていたのは青野社長。
セッションの最後にCybozu Liveを紹介されておられたので、セッション後に私がガラケーでも使えるんやろか、とつぶやいたところ、青野社長ご本人からメンションが来て度肝を抜かれたのがきっかけです。

そのスピード感はそれまでの開発現場や企業では経験したことがないものです。まさにkintoneが掲げるファストシステムの体現でした。

それをきっかけとして、サイボウズという会社に興味を持った私の目に映ったのが、βテスターのお誘いでした。
そこからkintoneに関わり、kintoneのユーザー会にも参加した私。
そこで触れたサイボウズさんの社風には驚かされることばかりでした。
それまで知っていたいくつもの会社の社風とは、明らかに違っています。一癖も二癖も。

私がkintoneをなぜ推し続けているのか。
それは運営者であるサイボウズ社の社風にあります。
ユーザー会に参加した外部の私の目の前で、社長自らが社員の方とスマホをフリフリしてlineで友達になるような社風。

ユーザー会では二度ほど青野社長の横でお酒をご一緒したこともあります。
そこでお話した経験から感じたのは、サイボウズ社の社風とは、取り繕ったものではないという確信でした。
それまで属していた日本の企業や開発現場に息苦しさを感じていた私は、サイボウズ社とのかかわりに活路を見いだしていきます。

当時のkintoneはSalesForceと違ってまだまだ機能が足りず、お客様への導入もためらわれました。
ところが、当時、折よくシステム構築のご相談を頂きましてリリースされたばかりのkintoneを提案したところ、無事に受注ができました。2011年の暮れです。そのシステムは2012年の4月から稼働し、今もまだ運用中です。

kintoneはそれ以来、今に至るまでに機能を拡充し、素晴らしいシステムとして存在感を増しています。
システムを知らない現場の方でもドラッグアンドドロップで簡単にシステムが構築できる。SQLもスキーマもスクリプトも知らなくても手軽にシステムが運用できる。
もちろん、それも私がひいきにしている理由です。

ですが、私はそれ以上にサイボウズ社の社風に惹かれました。
だからこそ、これだけの長きにわたって応援しているのだと思います。自信を持って。

この本には、サイボウズ社の歴史が語られています。
そしてその中では、無数の試行錯誤から生まれたチームのあり方のヒントが詰まっています。

この本には失敗の歴史もたくさん載っています。システム開発会社にありがちなブラックな勤務体系。離職率の増加に歯止めが利かない中、拙速に人事システムを導入したことによる人離れの加速。M&Aの連続による赤字への泥沼。
そうした自社の黒歴史をオープンに語れる社風こそ、まさに私の惹かれた部分です。

そして、Day4の「ワーク・シフト」にも書いた通り、ゼネラリストからエキスパートへ、という気づきを得ました。そこでkintoneのエキスパートになろうとしたからこそ、今の私があります。

ところが、エキスパートとは私の人生から多様性を奪いかねない決断でした。
エキスパートであることは、視野を狭くし、多様性を軽視してしまう。
ですが、サイボウズ社が多様性を重視していることは、本書にも例がふんだんに記されています。
そうした多様性を重視する会社の提供するkitnoneであれば、エキスパートでありながら多様性も実践できる。そう私は確信しています。

実際のところ、私はまだエキスパートではありません。技術者としても経営者としても人間としても。
そしてチームプレイでも。
私は独立してからずっと、独力で独学でやってきました。だから、チームの力を活かす術を知らずにいます。
それを学ばない限り、私がエキスパートになることは一生ないかもしれません。
その都度、いらだったり、自分の無力に涙することでしょう。そして、なんとか自分の人生を活かそうと、これからもあがき続けることでしょう。
その度に、チームのことだけ考えられるように努力します。

ということで、四つ目のバトンを渡させていただきます。freee社のニックさんこと 長内 毅志 さんです。
kintoneのエバンジェリストの活動から、昨年からfreee社のイベントにも参加・運営するようになった私。
freee社もオープンプラットホームの理念を掲げ、開かれたシステムを目指している会社です。
私にとって応援したいと思わせてくれます。まだまだご一緒する機会が多くなりそうです。

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

「チームのことだけ、考えた。」
単行本 ソフトカバー:254ページ
青野慶久(著)、ダイアモンド社(2015/12/17出版)
ISBN978-4-478-06841-0

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

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


freee & kintone BizTech Hackでオンラインハンズオンの講師を務めました


4/24(金)に行われた「freee & kintone BizTech hack」で、セミナーとハンズオンを弊社代表が担当させていただきました。
今回、初めての開催でありながら、全てがzoom上で行われました。100%ピュアのオンラインです。

ハンズオンとは講師が壇上に立ち、スクリーンに映した作業の一部始終を参加者に見てもらいながら、参加者にも同じ操作を再現してもらうセミナーの形態です。

ハンズオンは、どこか一つでも参加者が手順を誤るとうまく動きません。ですから通常は数名のメンターやサポートスタッフが会場を巡回し、参加者が課題を完遂できる様に導きます。
それでも多くの方が途中で脱落してしまいます。
私も参加したハンズオンのうち、完遂できなかったことがあります。

今回はそのハンズオンをオンライン上で行いました。つまり、難しさはさらに上がります。

弊社代表は、参加者を会場に集めてのハンズオン講師の経験は持っていましたが、オンラインハンズオンの講師は初めてです。
初めてだったのは弊社代表だけではありません。運営側の全員がほぼ未経験でした。
そのため、リハーサルは三回行いました。

皆さんにどうやったらわかりやすく内容を伝えられるか。どうやれば皆さんにハンズオンの課題を完遂してもらえるか。
手順を省くことは許されません。参加者がどこまで理解しているかも予断できません。

矛盾のない内容になっているか。話す速度は大丈夫か。提供するプログラムは破綻していないか。
リハーサルではそうした確認を行い、運営者の皆さんから指摘してもらいました。KPT法にのっとり、keep、problem、tryを繰り返しつつ。

結果として、15名の参加者の皆さんに最後まで完遂してもらうことができました。これも運営の皆さんと参加者の皆さんのご協力のたまものです。ありがとうございました。
公式開催報告:(https://fk-biztech.qloba.com/activities/7256

私にとって、今回の経験はとても得難いものでした。
ハンズオンの講師は、内容を完全に理解していなければ務まりません。
今回、ハンズオンでOAuthの仕組みを扱うにあたり、今まで何となく扱っていたOAuthについてさらに理解を深めました。
学びを通して自分の中にOAuthの仕組みをきちんと落とし込めたことは、今後の業務にとって助けとなるはずです。

ハンズオンの前のセミナーでお話しした通り、これからはSaaS同士の連携が欠かせません。
セミナー資料:(https://slides.com/yoshikazunagai/freee-kintone-biztech-hack-seminar
既存の構成から、新たな仕組みへと。
技術者に求められる役割はこれからも多岐にわたることでしょう。私たち技術者が学ぶべきことは多く、しかも新たな技術を取り入れねばなりません。

今後もオンラインでハンズオン講師を務める機会はあるでしょう。
私もできる限り、力を尽くしたいと思います。
より多くの人にエコシステムを使ってもらうために。より多くの技術者にオープンプラットホームの世界で活躍してもらうために。

すでに今回、ご好評をいただいたことで、次回の開催が決まっています。
freee & kintone BizTech Hackの二回目が5/22に行われます。
申込サイト:(https://fk-biztech.qloba.com/
次回は私は登壇しませんが、スタッフとして皆さんをサポートさせてもらえればと思います。
よろしくお願いします。


笠岡・鞆・kintone Café 広島@福山 2019/3/1


この旅を振り返るには、その前年の秋までさかのぼらなければなりません。
2018年の秋、kintone Café JAPAN 2018が日本橋のサイボウズ社で開催されました。それは、全国で活動するkintone Caféのリーダーが集まる場所。
その集まりに参加していたkintone Café 広島のリーダーである安藤さんに、来春は登壇します、と約束したのです。

約束した以上、果たすのは当然。
Messengerのやり取りによって決まった開催日が3/1でした。

前夜、新幹線で甲子園の実家に向かい、両親と鍋を囲んだ私。
翌朝、実家の車を借りて福山へ向かいました。
宝塚ICから中国自動車道と山陽自動車道を乗り継ぎ、一路西へと車を駆る私。今回は同乗者もおらず、車内には私ひとり。つまり、リハーサルには持ってこいです。夜に話す内容を何度も繰り返しフロントガラスに向けて語る私。多分、反対車線を走る超人的な動体視力のドライバーからは不気味に映ったことでしょう。

夜の登壇に向け、やる気に満ちた私。
とはいえ、高速道を降りたのは笠岡インターチェンジ。福山の一つ手前です。
なぜ、笠岡?
それはもう、私のいつものパターンが発動したからです。仕事で地方に行く際は必ず観光を組み込む。それは私の王道。
いったんkintoneのことは忘れ、笠岡を堪能したい!
そんな私が目指したのはカブトガニ博物館。

カブトガニ博物館は、まだ未訪問でした。なので前から一度は来たいと願っていました。何せ世界で唯一のカブトガニを取り上げた博物館ですから。
館内にはカブトガニの生態が観察できるよう、大小のカブトガニが多数、水槽で飼育されています。
この博物館では、生きる化石とも言われるカブトガニの生態や、なぜ笠岡にカブトガニが生息しているのかについての詳しい展示がされています。それらの展示はどれもが興味深く、知識として得がたいものです。なぜなら、カブトガニはあまり水族館でも見かけないからです。つまり、カブトガニの生きざまや萌えるポイントを知らずに生きてきたのです。

水槽の中でもあまり動かず、ジッとしている個体もいれば、雌雄のツガイが交尾中のまま、水槽に固定されたかのように動かない姿も食い入るようにみました。
何もかもがミステリアス。それでいて憎めない存在。
エイリアンのモデルになったのでは?と思わせるいかついフォルムを擁しているカブトガニに、萌えを感じる人はなかなかいないはず。
もし興味を持ったあなたは一度カブトガニ博物館に来てみることをお勧めします。

私の印象に強く残ったのは、カブトガニの血液から薬が作られていることです。
カブトガニの独特の青白い血からしか作れない薬があるらしく、それがここ笠岡で製薬会社と連携して作られているとか。
素晴らしいことです。それ以上に素晴らしいのは、青白い色の鮮烈さ。
カブトガニに対しては「おめえらの血は何色だァ」とすごんで見せても「青白ですが、何か?」と返し技を喰らうので気を付けなければ。

カブトガニ博物館には、養殖池やシアターや化石展示など見所に富んでいます。この博物館のためだけに笠岡に来る価値はあると思えました。そう言い切ってしまえるほど、全国でも唯一無二の存在なのです。
博物館の受付ではマンホールカードもいただきました。笠岡市のマンホールにはカブトガニがあしらわれていて、コレクターの琴線をくすぐってくれます。

博物館の外には大きめの公園が設えられ、そこには等身大と思われる巨大な恐竜の像が何体も展示されています。笠岡では恐竜も発掘されたらしく、館内にも化石が展示されていました。
私が訪れたとき、ちょうど幼稚園の園児たちが見学に来ていて、恐竜の周りでお弁当を食べていました。この中で何人が古生物学者になってくれることやら。楽しみです。


カブトガニ博物館の目の前に広がる海は、カブトガニの住処であることが納得できるほど凪いでいました。
この穏やかな海の光景は、笠岡を思い出すたびに脳裏に浮かぶことでしょう。

この海に 太古の奇跡 輝きぬ
笠岡市立カブトガニ博物館にて

私がまだ知らずにいた笠岡の魅力。
そうした出会いに恵まれる経験こそが、旅の妙味です。

他にも笠岡の魅力はあるはず、と駅前のラーメン店を探したのですが、あいにく車を停めるスペースが見つからず。
海辺の隠れ家のような場所にあるうどん屋も訪れてみましたが、そこも あいにくの閉店日でした。天は私に笠岡の食い物をお預け遊ばしやがる。

ところが私に、天は笠岡ラーメンを賜ってくださったのです。
それは広大な干拓地の中にある道の駅ベイファーム笠岡まで足を伸ばしたときの事。
せめてそこで軽く食事だけでも、と思った私に笠岡ラーメンの写真が。醤油ベースのそれをつるりと。ご馳走さまです。
時間が遅くなったので、惣菜ビュッフェまで用意されていたのですが、さすがにそれは我慢しました。
道の駅に売られている農産物はどれもがとても美味しそう。この地の豊かさを感じます。

何しろ、あたりは広大です。干拓によって生まれたとされる道の駅周辺は、広大な農地。この広がりから、豊穣な産物が生産される。まさにこれは笠岡のランドスケープ。
海と干拓地の平らで広やかな様子は、私の記憶に笠岡の魅力として残り続けるはずです。

続いて私が向かったのは鞆の浦。
私はかつて、福山には来たことがあります。だが、その時には鞆の浦は訪れませんでした。その時の私が訪れたのは、ホロコースト記念館。その話はまた別に。

さて、私の期待を裏切らぬように、鞆の浦は、風情と歴史を全力で私の眼前で表現してくれていました。
古来より風待ちの港町として栄えてきた伝統。それは、道の狭さにもあらわれています。車を止める場所を見つけられず私に鞆の街を二周もさせてしまうほど。

結局、停める場所が見つからず、観光案内所に車を停めさせてもらいました。最初は観光案内所にも一瞬だけ停めさせてもらうつもりだったのです。
ところが、少し街に足を踏み入れた私は出会ってしまったのです。保命酒の店舗に。
風情のある建物に掲げられる保命酒の看板。それが数軒連なり、通りを構成している。私はそのたたずまいにすっかり魅了されてしまいました。

保命酒の知識など全く持たぬまま、鞆の浦に迷い込んだ私。予期せぬ酒蔵の出現にすっかり上機嫌となり、鞆の浦から去り難くなってしまいました。
入江豊三郎本店の店舗に入り、店員さんにあれこれ質問させてもらい、製法の資料などを興味深く拝見しました。
養命酒とほぼ製法は同じらしいのですが、鞆の浦の賑わいとともに、全国的な知名度も落としてしまったとか。
惜しい。一介の飲んべえに過ぎないただの風来坊の私ですが、保命酒はもっと知ってもらいたい、と思える存在でした。
私も一本、入江豊三郎商店の一リットル瓶を、両親のために買い求めました。

保命酒によって鞆への興味がむくむくと湧いた私。
続いて向かったのは、鞆城跡。
天守は現存しませんが、天守の代わりに歴史博物館が鞆の街を見守っています。
天守台から見下ろす鞆の街、そして瀬戸内海。まさに絶景です。早春の瀬戸内海の景色とはこのようなものか、と悦にいる私。

ちなみにこの時の私は、鞆の浦がモデルとなったといわれる「崖の上のポニョ」は確かに意識していましたが、それほどの感慨は持ちませんでした。鞆城址からのアングルがポニョのしんに思い当たらなかったからかもしれません。
そもそも街もあまりポニョのことは表に出していない様子。
それはそうでしょう。これだけの観光資産を抱えていればポニョに頼らなくとも十分なはず。
ポニョの海 なだらかに春 歌いけり
鞆の浦にて

ますます鞆の浦に興味を抱いた私は、夜のkintone Caféのことなどすっかり忘れ、せっかくなので鞆の浦をさらに見て歩きたくなりました。
まず観光案内所に一度戻り、きちんとお店の人に話しをしてお金を支払い
、ついでに私向けに四蔵の製品がそれぞれミニボトルになったお土産を購入しまして。

再び街を巡り始めた私が訪れたのは、常夜燈のある海辺です。この日は観光客も多かったのですが、地元の中学生がボランティアガイドをしている姿に打たれました。数人ではなく、20人以上はガイドがいたでしょうか。積極的に声を掛けてくるのです。
私も声を掛けてくれた男子に太田家住宅や七卿落ちの史跡の由来を教わりました。なんだか胸がほっこりしました。

常夜燈のたもとにいた地元の古老らしき方は、ガイドさんの説明に納得がいかないらしく、文句を垂れていました。
わたしもその古老には常夜燈の由来をいろいろと教わりました。が、古老もいつの日か、ガイドできる体力がなくなるはず。
だからこそ中学生がガイドを行うことが重要なのです。
彼ら彼女らの存在がどれだけ観光客には爽やかに映るか。そして将来、地元への愛着をどれだけ養ってくれるか。
私にとって、鞆の浦の思い出の一つがこのガイドさんたちとの出会いでした。

常夜燈の側にはいろは丸展示館があり、そこは中に入って見学しました。坂本龍馬が乗っていて、紀伊藩の明光丸と衝突して沈んだあの船です。

私は最後に、坂本龍馬が隠れて住んでいたという桝屋清右衛門宅の隠れ部屋を見学しました。
鞆の浦とは、さほど広くない街の至る所にこうした歴史の面影を宿す場所があります。歴史が好きな人にとって、鞆には何日滞在しても飽きないことでしょう。
「竜馬がゆく」の世界がこうして今も残されていることに、粛然とした思いがよぎります。
室町、安土桃山時代、江戸時代、幕末と歴史の年輪が刻まれた鞆の浦の魅力は一度だけの訪問では到底味わい切れるものではないのでしょう。

わたしにとって見るべきところはまだまだあり、安国寺や平賀源内生祠など行けなかった場所からはいまだに後ろ髪を引っ張られ続けています。
ですが、そろそろ福山に向かわなければ。何のために福山にきたのか忘れそうになってしまいます。

私が福山でとったのはアンカーホテル。福山城の近くです。
シャワーを浴び、登壇内容の最後の確認をしていると、私と同じく遠方からkintone Café広島に来られた久米さんからご連絡があり、一緒にタクシーで会場に向かいました。
その後のkintone Café広島の詳細は、

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


に記しており、本項では割愛します。

とにかく、とても充実した一日でした。この旅でお会いした皆様、ありがとうございました。


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


 ウイスキー検定二級の取得、唎酒師に向けて勉強開始

昨年、二級に向けて勉強するはずが、仕事が忙しくて全く手が回りませんでした。
昨年は仕事で複数の資格を取得したので、個人的な資格にも再度チャレンジしたいと思います。

 トランクルームの棚設置

こちらも仕事の忙しさの中ですっかり後手に回っていました。
本が大量にたまっているので、読んだ本から順次移せるよう、棚を作成したいと思います。

 東京オリンピック・パラリンピック

今のところチケットは取れていません。
ですが、パラリンピックも見たい試合が多々あります。
チケット取得へあきらめずに努力したいと思います。

 海外1国、国内12都道府県の旅行

ここでいう旅行とは、その地を足で歩くことです。
日本の滝百選の滝は8カ所を目指します。
近畿/中部/関東/東北の駅百選は20カ所を目指します。
日本の城百選、続日本の城百選の城は10カ所を目指します。
酒蔵は3カ所、ウイスキー蒸留所は3カ所訪問します。
日本百名山、続日本百名山の登頂は三座は目指したいです。
去年はほとんど未達だったので、今年は時間の配分を考えて。

 毎月一度の一人のみの実施

これは昨年、実現できました。
酒の種類、場所は問いません。毎月一度は一人で反省する時間を作ります。

 毎月一度の一人旅の実施

上に書いた12都道府県の旅は、この一人旅で実現していきたいです。
仕事で地方を訪問する機会を増やすことで実現できるはずだと思っています。
ワーケーションが実現できる自信もつきましたし。
三泊は車中泊をしながらの遠距離の旅がしたいですね。

 SNS

SNSは毎日のFacebookへの投稿は続けます。人生360度を表現するため、投稿内容をなるべく雑多にする方針は変えるつもりはありません。
また、Twitterも同様に不定期で続けます。俳句や雑感や仕事も交えながら。
さらにInstagramも同様に不定期で続けます。よく撮れた写真の公開場所として。

ここ二年、私自身の投稿へのいいねやメンションが減ることは承知で、あえて他人様のSNSには無反応でした。昨年後半から、仕事をこなしながらの余裕が出てきたので、今年はまた他人様の投稿に反応する時間を増やすつもりです。ただし自分からフレンドリクエスト申請をしないポリシーは変えませんが。

 レビュー執筆にあたっての音声入力の勉強

読書量が少し減ってきているのが昨年の反省です。
また、読書レビューをアップするスピードも落ちてきています。
これを両立するために引き続き音声入力の可能性を追求します。

 娘たちのフォロー

家族との融和を大切に、締めるところはきっちりと。

 両親と関西の友人への感謝

昨年は関西の友人に数度しか会えていません。
今年はその機会を増やします。
また、両親に会いに帰る機会も増やします。
今年は私の人生に強烈なインパクトを残した阪神・淡路大震災から25年たった年なので。

 体のケア

いくつか、私の肉体に衰えが出てきています。
早いタイミングで基本健診を受けに行きます。
仕事と個人と地域の三方よしの両立はまず体から。

 人に会って感謝する

SNSでできないこと。それは、対面で会っての感謝です。
忙しい毎日で、すべての人にお会いすることが次第に難しくなってきています。
が、折を見て伺ったりしながら、交流と感謝の基礎は対面にあり、を実践したいと思います。

 家計をきっちり

だいぶ家計には統制が効いてきたように思います。
ですが、まだまだです。引き続き長女と協力していきたいと思います。

 当抱負のアラート表示

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


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


 弊社サイトのSSL対応

現レンタルサーバーは引き続き最低限のプランで継続する予定です。
継続した上でレンタルサーバー内のプランでSSL化に対応するサーバーに移管する作業を行います。
WordPressの移転作業はすでに経験済みなので大丈夫でしょう。
1月中に必達でやってしまいます。
3月には非SSLサイトが軒並み遮断される見込みが高いので。

 売上額

2019年度の1.25倍を目指します。粗利は今年度の実績を維持します。

 事業計画

すでに正月の三が日に4月以降の第6期の経営計画は作成しました。(公開はしない予定です)
あとは五年後の中期計画を4月までに立てます。

 新規のkintone案件

新たに10本の受注・検収を目指します。
それによってサイボウズ社とのオフィシャルパートナー契約をさらに継続します。
あわせてkintone エバンジェリストとしても来期につなげる成果を示します。

 モバイルアプリ

MONACAを使った案件を一本受注・検収します。

 自治会・町内会・PTAなど地縁団体のIT化へ尽力する

昨年の冬になって成果が出始めました。
今年はさらに深くかかわっていきます。
年間で5団体の案件を納品したいと思っています。

 交流会への参加とそこでの受注率向上

昨年は技術系のイベントで生まれた交流からはほぼ受注がつながりました。
一方で他業種や経営者の交流会では全く受注につながりませんでした。
その原因もほぼ分かっているので、今年は他業種や経営者の交流会での受注を目指します

 そのほかのお客様案件

ここには詳しくは書きませんが、納期を守るよう最大限の努力を払います。

 技術者の雇用

3月までに4月以降の雇用を行うかを判断したいと思います。
昨年、サテライトオフィスを開設したことから、今年はパートナー企業との協業に向けてかなりの力を割こうと思っています。
なので、雇用については行わない可能性が高いです。

 kintone Café の実施

昨年は神奈川ではなくkintone Café 東京を二回主催しました。
今年もkintone Café 東京は多摩地区を拠点に開催しようと思っています。町田、府中あたりを念頭においています。
町田ではすでに候補をいくつか挙げていて、あとは実行するだけです。
kintone Café 神奈川は去年、準備を進めていましたが、とうとう実施できませんでした。
ですが、昨年、武蔵小杉、鎌倉で開催場所につながるご縁ができました。
人数は最低限でもよく、体裁は問いません。まずは実績を作ります。

 freee Open Guildの運営

今年から運営側で関わることになりました。
freee Open Guildは地方開催も含め、6回は行われると思います。
そのすべてに運営で関わることを目指します。
また、そこで生まれたご縁を生かし、freee案件を二本は納品にまでもっていきたいと考えています。

 英語の睡眠学習開始

昨年、早々に挫折してしまった英語学習に再チャレンジしようと思います。
まず、Devrel Conference Tokyoで英語漬けの一日を送る予定です。
そこでモチベーションを満たして勉強に振り向けようと思います。
海外のカンファレンスにいつ行くことになってもよいように。

 LinkedIn、Eightの活用

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

 AWSの資格試験の合格

まずはクラウドプラクティショナーとソリューションアーキテクトアソシエイトの合格を目指します。

 関西大学東京経済人倶楽部の参加率を増やす

昨年早々に加入したこちらの倶楽部ですが、イベント参加は1度にとどまりました。
こちらへの参加頻度を増やします。具体的には年間で3回。

 当抱負のアラート表示

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


2020年の抱負


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

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

自分を追い込むためにも、自分という器の容積を広げるためにも、目標は高く持ちたいと考えております。

1.法人化6年目にあたって
 あ)総括・・
 5年目の決算は、前年度を上回ることができそうです。弊社の認知度が上がってきていることが実感できました。

 い)kintoneを軸にする・・
 ようやくkintoneが弊社の売上の軸になってきました。年間売上の7割がkintone案件から生まれています。昨年はそれまでは手がけたことのなかった大手企業様からのご依頼も増え、金額でも社会の認知でもkintoneが案件として認められるようになりました。kintoneの大きな案件に上流工程から参画することも増えてきました。
 そのためには弊社代表がkintoneエバンジェリストである点は打ち出させていただこうと思います。引き続きエバンジェリストとしての発信が求められるでしょう。そしてkintone単体ではなく、kintoneと他の言語やソリューションの組み合わせで新たな価値をお客様に提供する。その心意気が大切です。
 新たな分野に飛び込むことを自重した昨年ですが、いくつかの開発言語の新たな習得にチャレンジしました。ソリューションについてもさらなる勉強が求められることはもちろんです。
 ノンコーディングだけであらゆる業務をこなすことができるようになるには、二、三年の時間がかかるでしょう。それまではコーディングスキルをベースに、使えるところはためらわずにどんどんノンコーディングツールを提案していきたいと思います。
 そうあり続けるには、ブログによる発信や登壇はもちろん、イベントの主宰などを通じた弊社および代表の認知の拡大が重要だと思っています。お呼ばれいただければ各地のセミナーにも顔を出したいと思います。

 う)体制の変革・・
 そのためには弊社にとっての弱点を克服しなければ。一つは個人事業主時代から続く財務の脆弱さ、もう一つは経営と作業を代表が兼任している現状です。
 財務の脆弱さは昨年、いろいろと施策を打ちました。それが実を結ぶまでは、まだまだ時間が必要です。そうしたことに煩われずに業務に邁進できるよう、重くみて進めていきたいと思います。
 昨年、サテライトオフィスを開設し、技術者と対面で教えられる場所は確保しました。昨年、数人の技術者を面談しましたが、残念ながら雇用にはつながりませんでした。具体的に3月までに雇用するかを決めたいと思います。

 え)外注パートナー・・
 外注パートナーは昨年に引き続き、限られた企業様と続けていくつもりです。数年前、むやみにパートナーを増やし、自由意思に任せた失敗は繰り返しません。
 サテライトオフィスをパートナー企業様と共有している環境をどう活用するか。どれだけの外注費を支払い、そのためにはお客様にはどれだけの売上が必要か。お客様と弊社、弊社内、そして弊社とパートナー。その間で工数をかけず、なおかつ確実に仕様情報を伝達する。
 クラウドサービスを活用し、飛び回る代表の私が技術者に対して要件やスキルをどうやって円滑に伝えるか。そのためのドキュメントツールやコミュニケーションツールは引き続き模索していかなければ。この工夫に時間を掛けるつもりです。

 お)自治会との関わり・・
 自治会やPTAなど非営利活動の団体様からのご要望は積極的にご協力したいと考えています。昨年末にもPTA様、自治会様からご相談をいただきました。そうした地域活動のお手伝いを行う上でとてもよいご縁をいただきました。
 今年も登壇による認知度拡大を図っていくつもりです。「自治会 IT」で検索すると代表がトップに登場する。そんなアドバンテージは得ようにも得られません。今のうちに自治会の業務は形にしたいと考えています。
 その結果が各地の訪問につながれば良いと思います。代表の個人的なライフワークである地方訪問と地方創生への何らかの貢献へと。

 か)事業計画・・
 もう一つやるべきこと。それは経営の軸がぶれないような事業計画の策定です。
 この三年で、弊社が目指すべき方向性がかなり定まってきました。それはこの先の日本が直面する大きな課題にも関わっています。具体的には地方創生、少子高齢化、一極集中の弊害です。その中でPTAや自治会などの地縁団体様のIT化が喫緊の課題であり、弊社にはそれができるノウハウが溜まってきています。これを軸に据えていこうと思っています。
 いよいよ2020年です。かねてから言っていた、2020年が過ぎればシステム案件は減っていくとの予測はおそらくエンタープライズ開発の現場で顕著に実現するでしょう。つまり技術者が大量に余るのです。それを見据えた計画が求められます。
 具体的には今年の売上額は、2019年度の1.25倍を目指します。事業計画は3月までに今年分を、4月までには5年後の計画が書かれたものを作りたいと思います。これは確実に履行するために、太字にしました。
 新規のkintone案件は10本受注することを目指します。そのためにはkintoneの案件で実績を作り、それをブログなどでアピールするしかないでしょう。ここ三年であちこちにまいた種が育っています。これらを実のある実績にすることが今年前半のミッションだと思っています。実績を作って行けば、自然と年末のkintone Advent Calendarや登壇の場でご披露できるネタはたまるはずなので。

 き)主催するイベント・・
 昨年は8回の登壇と2回の主宰イベントを行いました。多数の人を巻き込む発信力は、代表にまだまだ足りない課題だと思っています。引き続き、身に着けていきたいです。

2.話す技術、書く技術、システムの技術
 あ)話す技術、書く技術・・
 昨年に引き続き、この2つは精進しなければと思っています。去年、書くほうは量的には残念な結果に終わりました。書くための時間が取れない分を、音声認識でしゃべって補おうと思ったのですが。
 書くほうは、昨年、二人の著者の方から著書うけとりました。私も出版という形で私の人生の一部でも形に残したいと思っています。
 今年の読読ブログは100本アップすることを目標とします。また、技術Blogは去年の二倍の量を目指します。
 弊社代表が独立して法人を立ち上げるまでを描く「アクアビット航海記」も月2本の連載を行います。

 い)システムの技術・・
 システムの技術ですが、AWSの中身についてさらに勉強を行うつもりです。2つは資格を取りたいと思います。
 また、kintoneのエキスパート試験があらたに設置されると聞いています。これも受かりたいですね。苦労するでしょうが。

 う)弊社サイトの刷新・・
 それにあたって弊社サイトのhttps化は必須です。もう、これは一刻の猶予もありません。1月にhttps化を行う予定です。

 え)リモートワーク・・
 一昨年知り合った弁護士の方は海外をあちこち訪問しながら仕事をこなし、成果を上げています。弁護士の業務と同じレベルを開発で行うのは難しい。それは分かっていますが、少しでも近づきたいと思っています。
 昨年はワーケーションも試し、実践できるだけの目途がたちました。
 今年は各地でワーケーションを実施し、個人としての思いと仕事の両立をさらに図っていきたいと思います。

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

4.体力と魅力増強
 あ)滝と山・・
 痛めた腰は、だいぶ良くなってきました。今年も山や滝めぐりはしたいと思っています。日本の滝百選に選ばれた滝は8カ所を目指します。具体的には、去年この抱負で挙げた滝はどこも行けなかったので引き続き。ニッカ宮城峡蒸留所に行きたいので、秋保大滝と三階の滝を。岡山蒸留所に行きたいので、神庭の滝を。尾瀬に行って三条の滝を。維新152年の山口を旅したいので寂地峡五竜の滝を。阿波の土柱をみに行きたいので雨乞の滝と大釜の滝を。下北山村に再訪したいので中の滝や双門の滝、七ツ釜滝を。それと娘たちから家族で長野のカムループスさんに伺いたいとのリクエストをもらっており、近くの惣滝を。他はどこか一カ所、九州の滝には行きたいですね。それと、昨年は至仏山を登りました。今年もどこか一峰は登りたいです。燧ケ岳とかいいですね。

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

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

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


ワーキングツリーにはkintoneとboxをお飾り!


kintone Advent Calendar 2019の24日目の記事です。

  Topへ↓

ん?この著者、この間もAdvent Calendarでみたで? はい。二度目の登場です。

kintoneは優れたツールですが完全ではない?
なーんてディスられても動じず、欠点を正直に認めるのもkintoneの憎めないところ。そう思ってやまない著者です。

kintoneの欠点のいくつかはすぐに挙げられます。
例えばブラウザーベースで動いているので、ファイルアップロードの作業が面倒、とか。
添付ファイルフィールドに画像データを放り込みまくると、一ユーザーあたり5GBの容量の制限が足かせになってくる、とか。

そんな限界を解消するためのささやかなクリスマスプレゼントを皆様にお届けしたいと思います。
なに、ちょっとした贈り物です。クリスマスツリーによくぶら下がっている箱のような。
箱・・・つまりboxです。
今回の記事では私の2019年の失敗事例も公開しているので、ひょっとしたら皆さまのご参考になるかもしれません。

box for kintoneのご紹介

  Topへ↑

世の中にオンラインストレージ製品はたくさんありますよね。その中でもboxが存在感を出しているのはご存じでしょうか。

kintoneとboxの連携はbox for kintoneというプラグインとして公開されています。
それを使えばブラウザー上でアップロードなどせず、ドラッグ&ドロップでブラウザー上から操作できちゃうのです。

クライアントツールのbox Driveをインストールすれば、Windowsのエクスプローラと同じ操作でbox上にファイルをアップロードできてしまう。なんて優れもの。

boxを使うと無尽蔵(契約プランによる)を誇る容量にファイルを置きまくり。
それをkintoneの画面上からに自由に呼び出せる。素晴らしい!
上に書いたkintoneの弱点を周囲のツールが補ってくれるいい例です。
本稿もそうしたkintoneを補ってくれる一つの例としてお役に立てれば幸いです。お日柄もよいので。

box for kintoneの使い方は、Cybozu developer networkにも出ています。
https://developer.cybozu.io/hc/ja/articles/205070124-Box-for-kintone その記事に従えば、簡単にbox for kintoneを導入できるはずです。

ところが、この記事で書かれているのは、一つのレコードに一つのフォルダーを対応させるところまで。
kintoneでちょっとしたシステムを作ろうとすれば複数アプリにまたがった構成が必要です。それに応じてboxのフォルダー構成も複数の階層にまたがってしまいます。

合同会社アクアビットダム設計なる会社

  Topへ↑

たとえば、大阪と東京に支店がある合同会社アクアビットダム設計があったとします。
この会社はダムを独自の技術で製造し、お客様にお納めしている設定です。

受注システムをkintoneで構築するにあたり、
大阪支店[組織]の
長井何某[個人]が担当する
担当案件[案件]の
施行状況[施工]と
湛水状況[湛水]を管理すると仮にしましょう(工程はしょりすぎ。ちなみに最後の工程は水を貯める工程です)。

他に顧客マスタがあるでしょうがここは割愛。また、[組織]と[個人]はアプリではなく、kintoneのアカウントを使用する想定です。
この場合3アプリですね。

ここでご注文からの流れをkintoneで管理したとしましょう。
各アプリの連動はkintoneのアクション機能を使ったとします。

ダム完成までにはさまざまな状況を報告していかねばなりません。するとダムの進捗に合わせて写真が大量に溜まっていきます。
kintoneの添付ファイルフィールドにファイルをアップしていると、すぐに容量が危うくなりかねません。
ここでboxの出番です。

ここでboxで写真を管理しようとした場合、box内のフォルダー構成はこのようになると思います。

さて、先ほどご紹介したbox for kintoneを思い出してみましょう。
プラグイン設定画面にルートフォルダーのIDを設定していましたね。

つまり、アプリ自体にルートフォルダーのみを作る仕様。
それって、どのレコードであろうと共通で1つのフォルダーだけ、、、
いやいや多層boxと多層アプリでは対応できないのはちょっと、、、
結論! box for kintoneだとちょっとキツイかも。

合同会社アクアビットダム設計にboxを

  Topへ↑

ということで、本稿では多段階にわたるboxの連動例をお伝えしたいと思います。また、その時にしでかしてしまった失敗と、そのリカバリ例もお伝えしたいと思います。

まず、話を簡単にするため、合同会社アクアビットダム設計としてのルートフォルダーを設定しておきましょう。

さらに、支店ごとにフォルダーを設定し、支店の配下に担当ごとのフォルダーも生成しておくと話が早いですね。

実際のboxのフォルダー構成はこんな感じ。

ここでルートフォルダーのフォルダーIDを取得しておきます。boxの画面から取れます。

その状態で、案件アプリに新規レコードを登録します。
案件アプリの項目には案件の主管支店と、案件の主担当を指定するフィールドも忘れずに。もちろん必須項目として。

なぜ必須項目にするのでしょう。
その理由は、レコードが保存成功後、案件フォルダーを作る際にどこのフォルダーの配下に作成するか決めなければならないためです。

boxのフォルダー生成APIについて

  Topへ↑

ここでboxの仕様を押さえておきましょうか。
サービスの仕様を確認するには、APIから逆引きしたほうが理解しやすい。いわゆる技術者あるあるです。
boxのAPIはこちらのサイトをご覧になると良いでしょう。
https://ja.developer.box.com ・・developerサイトトップ
https://ja.developer.box.com/reference ・・APIレファレンス

boxのフォルダー作成の項を読むと、親であるフォルダーのIDがパラメーターとして必須のようです。
編集時には親フォルダーのIDは必須ではなくなりますが、もしフォルダーの場所を移動する際は親フォルダーのIDは指定しなければなりません。

案件フォルダーを作る際は、親となる担当者フォルダーのIDを把握しておかねばなりません。
そしてその上の支店フォルダーも。

つまり、案件レコードの保存のタイミングで行うべきことは、まず、そのレコードの支店フィールドの値に等しい支店フォルダーを検索することです。
その際、基準となるのはルートフォルダーです。

ルートフォルダーの下にある支店フォルダーを検索し、そのIDを特定します。
間髪入れずに支店フォルダーの配下にある担当者フォルダーを検索します。
これは同一担当者が複数支店にフォルダーを持っている場合など、運用も考慮していますが、支店フォルダーのIDを内部で保持できるのであれば、いきなり担当者フォルダーから検索してもよいです。
重要なのは案件フォルダーを作成するにはその親フォルダーのIDを事前に必ず保持しておくことです。

先ほど、kintoneの案件アプリの支店と担当者の両フィールドは必須でなければならないとしたのには、そういう理由があったのです。
これら二つのフィールドの値がないと、案件を保存する際に生成されるべき案件フォルダーの保存先が迷子になってしまうので。

JavaScriptで実装してみた

  Topへ↑

続いてはいよいよboxの操作を行います。

その前に本稿ではboxの権限周りには踏み込まないことを言っておきます。
OAuthについては、もともとbox  for  kintoneで用意されていたclient IDを使用します。本当はbox内でアプリを作成し、そのアプリ内で設定した権限を認証しなければならないのですが。
box for kintoneに甘えてしまいましょう。

ついでにpromise処理が考慮されたAPI実行部分もbox for kintoneの処理を流用させていただきましょう。

処理の大まかな順序としては以下の通りです。
ただ、のちに述べますが、このコードは動きません。なのでコードは画像として参考程度に載せます。

まず、イベントが動くタイミングはapp.record.create.submit.successです。新規作成処理成功後ですね。

処理の都合上、この中で別のアプリに更新を行い、その結果が成功した場合にboxフォルダー生成処理を呼び出しています。

boxフォルダー生成処理では、まずルートフォルダーから支店フォルダーを検索します。
続いて支店フォルダーから担当者フォルダーを検索します。

ここでboxの検索の仕様が立ちふさがってきます。
boxの検索仕様として、対象の種類、生成時刻、オーナーIDや親フォルダーIDなどは指定できるのですが、肝心の文字列を完全一致で検索できないのです。queryというパラメータがあるにもかかわらず、そこに指定した文字列は曖昧検索として処理されてしまうのです。
APIレファレンス

つまり、親フォルダーに属する検索対象が複数ありうる場合、検索文字列に工夫が必要です。例えば姓名の間にスペースが入る場合など。
「長井 権兵衛」と「長井 主水」が対象のフォルダー配下にあって「長井 権兵衛」を検索したい場合、queryに「長井 権兵衛」を設定してもマッチしません。
ではどうやればよいか。
スペースの前後の文字列で検索するのです。
この場合、「長井」または「権兵衛」で検索します。すると前者は二件がヒットし、後者は一件がヒットします。
その結果を再度ループして回し、一件ごとにname属性の値が検索文字列に一致するかを確認する。
そのような面倒な処理がboxの検索には必要です。

このコードも実際は使っていませんが、軽く提示します。

これで、担当者フォルダーIDまで求められました。

boxのフォルダー生成と検索にまつわる問題

  Topへ↑

続いてはフォルダーの生成に移りましょう!
APIレファレンス

生成にあたっては、名前と親フォルダーのIDを指定するだけです。

これで、案件レコードが保存されたら案件フォルダーを作成するところまでができました。

ここで当初想定していたboxの構成を見てみましょう。
案件フォルダーの配下に「提案状況」「施工状況」「湛水状況」の三フォルダーがあります。
このフォルダーの生成にも実は厄介な問題が潜んでいます。

例えば、案件のレコードが保存されました。そして案件フォルダーが生成されました。
そしたら、アクション機能によって施工状況アプリにレコードをコピーし、施工状況アプリでもレコードが保存された瞬間、案件レコードの時と同じように施工状況フォルダーを生成すればええんちゃうの?と思ったでしょう。

ところが、フォルダーを生成するには親のフォルダーの指定が必須です。
親フォルダー、つまり案件フォルダーをフォルダー生成処理の直前で検索してフォルダーIDを取得しなければなりません。
ところがこの親フォルダーの検索取得にはひとつハードルが控えています。そのハードルとは、コンテンツが生成されてから検索可能となるまでに時間がかかる、というものです。
boxはなんらかのコンテンツが作成されてから、それが検索可能となるまでにbox内部でindexを構築しており、それに時間が掛かるのです。
boxの APIレファレンスには以下のように書かれています。

つまり、案件フォルダーの生成からすぐ、施工状況アプリのレコードを保存した場合、親となるべきフォルダーが検索できないため、親フォルダーの指定ができないのです。

boxを多層構造でkintoneと連動させる場合、この仕様上の制限は現状では避けられません。

この制限を回避するため、発想を切り替えました。
つまり、案件フォルダーが生成された後、同時に配下のフォルダーも作ってしまうのです。

box APIでは、フォルダー生成が成功した時点で返り値として生成されたフォルダーのIDが得られます。このIDを使えば配下のフォルダーも即時に生成できます。

このコードも実際は使っていませんが、軽く提示します。

この下の処理ではさらに生成した案件フォルダーのURLを取得し、そのURLやフォルダーIDをkintoneの2アプリに更新して設定しています。

ここまででkintoneのapp.record.create.submit.successイベントを見てきました。その結果、実装ができそうです。
テストでもフォルダーが意図通りに生成されました。開発用のPCでも、お客様のご担当者様のPCでも。

バグ大魔王降臨!

  Topへ↑

ところが! やったと思った安心のかげに潜むのが落とし穴。バグが出てしまったのです。
テストではうまく動いていたのに、いざ本番になるとうまくいかない。なんということでしょう!

実は、その根本的な原因は今もなお究明できていません。
事象としてはboxにAPIリクエストを投げた後、何も戻ってこないのにプログラムが終了してしまいます。httpレスポンスすら帰ってこずに。
それも終了する場所がまちまちなのが始末が悪い。複雑なPromiseの構造に加え、referredを混在させたことにも問題があったのかもしれません。
この不具合がやっかいなのは、boxからのレスポンスを待つ間、app.record.create.submit.successの結果が完了できないことにあります。その間、ブラウザーは固まってしまい、kintoneを利用されている皆様にはただ困惑が。

そして、この不具合の原因がブラウザーにあるのか、box側にあるのか、kintone内部にあるのか、それともPCのスペックにあるのか。はたまたネットワーク環境によるものなのか。いまだに分っていません。
ただ、ブラウザー上でレスポンスを待つ運用はまずい、という悔いだけは骨身に沁みました。
私はその原因を追究するよりもお客様の運用を円滑に進めることを優先しました。
その決断として、ブラウザーに依存する実装を止めました。

AWSへ処理を移管

  Topへ↑

では、どうすればよいか。

幸いなことにkintoneにはWebhookという機能が備わっています。Webhookには、レコード保存時にWebhookのリクエストを受け付けてくれるWebhook URLを設定できます。

私がWebhook URLとして設定したのはAWSのAPI Gatewayで設定したURLでした。
API Gatewayについての説明は割愛しますが、kintoneから受け取ったWebhookのリクエストに含まれるJSONを読み取り、それを後続の処理に渡すことができます。
後続の処理にはAWS Lambdaを選びましたので、同じAWS上で処理が連携できます。

AWS LambdaではNode.jsを使い、ほぼkintoneのkintone.app.create.submit.successで実装したのに近いコーディングを行いました。
box Node SDKがAWS Lambdaから簡単に使用できるので、それを使えば似たような実装ができるのです。
ただし、boxのアプリは一から作る必要があります。設定もあれこれ行う必要が生じました。
最初、こちらのブログの力も借りました。ありがとうございました。
Lambda関数のコードを以下に掲示します。なお、このコードは動いているものを基にいろいろといじっているので参考になると思います。

/**
 * This sample demonstrates how to call Box APIs from a Lambda function using the Box Node SDK.
 *
 * For step-by-step instructions on how to create and authorize a Box application,
 * see https://github.com/box/samples/tree/master/box-node-lambda-sample.
 */
const BoxSDK = require('box-node-sdk');                                                // Node.jsのbox-node-sdkモジュールを呼び出す
const request = require('request');                                                    // Node.jsのrequestモジュールを呼び出す
const boxConfig = JSON.parse(process.env.BOX_CONFIG);                                  // AWS Lambdaの環境変数のBOX_CONFIGの値をJSONで扱えるように

boxConfig.boxAppSettings.appAuth.keyID = boxConfig.boxAppSettings.appAuth.publicKeyID; // 9行目で取り出したkeyIDにpublicKeyIDを代入

const sdk = new BoxSDK(boxConfig.boxAppSettings);                                      // 9行目で取り出したboxAppSettingsをsdkに代入

/**
 * Create a service account client that performs actions in the context of the specified
 * enterprise.  The app has a unique service account in each enterprise that authorizes the app.
 * The service account contains any app-specific content for that enterprise.
 * Depending on the scopes selected, it can also create and manage app users or managed users
 * in that enterprise.
 *
 * The client will automatically create and refresh the service account access token, as needed.
 */
const client = sdk.getAppAuthClient('enterprise', boxConfig.enterpriseID);             // boxアプリが適用できるアカウントのグローバル設定を管理

var DOMAIN = '*********.cybozu.com'; //kintone環境のドメイン                            // *****はご使用のkintoneのサブドメインを
var APP_ID_1287 = 1287;   //案件管理アプリのアプリID
var BASE_URL = "https://" + DOMAIN + '/k/v1/';
var APITOKEN_1287 =  "kintoonkaramottekitatookunwokokoniiretene";                      // kintoneの案件アプリのAPIトークン
var headers_1287 = {'X-Cybozu-API-Token': APITOKEN_1287};                              // リクエストで使用するヘッダ
var FolderId;
var updaterecordid_1287;

exports.handler = (event, context, callback) => {                                      // eventはkintoneのWebhookからAPI Gatewayを経由したレコード情報
                                                                                       // contextはLambda関数に関する情報
    const API_BASE_PATH = 'https://api.box.com/2.0';                                   // box Node SDKの文法に準拠

    // targetnameはコンテンツの文字列
    // typeはコンテンツの対象。本稿の場合はfolder
    // content_typesは検索対象とするプロパティ。本稿の場合はname
    // limitは検索結果として戻す件数。
    // idsは親フォルダーのフォルダーID
    // methodは本稿では全てGETなので使用していない
    // dataは本稿の場合検索対象(支店,担当者,案件No)のうち、担当者の場合["担当名"]で渡ってくる。
    function searchFolder(targetname, type, content_types, limit, ids, method, data, success, error) {  //157,159,161行目から呼び出されて検索処理を実施
        if (data !== undefined) {                                 // dataが指定されている場合
            if (data[0] === "担当名") {                            // dataの配列の最初の要素が"担当名"の場合
                targetname = targetname.split(' ')[0];           // 受け取るtargetnameは「長井 権兵衛」の様に全角スペースで区切られた姓名なので姓を取得
            }
        }

        return new Promise(function (resolve, reject) {           // Promiseを設定
            client.search.query(                                  // 24行目でclientとして承認されたbox Node SDKのsearchクラスのquery関数を呼び出し
                "\"" + targetname + "\"",                         // 最初のパラメーターは検索対象文字列。文字列なのでエスケープした""で囲む。でも曖昧検索
                {                                                 
                    fields: 'id,name,modified_at,extension,permissions,collections',  //検索結果として返すコンテンツのプロパティ
                    type: type,                                                       //folder
                    content_types: content_types,                                     //検索対象はnameプロパティ
                    limit: limit,                                                     //結果として返す件数
                    ancestor_folder_ids: ids,                                         //親フォルダーID 
                    offset: 0                                                         //オフセットしないので0
                })
                .then(function(results){                                              //結果が取得されたのでこのPromiseチェーンへ
                    if (data !== undefined) {                                         //dataが指定されている場合
                        if (data[0] === "担当名") {                                   //dataの配列の最初の要素が"担当名"の場合
                            for (var i = 0; i < results.entries.length; i++) {        //戻り値の件数分(limitで指定した件数分)
                                if (results.entries[i].name === data[1]) {            //戻り値のnameプロパティがdataの2番目の要素(担当名)か
                                    resolve(results.entries[i].id);                   //Promiseは完了したと戻り値のidプロパティ(フォルダーID)を返す
                                }
                            }
                        }
                    } else {
                        resolve(results.entries[0].id);                               //Promiseは完了したと戻り値のidプロパティ(フォルダーID)を返す
                    }
                })
                .catch(function(error){ // エラーの場合
                    reject(error);
                });
        });
    }

    // createParamは生成フォルダー名と親フォルダーIDが含まれたJSONオブジェクト
    function postFolder(createParam) {                     //176行目から呼び出されてフォルダー生成処理を実施
        return new Promise(function (resolve, reject) {    // Promiseを設定
            client.folders.create(createParam.parent.id, createParam.name)  //24行目でclientとして承認されたbox Node SDKのfolderクラスのcreate関数を呼出
                                                                            //1つ目は親フォルダーID、2つ目は生成するフォルダーの名称 
                .then(function(results){                                    //85行目の処理が成功したのでこのPromiseチェーンへ
                    var ankenid = results.id;                               //生成したフォルダーIDを以下のforeach内で使うためにankenidに代入 
                    var subfolders = [                                      //生成した案件フォルダーの配下に作成する三つのフォルダー名を配列にしています
                        "提案資料",
                        "施工状況",
                        "湛水状況"
                    ];

                    var promiseset = [];                                    //三つのフォルダーの生成が終わるまで待つPromiseを三つ作るので配列を設定
                    subfolders.forEach(function(val,index,ar){              //89行目で生成した配列の各要素をループします
                        promiseset[index] = new Promise( function( resolve, reject ) {  //95行目で生成した配列にPromiseを設定します。
                            client.folders.create(ankenid, val)             //24行目でclientとして承認されたbox Node SDKのfolderクラスのcreate関数を呼出 
                                                                            //1つ目は親フォルダーID(案件フォルダー)、2つ目は生成するサブフォルダーの名称
                                .then(function(results){                    //98行目の処理が成功したのでこのPromiseチェーンへ
                                    resolve(results.id);                    //97行目のPromiseは完了したと戻り値のidプロパティ(フォルダーID)を返す
                                }).catch(function(error){                   //98行目の処理が失敗したのでこのPromiseチェーンへ
                                    reject(error);                          //97行目のPromiseは失敗したとエラーオブジェクトを返す
                                });
                        });
                    });
                    Promise.all( promiseset )                               //97行目で設定した三つのPromiseが全て完了したらここに来る
                        .then( function ( message ) {
                        resolve(ankenid);                                   //84行目のPromiseは完了したと戻り値のidプロパティ(フォルダーID)を返す
                    })
                        .catch( function ( reason ) {                       //97行目で設定した三つのPromiseのどれかが失敗したらここに来る
                            console.log( reason ) ; // "失敗!!"
                        reject(false);                                      //84行目のPromiseは失敗したとエラーオブジェクトを返す
                    });
                })
                .catch(function(error){                                     //85行目の処理は失敗したらここに来る
                    reject(error);                                          //84行目のPromiseは失敗したとエラーオブジェクトを返す
                });
        });
    }

    // boxフォルダーIDは更新対象となるフォルダーID
    // createParamは更新フォルダー名と親フォルダーIDが含まれたJSONオブジェクト
    function putFolder(boxフォルダーID, updateParam) {             //165行目から呼び出されてフォルダー更新処理を実施
        return new Promise(function (resolve, reject) {         // Promiseを設定
            client.folders.update(boxフォルダーID, updateParam)    //24行目でclientとして承認されたbox Node SDKのfolderクラスのupdate関数を呼出
                                                                //1つ目は対象となるフォルダーID、2つ目は更新するフォルダー情報の含まれたJSONオブジェクト 
                .then(function(results){                        //126行目の処理が成功したのでこのPromiseチェーンへ
                    resolve(results.id);                        //125行目のPromiseは完了したと戻り値のidプロパティ(フォルダーID)を返す
                })
                .catch(function(error){                         //126行目の処理が失敗したのでこのPromiseチェーンへ
                    reject(error);                              //125行目のPromiseは失敗したとエラーオブジェクトを返す
                });
        });
    }

    function getFolderURL(createdid) {                          //178行目から呼び出されてフォルダーの共有処理を実施
        return new Promise(function (resolve, reject) {         // Promiseを設定
            client.folders.update(createdid, {shared_link: client.accessLevels.OPEN}) 
                                                                //24行目でclientとして承認されたbox Node SDKのfolderクラスのupdate関数を呼出
                                                                //1つ目は対象となるフォルダーID、2つ目は更新するフォルダーのプロパティ(共有設定)
                .then(function(results){                        //139行目の処理が成功したのでこのPromiseチェーンへ
                    resolve(results.shared_link.url);           //138行目のPromiseは完了したと戻り値の共有URLプロパティ(リンクURL)を返す
                })
                .catch(function(error){                         //139行目の処理が失敗したのでこのPromiseチェーンへ
                    reject(error);                              //138行目のPromiseは失敗したとエラーオブジェクトを返す
                });
        });
    }
    function createBoxFolder(支店, 担当者, 案件No, boxフォルダーID) {  //212行目から呼び出されてフォルダーの共有処理を実施
        return new Promise(function (resolve,reject) {             // Promiseを設定
            var rootfolder = "12345678910";                        //boxのフォルダー制御のルートとなるフォルダーのフォルダーIDを静的に代入
            var ownerbranchfolder;                                 //支店フォルダーのフォルダーID
            var personinchargefolder;                              //担当者フォルダーのフォルダーID
            var createParam;                                       //searchFolder関数へはダミーオブジェクト。putfolderとpostfolderへはJSONオブジェクト

            searchFolder(支店, "folder", "name", 10, rootfolder, 'GET', createParam).then(function (branchfolderid) {  //45行目へ
                ownerbranchfolder = branchfolderid;                           //searchFolderからの返り値を上位スコープのownerbranchfolderへ代入
                searchFolder(担当者, "folder", "name", 10, ownerbranchfolder, 'GET', ["担当名",担当者]).then(function (personfolderid) {  //45行目へ
                    personinchargefolder = personfolderid;                    //searchFolderからの返り値を上位スコープのpersoninchargefolderへ代入
                    searchFolder(案件No, "folder", "name", 10, personinchargefolder, 'GET', createParam).then(function (projectfolderid) {  //45行目へ
                        var name = "案件No" + " " + 案件No;                    //生成/更新する案件フォルダーの名称を設定する
                        createParam = {name: name, parent: {id: personinchargefolder}};  //案件フォルダーの設定情報をJSONオブジェクトに組み立てる
                        if (projectfolderid.length > 0) {                     //161行目で案件フォルダーが存在した場合(フォルダー情報更新)
                            putFolder(projectfolderid, createParam).then(function (updatedid) {  //124行目へ
                                FolderId = updatedid;                         //161行目の処理で得た更新したフォルダーIDをスコープ外の168行で使うため
                                getFolderURL(updatedid).then(function (updatedurl) {             //137行目へ
                                    resolve(FolderId+"****"+updatedurl);      //151行目のPromise完了をフォルダーIDと共有URLプロパティ(リンクURL)で返す
                                }).catch(function(error){                     //167行目の処理が失敗したのでこのPromiseチェーンへ
                                    reject(error);                            //151行目のPromiseは失敗したとエラーオブジェクトを返す
                                });
                            }).catch(function(error){                         //165行目の処理が失敗したのでこのPromiseチェーンへ
                                reject(error);                                //151行目のPromiseは失敗したとエラーオブジェクトを返す
                            });
                        } else {
                            postFolder(createParam).then(function (createdid) {       //83行目へ
                                FolderId = createdid;                                 //生成したフォルダーIDを以下の179行目で使うためにFolderIdに代入
                                getFolderURL(createdid).then(function (createdurl) {  //137行目へ
                                    resolve(FolderId+"****"+createdurl);      //151行目のPromise完了をフォルダーIDと共有URLプロパティ(リンクURL)で返す
                                }).catch(function(error){                             //178行目の処理が失敗したのでこのPromiseチェーンへ
                                    reject(error);                                    //151行目のPromiseは失敗したとエラーオブジェクトを返す
                                });
                            }, function(res) {                                        //176行目のフォルダー生成処理でrejectレスポンスが返った場合
                                if (res.status && res.status === 409) {               //176行目のフォルダー生成処理でrejectレスポンスが409返った場合
                                    if (res.context_info                              //176行目のフォルダー生成処理でrejectレスポンスが競合を示した場合
                                        && res.context_info.conflicts
                                        && res.context_info.conflicts.length > 0) {
                                        return;                                       //150行目のcreateBoxFolder関数を終える
                                    }
                                }
                            }).catch(function(error){                                 //176行目のフォルダー生成処理でエラーが帰った場合
                                reject(error);                                        //151行目のPromiseは失敗したとエラーオブジェクトを返す
                            });
                        }
                    }).catch(function (error) {                                       //161行目のフォルダー検索処理でエラーが帰った場合
                        // 非同期処理失敗。呼ばれない
                        console.log(error);
                    });
                }).catch(function (error) {                                           //159行目のフォルダー検索処理でエラーが帰った場合
                    // 非同期処理失敗。呼ばれない
                    console.log(error);
                });
            }).catch(function (error) {                                               //157行目のフォルダー検索処理でエラーが帰った場合
                // 非同期処理失敗。呼ばれない
                console.log(error);
            });
        });
    }

    var recordjson = JSON.parse(event.body);                                 //34行目で受け取ったkintoneのWebhookのレコード情報をJSON形式で扱えるように
    updaterecordid_1287 = recordjson.record.レコード番号.value;               //210行目のレコードデータの「レコード番号」フィールドの値を代入
    createBoxFolder(recordjson.record.支店.value[0].code,                    //150行目へ
                    recordjson.record.担当者.value, 
                    recordjson.record.案件No.value, 
                    recordjson.record.boxフォルダーID.value).then(function(idurl) {
        if (idurl) {                               //212行目のcreateBoxFolderの戻り値(168、179行目で値設定)
            var targetrecordids = [updaterecordid_1287+"**"+APP_ID_1287];   //211行目で設定したレコード番号と27行目で設定したアプリID
            var kintonepromiseset = [];                                     //kintoneのレコードアップデートが終わるまで待つPromiseの配列を設定
            targetrecordids.forEach(function(val,index,ar){                 //217行目で生成した配列の各要素(本稿では1つ)をループします
                kintonepromiseset[index] = new Promise( function( resolve, reject ) {  //218行目で生成した配列にPromiseを設定します。
                    var body_post = {                                                  //kintoneの既存案件アプリを更新するレコードを組み立てます。
                        app: val.split("**")[1],                                       //217行目で設定した配列の**で区切られた右側(アプリID)
                        id: val.split("**")[0],                                        //217行目で設定した配列の**で区切られた左側(レコード番号)
                        record: {
                            boxフォルダーID: {
                                value: idurl.split("****")[0]                       //212行目のcreateBoxFolderの戻り値の****で区切られた左のフォルダーID
                            },
                            表示: {
                                value: idurl.split("****")[1].replace("*******.box.com","app.box.com")
                                         //212行目のcreateBoxFolderの戻り値の****で区切られた右のURL(契約のboxのサブドメインをapp.box.comに置換の必要あり)
                            }
                        }
                    };
                    var options_getsalesamount = {                            //リクエストのbody部分を組み立てます。
                        url: BASE_URL + 'record.json',                        //28行目で設定したURLのルートと一行レコードの更新なのでrecord.jsonを連結
                        method: 'PUT',                                        //更新なのでPUT
                        headers: headers_1287,                                //30行目で設定したAPIトークン
                        'Content-Type': 'application/json',                   //リクエストのボディ部分のタイプ
                        json: body_post                                       //221行目で設定したボディ部分
                    }
                    //レコードを取得
                    request(options_getsalesamount, function (error, response, body) {    //Node.jsのrequestモジュールで234行のリクエストを送信
                        if (error) {                                                      //242行目の値がerrorだったら
                            console.log('Error: ' + error.message);
                            reject();                                                     //220行目のPromiseは失敗したとエラーオブジェクトを返す
                        }
                        console.log("kintone recordput:succcess"+val);
                        resolve();                                                        //220行目のPromise完了を返す
                    });
                });
            });
            Promise.all( kintonepromiseset )                                              //220行目で設定したPromiseが全て完了したらここに来る(本稿は1つ)
                .then( function ( message ) {                                             //252行目の処理が成功したのでこのPromiseチェーンへ
                    context.done(null, {text: "kintone POST and Box Folder Create success!"});  //Lambdaの処理結果をログとして残す
            })
                .catch( function ( reason ) {
                    context.done(null, {text: "Box Folder Create failed!"});              //Lambdaの処理結果としてエラーログ
                return;
            });
        } else {
            context.done(null, {text: "Box Folder Create failed!"});                      //Lambdaの処理結果としてエラーログ
        }
    }, function(res) {                                                                    //212行目の返り値がrejectで戻ってきた場合
        context.done(null, {text: "Box Folder Create failed!"});                          //Lambdaの処理結果としてエラーログ
        return false;                                                                     //212行目の結果としてfalseを返す
    });
};

 

なんとか実装

  Topへ↑

いずれにせよ、私が2019年に出した唯一の大きなバグがこれでした。
結局、バグが出てから実運用にこぎつけるまでにさらに二カ月ほどの時間をいただきました。お客様にも多大なご迷惑をおかけしてしまいました。

これが実装できたことで、案件アプリにレコードを登録した時点で、Webhookが発動し、AWS API GatewayからAWS Lambdaを介してboxへのフォルダー生成と、レコードに対応するboxのURLとフォルダー番号をkintoneの該当レコードに登録することができました。

kintoneの画面上にboxのフォルダーを出す部分はbox for kintoneの内部にも書かれている通りです。
実際それを使わせていただいています。ありがとうございます。
以下にコードを載せていますが、疲れてきたのでコード内のコメントは割愛します。ごめんなさい。

(function() {
    'use strict';

    var BOX_CLIENT_ID = 'wkgp4k64whsha8mwvg7k5k63cim82mmv';   //sample_plugin_default
    // localStorage
    var LOCAL_STORAGE_PREFIX = 'kintone.plugin.' + BOX_CLIENT_ID;
    var LOCAL_STORAGE_JUDGED_ALLOW_ACCESS = LOCAL_STORAGE_PREFIX + '.judgedAllowAccess';

    var config = [];

    var BOX_EMBED_WIDTH = 840;
    var BOX_EMBED_HEIGHT = 420;

    var getUrl = function(path) {
        var matchedGuestSpacePath = location.pathname.match(/^\/k\/(guest\/\d+\/)/);
        var guestSpacePath = '';
        if (matchedGuestSpacePath !== null && matchedGuestSpacePath.length === 2) {
            guestSpacePath = matchedGuestSpacePath[1]; // "guest//"
        }
        var apiPath = '/k/' + guestSpacePath + path;
        return apiPath;
    };

    var boxApi = {
        clientInfo: {'provider': 'box', 'client': BOX_CLIENT_ID},

        getAccessToken: function() {
            // add a hash parameter for distinguishing OAuth redirect
            var delimiter = (location.hash.indexOf('#') === 0) ? '&' : '#';
            location.hash += delimiter + BOX_CLIENT_ID + '.oauth_redirect=true';
            kintone.oauth.redirectToAuthenticate(this.clientInfo, location.href);
        },
        hasAccessToken: function() {
            return kintone.oauth.hasAccessToken(boxApi.clientInfo);
        }
    };

    var validateConfig = function(record) {
        config['folderId'] = '0';//Box親フォルダーID
        config['keyFld'] = '顧客名';//kintoneキーフィールド
        config['boxUrl'] = '表示';//Box共有リンクの格納先
        config['boxFolderId'] = "boxフォルダーID";
        config['access'] = 'Open';//Box共有リンクのアクセス権[Collaborator/Company/Open]
        config['prohibitToDownload'] = 'false';//コラボレータにのみダウンロードを許可する

        if (!config) {return false; }
        return true;
    };

    var decorateBoxLinkField = function(boxUrl) {

        var boxLinkPattern = /^https:\/\/([a-zA-Z0-9]+).box.(com|net)(\/s\/[a-z0-9]+)$/;
        var match = boxUrl.match(boxLinkPattern);
        if (!match) {
            return;
        }
        var iframeSrc =
            'https://app.box.com/embed_widget/000000000000' +
            match[3] +
            '?theme=gray' +
            '&show_parent_path=no' +
            '&show_item_feed_actions=no' +
            '&partner_id=233';

        var elEmbed = kintone.app.record.getFieldElement(config.boxUrl);
        if (elEmbed === null) {return; }
        $(elEmbed).empty();

        var width = BOX_EMBED_WIDTH;
        var height = BOX_EMBED_HEIGHT;

        $(elEmbed).parent().css({
            'width': (width + 100) + 'px',
            'height': 'auto',
            'background-color': 'rgba( 255, 255, 255, 0 )'
        });
        var embedIframe = $('', {
            src: iframeSrc,
            width: width,
            height: height,
            frameborder: '0',
            allowfullscreen: 'true',
            allowscriptaccess: 'always'
        });
        $(elEmbed).append(embedIframe);
    };

    var judgedAllowAccessFlag = {
        isSet: function() {
            return (localStorage.getItem(LOCAL_STORAGE_JUDGED_ALLOW_ACCESS) !== null);
        },

        set: function() {
            localStorage.setItem(LOCAL_STORAGE_JUDGED_ALLOW_ACCESS, 'true');
        },

        remove: function() {
            localStorage.removeItem(LOCAL_STORAGE_JUDGED_ALLOW_ACCESS);
        }
    };

    kintone.events.on('app.record.detail.show', function(e) {
        if (validateConfig(e.record)) {
            var boxUrl = e.record[config.boxUrl].value;
            if (!e.record[config.boxUrl].value) {

                var elEmbed = kintone.app.record.getFieldElement(config.boxUrl);
                if (elEmbed === null) {return null; }
                $(elEmbed).empty();

            } else {
                decorateBoxLinkField(boxUrl);
            }
        }

        return e;
    });

    var checkAccessToken = function() {
        var oauth_redirect_param = BOX_CLIENT_ID + '.oauth_redirect=true';
        if (location.hash.indexOf(oauth_redirect_param) !== -1) {
            judgedAllowAccessFlag.set();

            // remove a hash parameter
            location.hash = location.hash.replace(oauth_redirect_param, '');

            var t = setInterval(function() {
                if (location.hash.indexOf(oauth_redirect_param) !== -1) {
                    // cancel button was clicked
                    clearInterval(t);
                    location.href = getUrl(kintone.app.getId() + '/');
                }
            }, 500);
        } else if (!judgedAllowAccessFlag.isSet() || !boxApi.hasAccessToken()) {
            kintone.oauth.clearAccessToken(boxApi.clientInfo, function(body, status, headers) {
                boxApi.getAccessToken();
                return null;
            });
        }
    };

    kintone.events.on('app.record.create.show', function(e) {
        if (validateConfig(e.record)) {
            checkAccessToken();
            e.record[config.boxUrl]['disabled'] = true;
            e.record[config.boxFolderId]['disabled'] = true;
        }

        return e;
    });

    kintone.events.on('app.record.edit.show', function(e) {
        if (validateConfig(e.record)) {
            if (!e.record[config.boxUrl].value) {
                checkAccessToken();
            } else {
//                e.record[config.keyFld]['disabled'] = true;
                e.record[config.boxFolderId]['disabled'] = true;
            }
            e.record[config.boxUrl]['disabled'] = true;
        }
        return e;
    });

    kintone.events.on('app.record.index.edit.show', function(e) {
        if (validateConfig(e.record)) {
            e.record[config.boxUrl]['disabled'] = true;
            e.record[config.keyFld]['disabled'] = true;
            e.record[config.boxFolderId]['disabled'] = true;
        }
        return e;
    });
})();

 

 

まとめ

  Topへ↑

実案件ではさらに凝った実装(フォルダー数も階層も本稿の例よりさらに多い)が施されています。
そして、古くboxが設定されていないレコードには手作業がたまに発生しているものの、実運用に乗っています。
この記事ではそれ以上の情報を出すことはお客様の業務に関わるのでここまでにしとうございます。

本稿がkintoneを運用している皆様にとって少しの手助けになれば幸せです。

kintone上で大量の添付ファイルに困っていらっしゃる方や、社内ファイルサーバーからの移行でお困りの方。他のPaaSからkintoneへ移行する作業があって、添付ファイルの扱いにお困りの方。
弊社では本稿のようなboxとkintoneの連動事例を何例も手掛けております。お困りの際はおっしゃってくださいませ。

最後に蛇足ですが、boxの案件で例に挙げた三つのダムは、私が実際に訪れてダムカードを入手した場所です。


当エントリーの参考にさせていただいたブログ

  Topへ↑

最後になりましたが、このエントリー作成にあたり、以下の2サイトからの情報を参考にさせていただきました。ありがとうございました。

 box APIレファレンス
 AWS Lambda上でBox Node SDKを利用する-九龍堂雑録


コーチングのグラフってkintoneで出せるんやって!


kintone2 Advent Calendar 2019の5日目の記事です。

  Topへ↓

突然ですが皆さん、コーチングって聞いたことがありますか?
あっ! そこのあなた、ページはそのままに!
これは間違いなくkintone Advent Calendarの記事ですから。
ほら!

きとみちゃん楽しいですよね!
https://kintone.cybozu.co.jp/jp/kitomi/

日々、お仕事に励むきとみちゃん。
きとみちゃんとお仕事をする仲間はとっても個性が豊か。

ちょっぴりあわてんぼうでドジっ子のきとみちゃんがkintoneに救われる姿は微笑ましいです。
ちなみに私は巻物で見積書を出してくださる麻呂な方が好きです。この方のお名前はなんでおじゃる?

さて、きとみちゃんがお仕事をする上で助けになる手法はkintoneの他にもさまざまなものがあります。

その中の一つが冒頭に書いたコーチングなのです。

コーチングを一言で言い表すなら、
・相手の学習や成長、変化を促し、相手の潜在能力を解放させ、最大限に力を発揮させる。
でしょうか。

詳しくはWikipediaの「コーチング」
をご覧くださいませ。

ビジネスにフォーカスを当てたコーチングの歴史はまだまだ浅いです。
ここでお伝えしておかなければならないのは、自己啓発セミナーとは違う、ということです。

と、偉そうにウンチクを述べる私ですが、コーチングを受けた経験は人生で1,2回だけ。
では、そんな私がkintone Advent Calendarで何を語るというのでしょうか。

結論を先に書いちゃうと、kintoneでこんなグラフを作ってみましょう!
ということなんですね。

グラフとデータのご説明

  Topへ↑

上に登場したのは四つの傾向を円グラフにしたものです。
それぞれの傾向の文字列にマウスを合わせると、事前に登録しておいたキーワードが出てくる。
これ、実は以前、お客様に依頼されて作ったkintoneにChart.jsを組み込んだグラフ生成の仕掛けです。

私はコーチングには無知です。
ですから、kintoneに入力画面を作り、その結果を集計することで、設問に応じた四つの傾向が算出できる、ということを知ったときは新鮮でした。

お客様によれば、
相手をほめる場合の、個人に響くキーワードは4つの傾向に分けられる
だそうです。

それに合わせて、こんな入力画面を作ってみました。

仮に20問の設問としています。それぞれの4つの傾向ごとに5問を設問しました。
それぞれの問いごとに
・よく当てはまる
・当てはまる
・当てはまらない
・まったく当てはまらない
の4種類の答えをラジオボタンで設定しています。

もちろん、さらに設問数を増やすことも可能ですし、設問数を自在に増減させたい、というご要望もあるでしょうね。
その場合はサブテーブルを使えばよさそうです。
この記事ではサブテーブルではなく、20問に固定したバージョンでお届けしてみます!

実際の内容

  Topへ↑

はい。ではアプリの設定画面です。フォームはこんな感じ。

一番左の文字列フィールドは設問の文字列を入力します。
フィールドコードは上から順にquestion_1からquestion_20としています。

真ん中のドロップダウンフィールドは4つの傾向を選びます。
フィールドコードは上から順にtrend_1からtrend_20としています。

右のラジオボタンフィールドはそれぞれの答えを入力する欄です。
フィールドコードは上から順にanswer_1からanswer_20としています。

で、続いてはグラフを表示するカスタマイズビューを設定してみましょう。

こんな感じですね。

続いてはロジックです。
実は、このグラフを作るには以下の二つのJavaScriptファイルを設定するだけ。

上に設定したのは、Chart.jsです。
Cybozu Developer Network
からCDNのページに移動してもらえれば。

そこのChart.jsに書かれているURLをコピーし、上の画面の
から

に貼って保存するだけ! きとみちゃんでもできますよね?
htttps://がダブらないようにだけ気を付けて!

続いてグラフ表示のロジックです

  Topへ↑

では続いてきとみちゃんとグラフ.jsの内容を。
ここからはVisual Studio Codeの画面にコメントを入れています。




ちょっと見にくいので、直に貼ったコードも提供します。右にスクロールしてくださいね。

(function () {
  "use strict";

  // 一覧ページ
  kintone.events.on('app.record.index.show', function(event) {                       //一覧画面表示時の定型文です
    var record = event.records[0];
    var itemcount = 20;
    var 1_Score = 0;
    var 2_Score = 0;
    var 3_Score = 0;
    var 4_Score = 0;
    var selectedScore = 0;
    var dataLabelPlugin = {                                                          //ここは以下の162行目で呼び出されるチャートのプラグインコンフィグで呼び出される部分です。
      afterDatasetsDraw: function (Chart, easing) {                                  //afterDatasetsDrawとはプラグインコアAPIとして呼び出されるChart.js内部のフックです。要は描画後です。
        var ctx = Chart.ctx;                                                         //チャートが描画されている対象のDOM要素です。157行目で定義され、159行目でChartオブジェクトに渡されます。
        Chart.data.datasets.forEach(function (dataset, i) {                          //対象チャートをループしています。データは77行目で一種類で指定していますのでループは一回のみです。               
          var meta = Chart.getDatasetMeta(i);                                        //チャートのメタデータを取得しています。データやラベルも含まれています。
          if (!meta.hidden) {                                                        //チャートのhiddenプロパティがTrueの場合そもそもチャートが描画されません。
            meta.data.forEach(function (element, index) {                            //メタ要素のデータをループします。今回は4種類ですね。
              ctx.fillStyle = 'rgb(0, 0, 0)';                                        //円グラフの中の文字の色です。rgb(0, 0, 0)は黒を表しています。
              var fontSize = 16;                                                    //36-37行目で文字の場所を設定するためのフォントサイズを16pxで設定しています。表示フォントのサイズとは別に。
              ctx.font = "24px \"Helvetica Neue\", Helvetica, Arial, sans-serif";    //これが実際に描画される文字のフォント情報です

              var sum  = function(arr) {                                             //ここでは対象となるデータの合計値を返します。4種類のデータの合計です。
                  return arr.reduce(function(prev, current, i, arr) {
                      return prev+current;
                  });
              };
              var percentString = ((dataset.data[index] / sum(dataset.data))*100).toFixed(1) + "%";  //それぞれのデータの値を全体の合計で割り、パーセントの文字列を構築します。
              var dataString = Chart.data.labels[index];                                             //それぞれのデータのラベルです。79行目で定義した4つの傾向のラベルですね。 
              ctx.textAlign = 'center';
              ctx.textBaseline = 'middle';

              var padding = 5;
              var position = element.tooltipPosition();
              ctx.fillText(dataString, position.x, position.y - (fontSize / 2) - padding);           //30行目で設定したラベルの値を計算した位置に表示します。
              ctx.fillText(percentString, position.x, position.y - (fontSize / 2) - padding + 35);   //29行目で設定した値のパーセントの文字列を計算した位置に表示します。
            });
          }
        });
      }
    };
    for (var i=1 ; i<=itemcount ; i++){                                                              //ここから76行目までは大人の事情でいろいろとあいまいですがお許しを
      switch( record['answer_' + i]['value'] ) {                                                     //要するに20レコードの設問の答えを基に四つの傾向に加算しているのです
        case 'よく当てはまる':
          selectedScore = 係数は内緒よ♪;
          break;
        case '当てはまる':
          selectedScore = 係数は内緒よ♪;
          break;
        case '当てはまらない':
          selectedScore = 係数は内緒よ♪;
          break;
        case 'まったく当てはまらない':
          selectedScore = 係数は内緒よ♪;
          break;
      }
      switch( record['trend_' + i]['value'] ) {
        case '一つ目の傾向':
          1_Score = 1_Score + selectedScore + 山藤ゆりさんに教えてもらった魔法の値を加えるの♪;           //要するに20レコードの設問の答えを基に四つの傾向に重みづけしているのです
          break;
        case '二つ目の傾向':
          2_Score = 2_Score + selectedScore + 山藤ゆりさんに教えてもらった魔法の値を加えるの♪;
          break;
        case '三つ目の傾向':
          3_Score = 3_Score + selectedScore + 山藤ゆりさんに教えてもらった魔法の値を加えるの♪;
          break;
        case '四つ目の傾向':
          4_Score = 4_Score + selectedScore + 山藤ゆりさんに教えてもらった魔法の値を加えるの♪;
          break;
      }
    }
    1_Score = ロジック関数は内緒よ♪(1_Score);
    2_Score = ロジック関数は内緒よ♪(2_Score);
    3_Score = ロジック関数は内緒よ♪(3_Score);
    4_Score = ロジック関数は内緒よ♪(4_Score);                                          //さらに四つの傾向に値を秘密ロジックで精緻化しています。この辺も大人の事情が絡んでいます。
    var pieChartData = {                                                             //161行目でChartオブジェクトに渡されるデータとラベルと背景色のホバー色や枠の組み合わせです。四要素です。   
      labels : ["リーダー合理系","アイディア活動系","ヘルプ支援系","クール分析系"],       //ラベルですね。四つの要素に分かれています。
      datasets : [                                                                   //四つの要素のそれぞれの色の指定です。
        {
          backgroundColor: [
            '#ff6384',
            '#36a2eb',
            '#cc65fe',
            '#ffce56'
          ],
          hoverBackgroundColor: [
              "#FF2384",
              "#3662EB",
              "#cc25fe",
              "#FF8E56"
          ],
          hoverBorderColor: [
              "#000000",
              "#000000",
              "#000000",
              "#000000"
          ],
          hoverBorderWidth: [
              2,
              2,
              2,
              2
          ],
          data : [1_Score,2_Score,3_Score,4_Score]                                   //四つの要素の値です。大人の事情で実際の回答から複雑に計算された結果が格納されます。
        }
      ]
    }
    var tooltipkeyword = {                                                           //ここは四つの傾向ごとに176行目で乱数を設定し、任意のキーワードを表示するようにしています。
      type : [
        {
          word : [
            '同業者もあの人を噂している',
            '他の部署でも話題になっている',
            '○○さんしかできない',
            '自分で判断し、動ける人',
            '部署のメンバーに信頼されている',
            'あのひとには任せられる'
          ],
          title : "任せる、難題、未知の分野、他に頼めない、誰にもできない"
        },
        {
          word : [
            '発想がおもしろい!!',
            '一緒にいるだけで楽しい!!',
            'さすがアイデアマン!!',
            'すばらしいサービス精神!!',
            'うちの部署のムードメーカー!!',
            'その自由な発想がうらやましい!!'
          ],
          title : "自由にして、思いっきり、楽しく、面白く、みんなでいっしょ"
        },
        {
          word : [
            'みんなが働きに感謝している',
            '縁の下の力持ち',
            '一緒にいて落ち着く',
            '丁寧で親切で信頼できる',
            '細かいところによく気が付く',
            '相手の気持ちを分かってくれる'
          ],
          title : "感謝、ありがとう、仲良く、話し合い、相手の気持ち"
        },
        {
          word : [
            '詳しく業務を理解している',
            '商品のことをよく知っている',
            'わが社のことになんでも詳しい',
            'うちの課の歩く辞書',
            'あの人に聞けば間違いない',
            'このデータ量は大したもの'
          ],
          title : "情報、正確、正しく分析、予定通り、計画通り"
        }
      ]
    }
    var canvas = document.getElementById('canvas').getContext("2d");                 //Chartが描画されるDOM要素を指定するChart.jsの定型文です。id="canvas"はカスタマイズビューで指定しました。
    canvas.canvas.height = 256;                                                      //描画される領域の高さを指定しています。
    var test_chart = new Chart(canvas, {                                             //ここでChartオブジェクトをインスタンスとして実体化させています。
      type: 'pie',                                                                   //type: 'pie'はグラフの種類ですね。円グラフです。
      data: pieChartData,                                                            //77行目で定義したデータの実態です。
      plugins: [dataLabelPlugin],                                                    //プラグインコンフィグで関数を呼び出すことができます。その関数は13行目をご参照ください。
      options: {                                                                     //ここからはオプション情報です。
        animation: {
          animateRotate: true,
          animateScale: true
        },
        tooltips: {
          titleFontSize: 48,
          bodyFontSize: 36,
          callbacks: {
            label: function (tooltipItem, data){                                     //ここは描画後にマウスカーソルが乗った時の事前に内部でtooltipItemに定義された情報を基に値を返します。
                return pieChartData["datasets"][0]['data'][tooltipItem['index']] + "ポイント"       //77行目で定義されたデータから該当するデータを表示し
                  + "  キーワード → " + tooltipkeyword["type"][tooltipItem['index']]["title"];      //さらにキーワードとして109行目で定義された四つの傾向のタイトルを表示します。
            },
            afterLabel: function (tooltipItem, data){                                //172行目のラベルの後に別の情報を表示させるにはafterLabelツールチップコールバックが呼び出せます。
                  return "「" + tooltipkeyword["type"][tooltipItem['index']]["word"][Math.floor(Math.random()*(6-0)+0)] + "」";
            }                                                                        //さらにテキストとして109行目で定義された四つの傾向の文言のオブジェクトから乱数で選ばれた文言を表示します。
          }
        },
      }
    });
  });
})();

あとはこのJavaScriptファイルを

にのようにアップロードしていただければ。

どうでしょう。kintoneのデータにChart.jsを組み合わせるだけで、
kintoneのデータを分析することができてしまうのです。

Chart.jsにはさまざまなグラフが用意されているので、
kintoneの標準グラフでは表現できないことも可能です。

コーチング用の分析ツールとしても使えてしまうkintoneの奥深さを楽しんでいただけたらきとみちゃんも喜ぶはずです!
よかったら以下にChart.jsの公式サイトのリンクも貼っているのでご参考になさってくださいね。

当エントリの参考にさせていただいたブログ

  Topへ↑

最後になりましたが、このエントリ作成にあたり、以下の2サイトおよび、コーチングについて教えて頂いたお客様からの情報を参考にさせていただきました。ありがとうございました。

 Chart.jsドキュメント翻訳
 Chart.js公式サイト


kintone Café 東京 Vol.9を開催しました


11/15にkintone Café 東京 Vol.9を開催しました。

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

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

なので、ここでは代表である私が登壇の際に語った
kintone Caféとは?スライド
kintoneを簡単にご紹介スライド
Cybozu Days 2019のkintone周りをフィードバックスライド
をさらに補足するように、開催であらためて感じた思いを書かせていただきます。

3月末のkintone Café 広島に登壇した時、今までkintone Caféで話したことのなかった自治会を取り上げました。
今までは技術に即した内容を話すことが多かったのですが、技術に触れないkintone Caféの登壇が私に新鮮でした。

8月末に開催したkintone Café 東京 Vol.8 @多摩では、プロジェクト・アスノートの松田さんと共催しました。
それを機に私の話す内容を思い切って初期化し、kintoneを一から語ってみました。当然技術ネタは封印。

技術ネタだと、kintone Caféに来てくださった方がついて来れない可能性があります。当然、反応も薄くなります。
そもそもkintoneエバンジェリストとは、技術うんぬんではなく、kintoneの良さを広めることにあるのではないか。
私の中でkintone Café神奈川を何度か行う中で迷いが生じていましたが、直近の二回のkintone Caféで修正することができました。

今回のkintone Café 東京 Vol.9は開催要項にユーザー向けをうたっていました。
その一方で、今回の参加者の中には私の知る限り、かなりのスキルを持つ技術者も6,7名はいました。

そうした方々に対し、kintoneの初歩を語ることに意味はあるのか。
私はあると判断しました。
むしろ、技術者であるほど、kintoneが新鮮に映るはず。そうした意味でもユーザー向けの内容でよかったと思います。

今回、会場を提供してくださったのはクロス・ヘッド株式会社様。System Integrateの豊富な経験をお持ちです。
クロス・ヘッド様の会場をお借りしながら、技術に触れず、ユーザー向けの内容にすることに若干のためらいもありました。
ですが、kintone Caféを通しての皆様の反応は上々で、七割以上の方が懇親会に参加してくださいました。その事からも、ユーザー寄りで行く、との方向性は続けようと思いました。

私の登壇では、そもそもなぜkintoneをユーザーに勧めるのか、という観点で一生懸命語ってみたつもりです。
さらに、Cybozu Days 2019 in 東京で発表された内容を報告しました。

今回、一緒に登壇したkintone大好きキンスキ YouTuberの松井さんは、私のPCトラブルによる順番交代にも動じず、見事な登壇を務めてくださいました。そればかりかサイボウズさんならではの事例を提供してくださいました。

私に続いて登壇してくださった情報親方の東野さんは、Cybozu Days 2019で発表され、来場された方々に感心されたkintone導入ガイドブックの制作について、マニュアル制作のノウハウも惜しげなく披露してくださいました。

トリを務めてくださったTeruさんは、登壇を公開できないリスクを押してkintoneが最大に活きる業務改善の生の事例を語ってくださいました。kintoneの紹介から導入、そして業務改善効果に至るまで、今回のCaféを締めるにふさわしい内容でした。

あらためて、こうした地道な活動が、今後につながると確信できた1日でした。
12/7にはkintone Café JAPAN(サイト)が予定されています。そこでもきっと実のある内容が得られる事でしょう。
今回来てくださった35+αの皆様、登壇してくださった3名の仲間。会場を提供してくださったクロス・ヘッド株式会社様。皆さま本当にありがとうございました。


Cybozu Days 2019 in 東京に行きました


2019/11/7、11/8の幕張はある気配に包まれていました。
そこではCybozu Days 2019 in 東京が催されていたのです。
ただし、幕張に満ちていた気配とは、熱気ではなく禍々しい気でした。

今年のテーマは「モンスターへの挑戦状」
そのテーマ通り、モンスターたちに占拠されたパビリオン。会場全体が禍々しく彩られています。
その中にはちらほらと勇者のイラストも見受けられます。ですが、空間の大部分はモンスターに占められたまま。

そんな会場にも、参加者が増えていくにつれモンスターに立ち向かう機運が満ちていきます。
勇者とはすべての参加者のこと。皆でモンスターに立ち向かうのが今年のCybozu Daysのミッションなのです。

では、私たちが立ち向かうモンスターとは何でしょうか。
そのヒントは既にサイトにも動画で流されていました。そして、二日目のメインセッションでも青野社長から語られました。
モンスターとは目に見えません。そもそも存在すらしません。
モンスターとは私たち自身が作り上げてしまった存在なのです。

戦後の高度経済成長の結果、成功体験として日本中に刷り込まれてしまった観念。その代表が年功序列や終身雇用です。
そうした観念から派生したモンスターたち。
毎日決まった場所に通勤し、背広とネクタイの着用が正しいとする「通念」が蔓延り、その背後には一度きりの人生を「カイシャ」に捧げさせようと蠢くモンスターの闇が見え隠れします。

そうしたもろもろのモンスターたちと一緒に戦う私たちのために、七カ所に分かれたセッション会場のあちこちで、二日間にわたっていろいろなセッションが行われました。

初日のProduct Keynoteでは、GAROON、kintoneを軸に、これまでのアップデートと今後のアップデート予定が披露されました。
チーム応援ライセンスは対象アカウントが三倍に増え、危うく私の口から歓声が飛び出そうに。
LGWAN対応やアメリカでのkintone状況など、今後に期待が持てそうな発表が続きます。

keynoteの前には「俺キン」のセッションがありました。
俺はこんな風にモンスターと戦ってきた、と発表する勇者たちの姿は尊いです。私も場外から戦いの軌跡に聞き惚れました。
モンスターとの戦い方は勇者によってまちまち。あえてKINTONEに乗って登場する掟破りの登場もまたよし。

Keynoteの次は、kintone hiveです。
毎年聞いていますが、全国で知らぬうちに育ってしまったモンスターたちと戦う姿には、共感と感動があります。
例えるなら上出来のRPGのプレイ動画を大勢の勇者とともに観戦する臨場感のような。

私はhiveの前、各社のブースをダッシュで巡りました。
中でもfreee社のブースに長居していました。freee社で今度kintoneとfreeeのAPI連携についてお話しするためです。
その情報を入手し、freee社のみなさんと会話をして勉強。今後にもつなげていくためにも。

hiveの後は、kintone Café in Cybozu Daysにも参加しました。
Cybozu Daysが終わってすぐ、お膝元でのkintone Café 東京 Vol.9を主宰する私としては、全国各地にある勇者の集うギルドのあり方から学べるもの多かったこと。
kintone Café開催の意義や目的を考えるきっかけにもなりました。

このセッションと同じ時間には開発者向けのセッションがありました。
私はとても行きたかったけれど、kintone Caféのセッションを選びました。
まだまだ私もか弱い勇者なので、分身の術が会得できておらず悔しい。いずれ公開される動画を待ってみます。
なお、このセッションから冒険仲間に情報親方が加わってくれました。以後は行動をともに。

続いてはkintone hack Nightです。このセッションも見逃せません。
勇者として最前線に出てモンスターと戦うには、スキルを磨かねば。それを披露する場こそhack Night。
勇者の出で立ちに身を包んだ六名の勇者がおのおのの磨き上げたスキルを披露します。そして採点。
採点の間、魔の司会者ウッシーが召喚したモンスターが登場し、勇者にさらなる試練を与えます。あるモンスターは18世紀二ポーンの「コウメダユウ」に姿をかえ、華麗なる滑り芸を駆使して勇者に襲いかかります。あるいは21世紀の「ワタナベケン」がレスラーの出で立ちで絶叫して勇者の行く手を遮るのです。
勇者、危うし!
奮闘もむなしく、魔法に魅入られ笑わされた勇者には激烈なゴムパッチンが顔面に炸裂。容赦なくHPを削っていきます。

毎年、勇者の激闘から学ぶところは多いです。
私的には、AR世界の振る舞いをkintoneに結びつけた勇者「ウィル」さんのセッションがインパクト大でした。
が、優勝はヲタ芸とkintoneの組み合わせで満場の笑いをさらった勇者「つっきー」さんの逆転勝利。いや、楽しかった!

一日目『最軽量のマネジメント』を出版されたばかりのサイボウズ社副社長の山田さんがサイボウズ商店の店頭に立たれていたので、著書を購入し一緒に写真を撮っていただきました。
そして、情報親方と飯を食って締め。
ルーラを唱え、二時間以上かけて町田の宿屋に戻りまして。

さて、二日目。
いきなりの「SEKAI NO OWARI」の曲にバイオリンをフィーチャーしたバンドが登場し、素晴らしい二日目を予感させます。

二日目は、働き方をメインに据えたセッションが主です。
メインセッションでは青野社長の書籍「会社というモンスターが、僕たちを不幸にしているのかもしれない。」を編集したphp研究所の方と青野社長の対談から始まりました。
今回のCybozu Days 2019のテーマ「モンスターへの挑戦状」のもとになったというこの書を、私はまだ読めていません。ですが、この対談を聞くと、早く読まねば、という気にさせられます。
私が常々感じていた日本を覆う思い込みの数々。

タカマツナナさんとの対談も参考になりました。
お笑い芸人として活動する中、活動を若年層への政治参加を促すものに変えるなど、自在に活動を行うタカマツさんの意気込みが面白かったです。
タカマツさんもまた、芸人の立場から世の中のモンスターと戦っているのでしょう。

そのタカマツナナさんの後に登場したのが麹町中学校の工藤校長との対談です。
工藤校長は、宿題や委員会など学校生活につき物のさまざまな制度に抜本的な改革を加えたことでよく知られています。
一人一人の生徒のことを考えた結果、そうした制度や行事で必要のないものは廃止も辞さない。そうした伝統的に伝わる制度の多くは、実は前例主義に基づいた思い込みのモンスターの生み出した幻想にすぎない。そう力強く言い切る工藤校長こそ、教育界にさっそうと現れた勇者の中の勇者なのかもしれません。

この日の私は、作業もしなければならず、昨日以上にブース巡りができませんでした。用意してくださった電源席で、作業に没頭。

続いてのセッションはサイボウズ社に中途入社した社員が語る、サイボウズ社内の情報共有のあり方です。
私もお客様とともにモンスター退治の旅に出る時、早い時期にこのモンスターと戦います。
そもそも、情報共有に妙なブロックがあると、kintoneという武器もうまく機能しません。
どこまでの情報をkintoneにアップしてもらえるのかによって導入の成否も分かれるのではないか。そう思います。

その視点でみたこのセッションはまさに驚きです。
社内経営会議の生の声まで含めて全社員に公開するというのですからすごい。
ですが、私も妙な秘密主義は面倒なので、この点はとても勇気づけられます。
また、経営者の方にもサイボウズさんはここまでやってますよ、という根拠を得られたことも大きかった。

続いてのセッションは医療介護業界の四天王がパネリストとなって、kintone導入のあれこれを語ってくださるセッションです。
四天王の内、三人はCybozu Days 2019の前日にkintone エバンジェリストに就任した方で、まさに豪華な陣容です。
実際、医療業界へのクラウド導入は、クラウドの認知のバロメーターです。
妻が歯科診療所を経営している私にとっても、とても興味深いセッションでした。

その次のセッションも、クラウドの認知のバロメーターの一つです。
自治体への導入にあたっては、LGWANとの連携がセットでないと情報の流通が滞ります。
神戸市と市川市の事例ですが、かつて神戸市役所と芦屋市役所で入力オペレーターをした経験がある私にとって、神戸市の事例には興奮しました。神戸市が主宰するワークショップには芦屋市の方も参加されているとか。
私の来し方を考えると感慨が湧きます。この分野でも今後は協力をしていければうれしいと思いました。
「来なくてもいい市役所」の実現に向けて。

そしてすでに最終セッションへ。
その前に、アーセスさんのブースに立ち寄りました。
お客様がチーム応援ライセンスに申請していて、申請が通ればアーセスさんのプラグインを使う提案もお客様にしていました。なので、KOUTEIやKOYOMIについてあらためてお話を聞きに伺ったのです。

最終セッションは『五体不満足』で知られる乙武氏の講演。そして青野社長との対談です。
乙武氏もまた、世に跋扈するモンスターと戦い続けてきた勇者です。とにかく目の力が強く、意思のみなぎった面構え。表情は豊かに、雄弁に語ってくださいます。不満足な五体で表現できない分を言葉と顔と喉だけで。
私も話者の端くれとしてとても刺激を受けました。スピーカーたるものこうありたいものです。
美しいものは、と問われた乙武氏が「覚悟」と答えた姿が、まさに美しい。モンスターと戦い続けるには覚悟がいります。その覚悟こそ、勇者のまとうべき究極の鎧なのかもしれません。
著書『四肢奮迅』を出されたばかりだというので、私も手に取ってみようと思いました。

冒険の旅に終わりはありません。
とはいえ、四人の勇者と幕張で飲みかわし、いったん私にとってのCybozu Days 2019 in 東京は幕を閉じました。
三日続けて幕張と町田を往復したのでHPとMPはすっからかん。でも、その替わりKP(気力)は満タンに充填されました。

初日の禍々しい気配からは一変、幕張の夜にはさわやかな風が吹いていました。ここ、幕張の地からモンスターは退けられたのです。

ただし、RPGの世界ではラスボスを倒してもゲームは永遠に続いていきます。私たちの人生もそうであるように。
まだまだモンスターは世に棲んでいるのです。

そうしたモンスターを退治する冒険の旅路では、仲間との交流が欠かせません。
今回、こうした英雄たちの交流の場を作っていただいたサイボウズさんには感謝です。
スタッフの皆様、登壇者の皆様、参加者の皆様、ありがとうございました。
これからもモンスターと戦い続けていきましょう!


kintone EvaCamp 2019に参加しました


令和元年11月6日。
幕張の某ホテルに代表の私はいました。
翌日から二日間にわたって開催されたCybozu Days 2019 東京を控え、kintone エバンジェリストが集うパーティーに参加するためです。

会場の窓からは、美しい光景が広がっていました。
夕日の色合いを背後に黒くそびえる富士山。
足元にはZOZOマリンスタジアムがまばゆく輝いています。
マリンスタジアムのそばには、明日からの祝祭に備え、ひっそりとうずくまる幕張メッセが。
素晴らしく印象に刻まれる光景でした。

その日の様子は
こちら
の記事にアップされています。
まさに、Cybozu Days の前日にふさわしく、意気みなぎる時間でした。
すばらしい場所と時間をご用意くださったサイボウズ社の皆様には感謝です。

サイボウズさんは、今までもCybozu Daysの前日にはこうした場をご用意してくださっていました。
そして、私も時間の許す限り参加してきました。
ところが、今回のEvaCampはその中でも特に意義あるものです。
今までは、サイボウズ公認 kintone エバンジェリストといっても、お墨付きサイトがありませんでした。
なので、私たちエバンジェリストは自分で発信するしかエバンジェリストを認知してもらうすべがなかったのです。

今回、公式サイトが設けられ、エバンジェリストが名実ともに認められたことは大きな変化といえましょう。
こちらに一覧が

2014年8月よりkintone エバンジェリストに任命された私。
すでに5年の月日が経過しました。
ところが、最初の二年間の私のエバンジェリストとしての活動は、自他ともに満足のいくものではありませんでした。

Cybozu Daysですらかろうじて一日、しかも数時間参加できる程度。
他のあらゆる展示会には参加すらできませんでした。
もちろん、新規kintone案件も数える程度。
cybozu developer networkに記事を書き、毎年年末のkintone advent calendarに書き、たまにkintone Café を開き、登壇する程度。

そんな私は、2017年の秋に常駐現場を卒業し、すでに2015年の春に果たしていた法人化もあいまって、ようやく活動できる時間を手に入れられました。

おかげさまで昨年の秋辺りからkintone案件が増え、今では社業の6~7割を占めるまでになっています。そして毎日、kintoneのことを考えています。

今回、kintone エバンジェリストとして継続するかどうか。決断を求められましたが迷う余地はありません。速攻で継続を決意しました。
出だしの二年の空白を埋めるためにも。
その間、活動の鈍い私に業を煮やしながらも見放さないでいてくれたサイボウズ社の担当者様のご厚意に報いるためにも。
そして、私自身が望むワークライフバランスのためにも。

世にいろいろなサービスはありますが、私にとってサービスの背景にある哲学に最も共感できるサービスがkintoneなのです。
このサービスを提案し、使ってもらうことで社会になにがしかの貢献ができていると思える。
それって働き方を考える上でとても大切だと思えます。特に技術者には。

まだまだ世の中には固定観念という目に見えないモンスターが跋扈しています。
それを一つ一つなくしていくために、私は求められる限り、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率をあげられるように。もちろん、プライベートの生活も大切にしながら、体も大切にしつつ。読書ブログもたくさん書いて。

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