大嫌いだったゴルフにハマる

この記事は「嫌いだったものに一生懸命取り組んでいる自分エラい!」ということを言いたいのではなく、「取り組む前に全否定する」という自分の性格に問題があることを公にして、再発を防止することを目的に書いています。

過去には

  • iPhone (Apple 製品)

  • 車(自家用車)

  • ゴルフ

が近年の「三大全否定ワード」でいずれも大好きになったものです。

今日はその中で直近の話題であるゴルフについて取り上げたいと思います。 Apple 製品と車に関する現状は写真だけ。

ゴルフ拒否の10年間

最初に勧誘を受けたのは 2006年、新卒で入った会社を退職して2社目(前職)に入った直後、ちょうど社内ではゴルフブームで多くの先輩たちがゴルフにハマっていました。私は高校野球やっていたということもあり(それが採用理由だったとか・・・)、「お前はやれば絶対めちゃめちゃ飛ばせて楽しいからやれ」と言われましたが、拒否し続けていました。

2009年に仲の良いメンバーで軽井沢に旅行に行った際も、何名かが初めてゴルフをやっていたにも関わらず自分だけ拒否していました。そして、2014年にアプレッソに入社した際にも当時の社長がゴルフ大好きで声をかけていただいたにも関わらず頑なに拒み、ひたすら時が経つのを待っていました。

(2009年軽井沢 許可がないので先輩たちは一応黒塗り)

何故そんなにゴルフをやりたくなかったかというと

  • 仕事なのかスポーツなのかよくわからない

  • やるからにはちゃんと練習したい

というのがありました。

仕事なのかスポーツなのかよくわからない問題

だいたいゴルフに誘ってくるのは上司や先輩です。「楽しいからゴルフやろう!」というのは良いのですが、だいたい二言目には「お客さんと仲良くなれるからやったほうが良い」という言葉が付いてくるのです。

「ゴルフはスポーツじゃないのかっ!?」と思うわけですよ、それって仕事じゃないのかよと。

仕事なら「仕事としてやれ」って言われたほうが分かりやすいけれど、「楽しいから」と言って勧誘しておきながら、その先に「仕事の人脈増える」とかそういう話になるわけですよ。マジムカつきます。

やるからにはちゃんと練習したい問題

私はメチャクチャ負けず嫌いで、ゴルフをもしやるのであればちゃんと練習して誰よりも上手になりたいと思っていました。そのためには他の余暇の時間を削って練習する必要がありますし、道具をちゃんと揃えるための金銭的なコストもかかります。

だいたい誘ってくる人は「ちょこっと練習すればラウンドできるよ」とか言ってくるんですが、そうじゃないんです。ちょこっとの練習でやって他人に負けるのは嫌なのです。やるからには負けたくないからちゃんと時間取って練習したいんですよ!

ゴルフを始めたきっかけ

そんな大嫌いだったゴルフを始めたきっけについてです。 2016年の秋頃、仲の良いパートナーさん(3名)と私の上司(+私)とでの飲みの場のことです。ゴルフの話題になり、パートナーさんの1名の方も私と同じくゴルフはやりたくないと言っていて理由として「道具を揃えるのが大変で・・・」と言ったところ私の上司が「私の1セット余ってるから差し上げます」と余計なことを言ってしまう。

当然、この流れでパートナーさんは始めないわけにはいかなくなり、私も巻き込まれ事故に・・・とりあえずその場で「やる」という約束はしなかったものの、皆さんの勢いに負けて「1回だけ一緒に練習に行く」という約束をしてしまいました。

ゴルフの楽しさ

ということで、約束をしてしまったからには練習には行かなければいけない、ということでそれから2ヶ月ほど後に私の上司を除くメンバー4名で江坂のゴルフ練習場に行きます。これをきっかけにゴルフにハマっていくわけですが、何がそんなに楽しいのか?と自分なりに感じていることを書き留めておきます。

思っていたより辛い

始める前のゴルフのイメージは「おじさんのスポーツ」「他の球技と比べてスピード感がない」ので、大して難しくないものだと思っていました。

それがやってみると意外に難しい。よく言われる「止まっているボールに当たらない」ということは感じなかったのですが、普段使わない筋肉を使うので1時間程度打ちっぱなしをやっただけで背筋が辛くなり、結果練習に行った後にぎっくり腰になってしまいました。

しかし、「こんなに大変なことをみんなやっているのか」と思うと負けん気に火が付いてきます。

練習は嘘をつかない

ちょっとやってみて楽しいと感じたので、「やるからには徹底的にやろう!」と思いました。これは自分の性格なのですが、先述の通りなんでもやるからには絶対に負けたくないと思っており、ゴルフも同じです。スポーツをやるからには他人に負けないぐらいになりたいと思い、早速江坂のゴルフセンターのスクールに入会しました。

スクールに通って2ヶ月程度たった今感じるのは、「ゴルフはフォームが命のスポーツなのかな?」ということです(違ったらすみません、あくまで個人的感想です)。フォームは自分ひとりで練習していると悪いところに気づかないので、スクールに通って毎週1時間練習しているだけですが、毎週少しずつ悪かったところが改善されていくのが楽しく感じます。また、上手く打てなかったと感じた時に後ろからコーチに「いまのはxxがちょっとおかしかった」と言われて修正すると真っ直ぐ飛んで行くのがまた面白いです。

スポーツはなんでもそうだと思いますし、今は始めたばかりだからなおさら感じるんでしょうが「練習は嘘をつかない」というのは凄くやりがいがありますね。

ゴルフを名目にいろいろな人と遊べる

「ゴルフをやっていると仕事の役に立つ」とは未だに思わないですし、やる前から否定していた「仕事なのかスポーツなのかよくわからない問題」はあまり改善してはいないのですが、仲の良い仕事仲間の人たちとゴルフを行くのは純粋に楽しいです。

また、今日先程も高校時代の野球部の先輩から「ゴルフに行こう」と誘っていただき、自分の中での「この人とゴルフ行きたい」リストが既に何十人かになっていて、予定を立てるだけで楽しみです。

それから、色々な人に「ゴルフ行きましょう」と話してみると少し前の自分と同じく「上司から『やれっ』て言われてめんどくさいと思っている人」がたくさんいることが判明し、そういう人たちと一緒にこれから始めていくのも楽しみの一つです。

まとめ

ということで、「ゴルフやるぐらいだったら死んだほうがマシ」と言っていた人間がこんなにハマっている現状の報告でした。 是非皆さん、一緒にやりましょう!

Webhook と Thunderbus で超便利!

kintone Webhook 企画 第3弾

本当はこの記事を最初に書いていたのですが、やっているうちに LINE 連携が楽しくなってきたてこの記事は3番目になりました。

同じネタで1日に3つも記事を上げると「お前どんだけ Webhook 好きなんだよ」と突っ込まれそうですが、いくら突っ込まれてもいいぐらい Webhook の搭載が楽しみでした。

一緒に書いた2つの記事はこちらからどうぞ。

 Webhook を使って kintone から LINE にメッセージを送る

 kintone と LINE でおしゃべりする

kintone Webhook + DataSpider

なぜ私がそんなに Webhook を楽しみにしていたかというと、DataSpider を開発・販売している私達にとって kintone の Webhook 搭載は両製品の用途をより広げる良いチャンスになるからです。

Webhook と DataSpider を組み合わせると「kintone に登録されたデータを他システムにリアルタイムに反映する」ことができるようになります。

これだけだと 「Zapier と何が違うんだ?」と思われる方もいらっしゃるかもしれませんが、ブラウザを閉じるのはちょっと待ってください。

Zapier は Web サービスとの連携に強いですが、DataSpider のように社内の基幹系システムとの連携はさほど多くの機能を持っていません。DataSpider は 2,900社を越えるユーザーの大多数が社内の基幹系システムの連携で使われており、実際に中野製薬様のように kintone と AS400 を組み合わせる目的で使われていたりします。簡単な Gmail 送信や Slack への送信などであれば Zapier で良いかもしれませんが、基幹システムとの連携となるとそうはいきません。そこで DataSpider の出番です。

連携の仕組み

DataSpider では「HTTP トリガー」という HTTP リクエストを受け取ったら、それを契機に連携処理を行う機能があります。ただし、これまでは kintone 側から DataSpider に対して HTTP リクエストを送信する方法が JavaScript によるプラグイン開発しか無かったため、少しハードルが高いものでした。しかし、この度 Webhook の搭載によりプラグインの開発が必要なくなったため、グッと敷居が下がったと思います。

f:id:dsstsukky:20170208111409p:plain

※注:「HTTP トリガー」以外でも「スケジュールトリガー」といって決められた時間(例:毎日xx時)や定期的(例:xx分おき)に連携処理を行う機能などがあるため、必ずしもプラグイン開発をしなくても、kintone と他システムの連携は可能です。kintone にレコードが登録されことを契機に他システムに連携が行いたい場合にはプラグイン開発が必要でした。

では早速試してみましょう。 今回はシンプルに受信したデータをオンプレミスデータベース(例:Access)に書き込む処理を作ります。 使うアプリはこんなイメージ。一般的な案件管理アプリケーションです。

f:id:dsstsukky:20170210191536j:plain:w450

書き込む先の DB はこちら。

f:id:dsstsukky:20170210222313j:plain

そして、DataSpider 側で作ったスクリプトはこんなイメージ。とってもシンプルですね。kintone で受信したデータをデータベースのカラムに合わせて加工して INSERT するだけです。

f:id:dsstsukky:20170210222155j:plain:w450

HTTP トリガーの設定を行って DataSpider の設定は完了です。黒く塗りつぶしたところは DataSpider の IP アドレスが書かれています。

f:id:dsstsukky:20170210223634j:plain:w450

あとは kintone 側で Webhook の設定で、上記の HTTP トリガーに書かれていた URL を指定します。

f:id:dsstsukky:20170210224003j:plain:w450

早速レコードを追加してみます。

f:id:dsstsukky:20170210224207j:plain:w450

データベースの中身を確認してみますと・・・

f:id:dsstsukky:20170210222842j:plain

はい。しっかりデータベースの方にも反映されていますね。

このように、Webhook と DataSpider を組み合わせると、kintone に入力されたデータを、オンプレミスにあるシステムにリアルタイムに反映させることが可能となります。

しかもここまで一切私はプログラムを書いていないのです。

更に親和性を高める Thunderbus HTTP エージェント

ただし、これだけでは少し懸念点が残ります。

DataSpider や連携先のシステムがクラウド上にある場合さほど気にすることではありませんが、社内の基幹システムとの連携を行う場合多くのケースにおいて DataSpider は社内ネットワークに置かれており、セキュリティの面から kintone(外部ネットワーク)から DataSpider のサーバに対して HTTP(S) での通信が行なえません(= Webhook が受信できない)。

f:id:dsstsukky:20170208111540p:plain

そこで、こういった課題を解決するために生まれてくるのが Thunderbus HTTP エージェントです。既に Thunderbus (読み:サンダーバス)という製品は 2015年に販売を開始しているのですが、従来持っていたファイルエージェント機能に加えて HTTP エージェントという機能を3月にリリースします。

Thunderbus HTTP エージェントは、送信された HTTP(S) リクエストをフォワードする機能を持っており、(原理的には違うのですが)リバースプロキシのような役割を担うことができます。

Thunderbus Server をグローバル IP を持つ環境(クラウドやDMZ)に設置し、Thunderbus Agent はグローバルIP を持たない環境(社内LAN)に設置します。 この時、Server 宛に送信された特定の HTTP(S) リクエストが社内ネットワークにある Agent宛に転送されます。

f:id:dsstsukky:20170208114058p:plain

これによって、DataSpider をインターネット上に晒すことなく外部からの HTTP(S)リクエストを受け取ることができるようになり、kintone の Webhook によるデータ受信も安心して行えるようになります。

まとめ

このように、Webhook のリリースにより DataSpider を使って kintone のデータと他システムの連携をすることが更に容易になりました。また、Thunderbus と組み合わせることにより、DataSpider をインターネットに晒すこと無く連携が可能となります。これによって kintone と社内のシステムを組み合わせてより幅広い用途で活用いただけるかと思います。

宣伝

この超便利な kintone の Webhook と DataSpider + Thunderbus の組み合わせは「DataSpider Cloud 全国セミナー ~kintone 編~」にてご紹介させていただきます。少しでも興味を持っていただいた方は是非足を運んで体験してみてください。

DataSpider Clous 全国セミナー ~kintone 編~

kintone と LINE でおしゃべりする

kintone Webhook 企画 第2弾

前回 「Webhook を使って kintone から LINE にメッセージを送る」というものを作りました。 これを作っている途中に「あれ? 元々 DataSpider にある kintone に書き込む機能(kintone アダプタ)を使ったら、LINE と kintone で相互に会話できるのでは?」と思いました。

kintone 呼び出しボタンの逆バージョンのイメージで、これができれば kintone を使って仕事中の人と kintone のアカウントは持っていない人(例えば家族など)のコミュニケーションが可能となります。

そして、作りました! できました!

動作イメージ

LINE → kintone の場合

まずは LINE から kintone にメッセージを送信する場合です。 f:id:dsstsukky:20170211112101j:plain:w450

  1. LINEでメッセージを送る人は普通に送ります。

  2. LINE アカウント(LINE@MANAGER で作成)が受け取ったメッセージを Webhook で DataSpider Cloud に送信します。

  3. DataSpider Cloud は Webhook で受け取ったデータを基に kintone の 「ユーザー管理」アプリを検索します。  LINE から送られてくるデータ内にユーザーごと固有の ID があるため、この ID が kintone に登録されたものであるか否かを検索し、登録済みの場合には名前を取得します。また、まだ登録されていない場合には「見知らぬ人YYYYMMDD」というユーザーを作成して ID と紐づ けます。

  4. DataSpider Cloud が kintone の「チャット」アプリに対して書き込みます。この時、送信者の名前は「ユーザー管理」アプリに登録された名前を使います。

LINE → kintone の場合

続いて、kintone から LINE にメッセージする場合です。 f:id:dsstsukky:20170211112136j:plain:w450

  1. kintone でメッセージを送る人は「チャット」アプリを使い、ルックアップで「ユーザー管理」アプリの送信先を参照してレコード登録します。

  2. kintone に登録されたレコードは Webhook で DataSpider Cloud に送られます。

  3. DataSpider Cloud では受け取ったデータを LINE Messagin API を使って、LINE に送ります。

  4. スマホ側にメッセージが届きます。

kintone 側の実装

kintone で作ったのは 2つのアプリです。このうち、チャットアプリでは Webhook の設定をしています。

ユーザー管理アプリ

f:id:dsstsukky:20170211110334j:plain:w450

チャットアプリ

f:id:dsstsukky:20170211110406j:plain:w450

DataSpider Cloud 側の実装

DataSpider Cloud 側で作ったスクリプトも2つです。

LINE からのデータを kintone に書き込むスクリプト

f:id:dsstsukky:20170211113547j:plain:w600

kintone からのデータを LINE に送るスクリプト

f:id:dsstsukky:20170211113727j:plain:w300

ユーザー側の使い方

※以下よりお友達登録できますが、今の設定だと向こう側にいるのは私だけなので 30代半ばのおっさんと喋ることになります。それでも構わないという方は是非お友達登録を!

f:id:dsstsukky:20170211095327p:plain:w200友だち追加

スマホ側
  1. スマホを持って LINE で会話する方の人は、まずこのアカウントと友だちになります。

  2. 最初の返事でこのように名前を聞かれます。名乗らなくても会話を続けることもできますが、kintone 側の人にとっては誰からのメッセージなのかわからないので名乗ってあげましょう。スマホ側はあとは特にやることはありません。普通の LINE アカウントだと思って会話しましょう。

f:id:dsstsukky:20170211115521p:plain:w300

kintone 側

  1. スマホ側で名前を送ると kintone 側にはチャットのログにこのように表示されます。1つ目のレコード(68)は DataSpider Cloud が自動で生成したメッセージで、2つ目のレコード(69)がスマホ側の人が送ってくれた名前です。 f:id:dsstsukky:20170211120143p:plain:w450

  2. ここでユーザー管理アプリへ行き、見知らぬ人YYYYMMDD と表示されているユーザーがいるので、LINE から送られてきた名前に書き換えます。  そうすることで、以降のやりとりはこの名前から送られてきたということがわかります。 f:id:dsstsukky:20170211120452p:plain:w450

  3. メッセージを送りたいときには「チャット」アプリを使います。この時、送信先はルックアップで「ユーザー管理」アプリから選択します。 f:id:dsstsukky:20170211115718p:plain:w450

未実装機能

以下の機能は実装していません。

  • スタンプの送受信

  • 画像・動画の送受信

宣伝

この超楽しい kintone の Webhook と DataSpider Cloud の組み合わせは「DataSpider Cloud 全国セミナー ~kintone 編~」にてご紹介させていただきます。少しでも興味を持っていただいた方は是非足を運んでいただければと思います。

 DataSpider Clous 全国セミナー ~kintone 編~

今回一緒に書いた2つの記事はこちらからどうぞ。

 Webhook を使って kintone から LINE にメッセージを送る

 Webhook と Thunderbus で超便利!

Webhook を使って kintone から LINE にメッセージを送る

ついに来た! Webhook

2017/2/12 の定期メンテンナンスにて、kintone のアップデートが行われ Webhook の機能が実装されました。

主要なアップデート(2017年2月) | 製品情報 | ファストシステムを実現したクラウドサービス「kintone」

これにより kintone のレコードへの[追加][更新]、[ステータスの変更]が行われた際に、他の Webサービスに通知を行うことができるようになりました。

f:id:dsstsukky:20170208111031p:plain

アップデートに先駆けて Cybozu developer network で Webhook に関する記事が公開されています。私にとっても Webhook は本当に楽しみで誰よりも早く記事を書こうとアップデート公開前から準備していたですが、まさかリリース前に記事が出てしまうとは・・・

悔しさと勢いで 3つ記事を書きました。まずは簡単に kintone から LINE にメッセージを送るという内容になります。

他の記事はこちら

  kintone と LINE でおしゃべりする

  Webhook と Thunderbus で超便利!

サイボウズさんの記事では Zapier を使って連携する例が書かれています。確かに Zapier を使えば JSON の型変換ができ、いくつかのサービスに連携できます(Slack や Gmail など)。しかし、Zapier の連携先(Action)には日本人の大好きな LINE がありません!

f:id:dsstsukky:20170210183207j:plain

なんということでしょう・・・kintone から LINE への通知はダメなのか・・・

悲しむことはありません。連携先に柔軟な DataSpider があるじゃないか。 ということで、早速作っていきます。

やりたいこと

使うアプリはこれです。アプリストアにある「迷子・落し物管理アプリ」を簡易にしたものです。

f:id:dsstsukky:20170210174132j:plain:w450

この kintone アプリに書き込まれた内容を LINE に通知したいと思います。

別の記事ではオンプレミスにある基幹システムとの連携を行うためパッケージ版の DataSpider を使っていますが、今回は API 連携ということで 2017/1/22 にリリースされたばかりの DataSpider Cloud を使って開発していきます。

スクリプト作成イメージ

設定は簡単です。

まずは kintone からデータを受信する部分ですが、XML 型の変数を作ります。ここに Webhook で送信されたデータが入ってきます。

f:id:dsstsukky:20170210091658j:plain:w450

続いて、LINE への送信設定を行います。LINE Messaging API のページを見ると、Curl コマンドでの送信例がありますのでこれを参考にします。

f:id:dsstsukky:20170131224132p:plain:w450

これを DataSpider の設定に落とし込むと以下の通りとなります。

まずはアクセス先の LINE Messaging API の URL 設定をグローバルリソースで行います。

f:id:dsstsukky:20170210092128j:plain:w450

続いて、RESTアダプタ(POST)の必須設定で基本的な設定を行います。上記グローバルリソースの URL と「パス」に書いた文字列を合わせた文字列がアクセス先のURL となります。

f:id:dsstsukky:20170210091906j:plain:w450

リクエスト設定では送信するデータの形式を選択します。

f:id:dsstsukky:20170210091919j:plain:w450

ヘッダ設定では Content-Type と Authorization(LINE@Manager で取得したChannel Access Token)を設定します。

f:id:dsstsukky:20170210091926j:plain:w450

そして後回しにしていた JSON 部分の設定を行います。

f:id:dsstsukky:20170210175341j:plain:w450

画面の右側に表示されているのが LINE Messaging API に送信するデータの構造、左側が kintone から Webhook で送信されてくるデータの構造です。実際にはいずれも JSON でやり取りするのですが、DataSpider では内部的に XML に変換しており、このように表示されています。

アイコンがいくつか並んでいるのは、単純に kintone のレコードに登録されたデータを送信しても文字の羅列で見づらいので助詞を補ったりするのとともに、日付を UTC から JST に変換したりしています。

スクリプトの設定は以上です。最後に、kintone が Webhook を送信する先である HTTP トリガーの設定を行います。

f:id:dsstsukky:20170210175537j:plain:w450

パッケージ版の DataSpider の場合は上記設定でお終いですが、DataSpider Cloud は管理画面でも設定を行い、ここに表示される URL にクエリパラエータ認証を加えたものが Webhook で指定する URL となります。

f:id:dsstsukky:20170210182355j:plain:w450

この URL を kintone 側の Webhook URL として設定します。

f:id:dsstsukky:20170210182011j:plain:w450

以上で完了です。

動かしてみよう

kintone の画面でデータを入力、保存します。

f:id:dsstsukky:20170210174132j:plain:w450

すると、携帯がブルブルっと震えます。

f:id:dsstsukky:20170210174251p:plain:w300

見事に kintone に登録された内容が綺麗に整えられて LINE まで届きました。

大して難しいことをやった訳ではないのですが、自分が作った仕組みによって LINE メッセージが飛んでくるとうれしいですね。

宣伝

この超楽しい kintone の Webhook と DataSpider Cloud の組み合わせは「DataSpider Cloud 全国セミナー ~kintone 編~」にてご紹介させていただきます。少しでも興味を持っていただいた方は是非足を運んでいただければと思います。

DataSpider Clous 全国セミナー ~kintone 編~

ノンプログラマー向けイベントを開催してみて

去る 1/20 にヤフーさん、サイボウズさんと共催で「カフェで学ぶ、3つのサービスを一度に体験!ノンプログラマー向けハンズオン」というイベントを開催しました。 f:id:dsstsukky:20170129113002j:plain

開催に至った経緯

サイボウズさんとは以前から仕事でも親しくさせていただいていましたが、ヤフーさんとは Mashup Awards をキッカケにこのところお会いすることが多くありました。名古屋のハッカソン時にお話を持ちかけたところ「是非やりましょう!」と快諾いただいたため、まずはやってみましょう、ということで第1回を開催させていただきました。

今回、私がこだわったポイントの一つに「ノンプログラマー向け」というのがありました。ここ2年 Mashup Awards をはじめとするいくつかのハッカソンイベントや kintone Café のようなイベントに参加しているのですが、参加者の多くの人がエンジニアでありもっとより多くの知識や情報を得るべきである営業やマーケの人が圧倒的に少ないと感じていました。

自分自身が営業でありながらイベント参加で得たものが凄く多いため、これを世の中の多くの人に感じて欲しいという思いもあり「ノンプログラマー向け」というのをタイトルにも入れて開催してみました。

イベントの様子

今回の会場は「スタートアップカフェ大阪」です。関西大学梅田キャンパスと同じビルにあり、各線梅田駅から5分以内とアクセスも抜群です! f:id:dsstsukky:20170129111906j:plain

会場の広さとスタッフの人数を考慮して 20人を定員としていたのですが、あっという間に満席になっていました。申込みを管理してくださったスタートアップカフェの方に聞いたところ、キャンセルがでてもすぐに埋まってしまっていたそうで、「ノンプログラマー向け」というキーワードが良かったのか、他の要因だったのかは要調査です。

まずは皆さんの緊張をほぐすためにアイスブレイクということで、配ったカードを使った自己紹介で参加者の皆さん同士で打ち解けていただきます。(写真は説明をする寸劇の図) f:id:dsstsukky:20170129115957j:plain

皆さん打ち解けていただいて席替えも終わったところで、早速ハンズオンが始まります。

kintone ハンズオン

最初はサイボウズ 竹内さんより kintone のハンズオンです。 f:id:dsstsukky:20170129120036j:plain

ドラッグ&ドロップでアプリができることに皆さん感動されていました。更に、kintone を導入したいと思っていた方も参加されており、操作の簡単さを知っていただけた良い機会になったと思います。

DataSpiderハンズオン

続いて、私からは DataSpider のハンズオンです。(写真は無いので資料を) f:id:dsstsukky:20170129114606j:plain

今回の最終ゴールは Instagram のいいね!数を取得して、kintone を使ってグラフ表示するということです。DataSpider は myThings から受け取ったデータを kintone が受け入れられる形式に変換して渡してあげるというところです。

DataSpider の機能としては比較的難しい(と思われる)部類の REST アダプタや HTTP トリガー を使うのですが、今回は対象の方が非プログラマーということもあり、全てを設定していただくのではなく雛形を予め作っておき、穴埋め式で設定していただくことにしました。 f:id:dsstsukky:20170129114451j:plain

とはいえ、やはり用語が少し小難しいところもあって多少苦労される方もいらっしゃって、少し時間オーバーしてしまいました。

myThings ハンズオン

最後はヤフーの清土さんから myThings (Developers) のハンズオンです。 f:id:dsstsukky:20170129120106j:plain

まずは簡単に体験していただくために、LOHACO ダッシュボタン なるものを作成してみます。 その後、DataSpider を呼び出して、最終的に kintone でのグラフ表示までを確認します。

myThings はガイドが出てくるのが凄く好評だったように思います。 f:id:dsstsukky:20170129115941j:plain

まとめ

ハンズオン終了後は、30分ほど雑談&質問タイムです。

参加者の方にお話を伺ってみると、「kintone を導入したいと思っていたけど触る機会が無いのでありがたかった」という声や「普段はインフラばっかりやっているので、アプリを気軽に体験できると思ってきた」というご意見があり、当初の目的を少しは達成できたのかなと思っています。

一方で申込みがすぐ満席になった割に当日の出席率が低く、金曜日の19時~22時というのは少し考え直したほうが良いかななど反省点も残ります。

とはいえ、今までと違ったスキームで新しい層にアプローチするというチャレンジができ、ある程度の成果もあったのでまずは良かったかな、と思っています。次の企画を練るのが楽しみです。

ノンプログラミングで作る LINE Bot

ご存じの方も多くいらっしゃると思いますが、LINE Bot Awards というイベントが開催されます。 botawards.line.me

弊社アプレッソも API 提供パートナーとして協賛させていただくことになりました。

「LINE Bot を作ってみたいけど、プログラムが書けない・・・」そんな方のために、DataSpider を使ってノンプログラミングで LINE Bot を作る方法をお届けします。

事前準備

LINE Bot を作るためには、大まかに言うと以下の作業が必要です。

  1. LINE Developers で Bot 用アカウントを作る

  2. Access Token を取得する

  3. User ID を取得する

  4. エンドポイントを指定する

  5. Bot アプリケーションを開発する

1~3 の作業は先輩である脇野さんが以前書いてくれたので↓の記事を参考にしてください。 ちなみに、脇野さんが使ったのは「Push Message API」というプッシュ型でメッセージを送信する API です。単純に自動返信してくれる Bot を作るだけではなく、プッシュ通知を活用してスケジュールによる配信の仕組みも作ると更に面白いものになるかもしれませんね。 qiita.com

今回はノンプログラミングで Bot を作るということで、4~5 を DataSpider を使って作っていこうと思います。 f:id:dsstsukky:20161226081142p:plain

Webhook の設定

LINE Bot は LINE developers で指定したエンドポイントあてに Webhook でメッセージが送信され、それに対して Reply Message API を使って返信をします。DataSpider では HTTP トリガーを使ってエンドポイントを作成します。

では、まずはじめに HTTP トリガーででメッセージを受信する仕組みを作ってみましょう。作るスクリプトは以下の通りです。

f:id:dsstsukky:20161226085203p:plain

XML 変数(入力変数)を作成し、受信したデータを XML出力でファイルに書き出します。 では、このスクリプトをサービス化し、HTTP トリガーの設定しましょう。

f:id:dsstsukky:20161226085652p:plain:w300 f:id:dsstsukky:20161226085827p:plain:w300

続いて、HTTP トリガーで発行された URL を LINE developers の Webhook の URL に指定します。

f:id:dsstsukky:20161228053841p:plain:w300

これで設定は完了です。では早速自分のスマホからメッセージを送ってみましょう。 まだ Reply の設定をしていないので特に返事は帰ってきませんが、XML 出力の設定をしていたので XML ファイルが出力されているはずです。 出力された XML ファイルを開いてみるとこんな形で出力されています。

f:id:dsstsukky:20161226091825p:plain

実際に送られてきている情報は json 形式なのですが DataSpider では内部的に XML に変換しており上記のように出力されています。このうち重要な部分3箇所にわかりやすいように赤線を入れました。上から順に

 「repleyToken(返信時に使う)」

 「userId(送信者ごとに振られる一意のID)」

 「text (実際にユーザーから送信されたメッセージ)」

です。これらは後ほど使います。

ここまでで、ユーザーが送信したメッセージを DataSpider が受け取っていることが確認できました。

Reply Message API の設定

それでは、続いて Bot の応答(Reply Message API)の設定の行います。

先程受信することはできましたが、どうやって返事を出せばよいのでしょうか?

LINE の API Referenceを確認してみます。

f:id:dsstsukky:20161226130910p:plain:w400

これを読み解くと・・・ f:id:dsstsukky:20161228054133p:plain:w650 といった感じでしょうか。

次に進む前に json の部分のみテキストにして保存しておきます。(ここでは linereply.json というファイル名で保存したと想定します)

では、REST アダプタを使ってこれらの設定を行っていきましょう。それでは、DataSpider のスクリプトキャンバスに RESTアダプタ(POST)とMapping アイコンを配置しましょう。

まず、REST アダプタから設定します。 接続先(グローバルリソース)では接続先 URL の指定をします。

f:id:dsstsukky:20161226144459p:plain:w350

続いて、[ヘッダ設定]でリクエストヘッダの設定をします。({ENTER_ACCESS_TOKEN}は自分のアクセストークンに置き換えてください)

f:id:dsstsukky:20161226140617p:plain:w350

その後、[リクエスト設定]でデータの入力元として先程保存した json ファイル(linereply.json)を指定します。これは実際の入力データを指定している訳ではなく、入力データのスキーマ情報を指定しているイメージでお考えください。 f:id:dsstsukky:20161226145206p:plain:w350

ここまで来たら REST アダプタは完了して閉じ、続いて Mapping アイコンを開きます。

先程[リクエスト設定]で json ファイルを読み込んだことにより、「出力先」にスキーマ情報が定義されていることを確認します。

f:id:dsstsukky:20161226150232p:plain:w350

続いて、「入力元」で仮スキーマの作成を行い、「スキーマの読み込み」で Webhook の設定 の時に出力された XML ファイルを指定します。 これにより、「入力元」「出力先」それぞれのスキーマの定義が行われました。

f:id:dsstsukky:20161226150835p:plain:w600

上記の状態になったことを確認後、出力先スキーマに対して以下の作業を行います。

  1. スキーマ定義の下の方の element を削除します。

  2. 「object」「array」「text」と書いている箇所については、「単一行文字列定数」アイコンにてそれぞれ「object」「array」「text」と入力し、下図の通り出力スキーマにリンクを張ります。

  3. 「メッセージ」と書いている箇所は、「単一行文字列定数」アイコンにて送信したいメッセージの中身を指定します。

  4. replyToken は入力元から直接出力先にリンクを張ります。

ここまで設定を行ったものが下の画像です。 f:id:dsstsukky:20161226153856p:plain

あとはお作法通り、[Start]から[End]までプロセスフローを繋げて完成です。 f:id:dsstsukky:20161226154515p:plain

試してみよう!

では、早速自分のスマホを使ってメッセージを送ってみましょう!

f:id:dsstsukky:20161228053316p:plain:w300

う~ん・・・ 当たり前ですが、1つしか返事のパターンを設定していないので何を言っても「こんにちは」しか返ってきませんね。これでは Bot とは言えません・・・

少なくとも条件分岐を入れて送った内容によって返答が変わるようにしたいですが、長くなってきたのでそれはまた次回にお届けしたいと思います。

ソフトウェア営業に技術力が必要な3つの理由

本記事は アプレッソAdvent Calendar 第9日目の記事にするつもりで書いていたものです。

qiita.com

当初はこちらを公開する予定でしたが、他に書きたいことができてしまったのでお蔵入りとなっていたものです。 せっかく書いたものですし、世の中の多くの営業マンに対して発信したいことでもあったので公開させていただくことにしました。


営業に求められるスキル

ソフトウェア業界の営業にとって大切なスキルはどういったものでしょうか?

「コミュニケーション力」「業務知識」「提案力」など、人によって答えは異なると思いますし、正解は1つではないと思います。

今回はその中でも「技術力」についてお話したいと思います。

※決して「技術力」が一番大事だと思っているわけではありません。

「営業には技術力は必要ない!」「営業は技術を持ったエンジニアをアサインしたり段取りすることが仕事」とおっしゃる方もいらっしゃるとは思います。

私もデモや製品紹介のために技術力が必要だと言っている訳ではありません。 (それぐらいはメーカーの営業ならできて当然です)

では、なぜ私が技術力が必要だと思うのか? 理由は大きく3点あると思っています。順にお話したいと思います。

製品を作る

まず 1つめの理由は「製品を作るため」です。

製品の機能を理解しお客様の課題に対する解決策を提案する、これは営業として当然できないといけないことです。

では、お客様の求めることが自社の製品ではできない場合、どうしたら良いでしょうか。 私が SIer の営業であればスクラッチ開発で補う、商社の営業であれば解決できる商品を探してきて提供する、それで良いと思います。

しかし、私はソフトウェアメーカーの営業です。したがって、「お客様の求めるものを正しく把握し、開発にフィードバックする」というのがとても重要な仕事です。

お客様が「こんな機能が欲しい!」と言ってる場合、営業は「その機能があると何故嬉しいのか?」「他の機能では何故いけないのか?」を正しく把握し、開発に伝える必要があります。 (このあたりの話は去年土岐さんが書いてくれましたので、詳しくは触れません)

これができないと有名な↓の風刺画のようなことになります。 f:id:dsstsukky:20161220200211g:plain ということで、「製品を作る」ためには営業が技術を理解していることはとても重要になります。

社内を牽制する

2点目は「社内を牽制する」ということです。 こう書いてしまうととても感じが悪いですが、営業・開発間にかぎらず常に社内で刺激し合える関係というのが健全な組織だと思います。

ソフトウェアメーカーで仕事をしていると、当然のことですがそのソフトウェアに関しては自分たちが一番詳しくなります。そのため、お客様が自身の意図した通りにソフトウェアが動かない、と言ってきた場合には「お客様の使い方が理解できていないからだ」などとお客様の言っていることを疑いがちです。(もちろん、そういうケースもあります)

営業は社内ではお客様に一番近い場所にいます。そのため、お客様の状況を一番正しく把握できている可能性が高いです。

しかし、技術的なことが全くわからないと、お客様の言うことを社内へ、社内の開発・技術メンバーの言うことをお客様へ、そのまま伝えることしかできないため、伝言ゲームとなり結果として認識の齟齬が生まれ得ます。

ここで営業が技術的なことを理解できていると、

  • お客様の言ってる情報は正しいのか?
  • 社内の開発・技術が言っていることはお客様への回答になっているのか?

を精査できるためトラブルを未然に防ぎ、早期の問題解決に繋がります。

先程書いたように 開発=>営業 の間でも同じことが言えると思っています。営業が行っている活動が適切なのか、もっと良い販売方法・提案方法があるのではないか、というのを開発側が助言できる組織はとても強くなると思います。

顧客の課題を発見する

最後になりますが、これが一番大きな理由になります。 「お客様自身が気づいていない課題を発見する」という点が一番重要だと思います。

1番目の話とも通じる部分はありますが、「データ連携をしたいです」と言っているお客様に DataSpider を買ってもらうことは簡単です。 (「簡単ならもっと売り上げ伸ばせ」とか言わないでください・・・)

営業の本当の価値は「こんなところがデータ連携できるとこんなに便利になるのか」「言われてみればこんなことで無駄に時間を取られていたんだ」という、お客様自身が気づいていなかった課題に気づき、気づかせてあげることにあると思います。

これをやるためには、お客様の業務を良く理解することも当然必要ですし、その課題を解決するための方法についての知識が不可欠になります。

最後に・・・

今年はハッカソンやハンズオンなど多くのエンジニア向けのイベントに参加しました。

「技術より営業の方が楽しいと思って営業をやっているのになんでこんなにイベントに出てるんだろう?」「技術的な知識が深まるとなんでこんなに楽しいんだろう?」と思い、振り返りながら書いてみました。

偉そうなことをたくさん書いてしまいましたが、アプレッソの営業はこんな気持ちで日々活動しているんだ、ということを知っていただけますと幸いです。