nkjmkzk.net

powered by Kazuki Nakajima

Archive for the ‘appexchange’ tag

Lightningコンポーネント開発のケーススタディ

2015/5/12にSalesforce1 Lightning Fast Seminarが開催され、その中でコンポーネント開発のケーススタディについてお話ししました。

このコンテンツを前撮りしたビデオを共有したいと思います。
アジェンダはこんな感じです。

Chart.jsのデモ

  • サンプルページを用いたイントロダクション
  • アプリケーションビルダーでのページ作成デモ
  • Salesforce1へページを表示

Cellのデモ

  • サンプルページを用いたイントロダクション
  • 開発者コンソールでのページ作成デモ
  • Auradocsでのリファレンス確認方法説明

家計簿のデモ

  • イベントを使ったコンポーネント同士の連携
  • Lightningアプリケーション開発にかかった工数

Enjoy.

without comments

Written by 中嶋 一樹

5月 12th, 2015 at 10:20 pm

Excelライクな表形式フォームを埋め込むLightningコンポーネント「Cell」をリリースしました

Salesforce上の複数レコード一括で更新したい場合、どのような方法があるでしょうか?

  • データインポートウィザード
  • データローダー
  • SOAP API
  • Bulk API

Geekなみなさんであればどれでもできそうですが、普通の人がおこなうには敷居が高い。
また、できるのはできるけど、データインポートウィザードなどは10件程度のデータを毎日のように扱う場合には面倒。
APIはわざわざプログラム組むまでやるのでは面倒。
ということで何かと面倒です。

そんなとき、Excelみたいな表形式でデータを編集して、それをそのまま保存できれば便利ですよね。
Cellはそんなオペレーションを可能にするLightningコンポーネントです。

使い方は簡単。

まず組織でLightningコンポーネントを有効にします。

次にCellをインストールします。インストールはこちらのappexchangeページからどうぞ。

開発者コンソールから新しいLightning Applicationを作成し、Cellを組み込みます。もっとも単純な組み込み方法は、下記のようなLightning Applicationを作成することです。

<aura:application>
  <c:Cell sobject="管理したいオブジェクト名" fields="表示する項目をカンマ区切りで" loadData="true" />
  <c:CellSaveButton />
</aura:application>

こちらの記事を参照してアプリケーションプルダウンメニューからこのLightning Applicationにアクセスできるようにします。

以上です。こんなLightning Applicationが作成されたら完成です。下図の例ではsobjectにとあるカスタムオブジェクトを指定しています。

スクリーンショット 0027-04-17 10.20.27

まじで簡単ですね。

ロードするデータを絞りこみたい場合は、下記のようにSOQL文をqueryにセットすることで可能です。

<aura:application>
  <c:Cell sobject="管理したいオブジェクト名" fields="Name, MyField1__c, MyField2__c" query="select Name, MyField1__c, MyField2__c from MyObject__c where MyDate__c = THIS_MONTH" />
  <c:CellSaveButton />
</aura:application>

各セルの値を編集してSaveボタンを押せば一括でデータが更新されます。
また、この表は右クリックでExcelと同じようなメニューがでます。Remove Rowで行を削除すると、そのデータをデータベースから削除することもできます(確認プロンプト付き)。

スクリーンショット 0027-04-17 10.23.21

単体でデータ入力・更新ツールとしても使えますが、CellはLightningコンポーネントです。
様々な要件のアプリに組み込んで利用することができます。そのあたりはスタートガイドの「コンポーネント間の連携」で紹介していますのでチェックしてみてください。

アプリの中に埋め込んで連携させている例はこんな感じ。詳しくはスタートガイドを。

スクリーンショット 0027-04-15 13.50.11

Enjoy.

without comments

Written by 中嶋 一樹

4月 17th, 2015 at 10:37 am

今さらきけない環境ハブ(Environment Hub)

appexchangeパートナー様はパートナー開発組織、ライセンス管理組織、Trialforceソース組織など多くの組織を活用してアプリを開発していきます。

環境ハブはこれらの組織を作成し、かつ簡単にSSO(シングルサインオン)の環境をセットアップできる機能です。また、Usage Metricsといった他のappexchangeパートナー様向け機能において環境ハブは必須となっており、appexchangeアプリを開発するにあたり欠かせない機能です。

環境ハブがリリースされたのは一年以上前なのですが、いよいよ必要性が高くなってきましたので速習ガイドを作ってみました。

今さらきけない環境ハブ from Kazuki Nakajima

よければ活用ください!

without comments

Written by 中嶋 一樹

3月 17th, 2015 at 2:23 pm

リーン・スタートアップとappexchange

僕はエリック・リースが書いたリーンスタートアップという本が出版された2年半ほど前、この本を読んですぐに「この考え方はForce.com, appexchangeとの相性が抜群だな」と感じました。

その後しばらく適当なチャンスがなかったのですが、今回12/4に開催されたSalesforce Would Tour東京にて、とあるセッションを担当することになり、「はっ、これは、」と思い出し、ようやくリーンスタートアップとForce.comというテーマでプレゼンをすることができました。その内容をこちらにまとめておこうと思います。

リーン・スタートアップとは?

「限られた滑走路の中で、無駄をなくして成長のエンジンを最速でチューニングするための方法論」

runway

1行で言えば、これだと思っています。

リーン・スタートアップは元々は「ジャストインタイム方式」や「一個流し」に代表されるトヨタ生産方式に端を発しています。トヨタはこれらの生産方式で高効率に高品質な車を量産することに成功したわけですが、それ生産方式がリーン生産方式としてMITで焼き直され、さらに製品の製造のみならずスタートアップを成功させるための方法論としてまとめられたのがこのリーン・スタートアップです。

リーンというのは「贅肉をそいだ」とか「無駄をはぎとった」という意味で用いられており、スタートアップがおこなう努力からとにかく徹底的に無駄を省くことがこの方法論の幹になっています。

著者のエリック・リースは、スタートアップとは「とんでもなく不確実な中で新しい製品やサービスを生みださなければいけない人的組織」と定義しています。さらにつけ加えれば、とんでもなく不確実な中でも、金と時間は確実に限りがある環境、だと思います。大企業であれば一つの部門で多少まわり道をしたとしても、事業が揺るぐことはそうそうありませんが、スタートアップは大企業に比べて財政的、時間的余裕が桁外れに少ないことがほとんどで、まわり道はGame Over(倒産)に直結します。

そんな中、無駄な活動をすべて省き、限られた時間内で離陸できるように成長エンジンの加速に集中することがリーン・スタートアップの核心であると僕は理解しました。

挑戦の要

起業する人であれば、誰しもビジョンがあり、そのビジョンを実現させるための仮説を明示的あるいは暗黙的にでも持っているはずです。この仮説のことを挑戦の要と呼んでいます。この仮説が事実となれば事業は成功する、ただしそうでなければスタートアップは戦略の変更を余儀なくされる、そういうものが挑戦の要です。

リーン・スタートアップのファーストステップはこの挑戦の要を、出来る限り分解した形で書き出すことです。

フィードバック・ループ

feedback loop

構築 – MVP

挑戦の要が設定できたら、いよいよ製品・サービスの開発を開始します。多くの人は製品を最初に公開する際に「市場に失望されたくない」と思っているのではないでしょうか。そうなるとビジョンをより完璧に実現するためのかなりリッチな製品を開発する必要がでてきます。

しかし、リーン・スタートアップでは必要最低限の製品(MVP – Minimum Viable Product)をリリースすることを提唱しています。これは、さんざん機能を詰め込んだ製品をリリースした場合、最もベースとなる仮説が間違っていたらそのすべての苦労が水の泡、つまり無駄に終わってしまうからです。

MVPの考え方とは、あくまでも挑戦の要を検証する単位で製品をリリースしていき、仮説をひとつずつ検証しながら進んでいくことを意識したものです。仮説が誤っているかもしれない状況でその仮説に基づいてさらなる仮説を検証するのは「無駄」という考え方です。

計測 – コホート分析・スプリットテスト

MVPをリリースしたらその結果を入手し、判定しなければなりません。仮説はあっていたのか、間違っていたのか。この製品で成長のエンジンはチューニングされたのか、されなかったのか。これを正しく判断するための方法をリーン・スタートアップでは「革新会計」と呼んでいます。

革新会計のミソは、かくあるべき目標数値を定め、現状を真摯に観察することにあります。あたり前の話のようですが、実際の現場では全体の右肩上がりの数字にごまかされ、真に成長を意味する数字が観察されていないことが多々あると著者は説いています。

そして現状の観察には「コホート分析」なる手法が多くの場合適切なパフォーマンスを示すことができるとされています。コホート分析とはある一定セグメントを抽出し、そこだけでの数値をまとめていく分析手法です。もっと簡単に言えば、累積ユーザー数をしめすグラフではなく、単月での増加ユーザー数をしめすようなグラフがコホート分析、ということになります。これをみることで多くのITスタートアップで計測すべき、ユーザーの増加率をつぶさに観察することができ、累積数値の増加のような虚構の数字に惑わされることがなくなる、というわけです。

また、MVPをリリース後に製品を最適化・拡張した場合に、その拡張自体のフィードバックを純粋に計測するにはスプリットテストが用いられます。これは特定顧客にのみ新機能を提供し、機能を提供しなかった顧客グループとの反応差分を確認して、製品拡張のインパクトをテストするというものです。

学習 – 製品最適化・戦略転換(ピボット)

フィードバック・ループの最後のステージでは、計測で得られた結果をもとに製品の最適化が必要かどうか、あるいは仮説が正しかったかを判断し、場合によっては戦略から転換しなければならないかを決断します。


さて、長くなりましたがフィードバック・ループの一連のステージを説明してきました。 ここで重要なのは、このループをできる限り速くまわることです。

例えばあるスタートアップの滑走路が残り12ヶ月だったとします。そのときにこのフィードバック・ループを1周するのにもし10ヶ月かかってしまい、さらにその学習結果ピボットが必要だと判断された場合、そのスタートアップはおおよそ詰んだものと考えられます。もし、2ヶ月で最初の1周をまわっていたら、あと5回は最適化とピボットの余力が残っています。なのでこのループを速くまわることがスタートアップが成功するためには不可欠である、というのがリーン・スタートアップの極めて重要なポイントです。

Force.com + appexchangeでフィードバック・ループをどうまわすか?

MVPの開発

構築のステージをまずみていきましょう。 この記事を呼んでいただいているほとんどの方にとってMVPとはなんらかのアプリ開発(とりわけクラウド型の)を意味すると思います。その場合、最終的にユーザーに価値をもたらすのはアプリの機能であって、インフラではないはずです。

Force.comは「フルマネージド」なアプリケーションPaaSです。優劣の問題ではなく、特性として、Force.comはユーザーが自由にインフラ構成を変えれるようなPaaSではなく、冗長性、拡張性、対災害、セキュリティ(インフラの)といった面において完全にSalesforceが面倒を見てくれます。逆にユーザーがこれをカスタマイズすることはできません。

ただ、前述の通りスタートアップがユーザーに直接価値を提供できるのはアプリの機能であり、限られた金、時間、人を投資するのはアプリであるべきでしょう。そういう観点ではフルマネージドなForce.comはその他面倒なことをスタートアップから取り去ってくれるうってつけのプラットフォームと言えます。

また、Force.comはいわずもがなクイックにアプリを開発することに非常に長けた開発環境です。それは下記3点から導かれると僕は考えています。

  • ノンプログラミング開発
  • モバイルUI自動生成
  • API自動生成

Force.comはそもそもプログラミングをおこなわずしてアプリを作成することができるという点で極めてユニークなPaaSです。ドラッグ&ドロップと設定作業だけでかなりパワフルなアプリを作成することができます。要件がハマれば、いかにHTML, js, php, javaなどにとんがったプログラマーでも、このノンプログラミングの開発スピードにはちょっとかないません。

しかもこのノンプログラミングで開発されたアプリは自動的にモバイル対応します。iPhoneやAndroid端末でアクセスするとあら不思議、モバイルに最適化されたUIがあらわれます。シングルコードであらゆるデバイスに対応するレスポンシブはHTML5界隈では欠かせない手法になっていますが、このノンプログラミング開発では「レスポンシブ」という言葉さえ意識する必要がありません。勝手にモバイル対応UIが生成されるのです。

s1

ただし、こういったUIフレームワークを使うということはある程度規約・制約に縛られることになります。なのでUIに細かな要件が続出してきた場合、ノンプログラミング開発だけで対応するのは難しくなるというもの事実です。

ここで重要なのは、今作っているのはMVPであって、製品の最終形ではないということです。

あくまでもMVPは仮説を検証するものであり、それをベースに顧客からフィードバックを得ることが最大の目的です。そういう意味では、UIフレームワークを使って素早く基本機能を構築し、それをベースにユーザーから正しいUIの姿をヒアリングしてから最終UIの開発に着手しても遅くはないはずです。もしかしたら、「このままでOK」というケースもあり得ます。そうした場合にガッツリUIをコーディングしていたら「無駄」になっていまいます。常に無駄を最小限にすることを意識するのがリーン・スタートアップです。

そして最終的に完全にスクラッチからUIを開発する場合、Force.comはそのまま利用することができます。

現在モダンなHTML5アプリはSPA (Single Page App/Architecture)で設計されていることが多く、こういったアプリはjavascriptからバックエンド(多くの場合クラウドデータベース)にajaxコールをおこなうため、バックエンド側はAPIの整備が必須になります。

spa-api Force.comはデータベースのテーブルを作成した時点で自動的にそのテーブルに対するREST APIが有効になります。つまり基本的なデータベース操作であれば、APIは勝手に作成されるため開発者が作る必要はないのです。そのため、スタートアップ企業はこういったバックエンド側の開発作業から解放され、差別化要素となるUIに開発リソースを集中させることができます。資源が限られたスタートアップ企業であればこういった恩恵は大きいと思います。

CRMによるコホート分析とappexchangeによるスプリットテスト

コホート分析とは、売り上げやユーザー数の累計データではなく、ある一時点での新規売り上げ、新規ユーザー数を定期的に観察する分析方法で、スタートアップの成長エンジンが正しくチューニングされたかどうかを計測するのに有用な分析手法だとされています。

Force.com上でアプリを開発し、appexchangeにアプリを公開する場合、通常1ユーザー15000円/月のSales Cloud(CRM)のライセンスが2ユーザー分無料で提供されるのですが、このCRMを利用するとコホート分析をすぐにおこなうことができます。というのも、appexchangeとはアプリケーションを公開するマーケットプレイスであると同時に、誰がアプリのデモを試したのか、誰がインストールしたのか、誰がアクティベートしたのか、というような情報をフィードバックする仕組みを備えており、このフィードバックが自動的に先ほどのCRMに入ってくるのです。

appexchange feedback

つまりappexchangeにアプリを公開すると黙っていてもフォードバックのデータが蓄積され、それをCRMのレポート機能がすぐにコホート分析することができます。

また、appexchangeはスプリットテストをおこなう仕組みも備えています。スプリットテストとは、個別の機能拡張がユーザーにどのような影響を与えたのかを正確に計るために、1機能ごとにその新機能を組み込んだバージョンと組み込んでいないバージョンを同時提供し、1つのユーザーグループは新機能あり版、もう一つのユーザーグループは新機能なし版を使ってもらい、その反応の差分をみるという計測方法です。

split test

スプリットテストをおこなうには複数のバージョンを同時提供する必要がありますが、通常Webサービスは同じドメインで提供されるため、提供元は一カ所となり、ユーザー毎にバージョンを切り替えるのは簡単ではありません。

しかし、Force.comはWebサービスであるものの、ユーザー毎に専用の環境を提供するマルチテナント方式を採用しています。このため、開発者は能動的にユーザーをグループ分けして異なるバージョンを提供するということが簡単にできてしまいます。そして先ほどのコホート分析でそれぞれのユーザーグループの反応を計測することができるわけです。

ちなみに、Force.com上で開発したアプリを無償で提供する場合、appexchangeへの公開を含むすべてのプロセスで一切費用はかかりません。出展費用も、プラットフォーム費用も。全く出費することなくMVPを開発してマーケティングをおこなうことができるのです。ちょっとびっくりするようなスキームですが、ほんとの話です。

製品最適化と戦略転換(ピボット)

このステージではプラットフォームは利用しません。これまでに計測で得られた結果をもとに、組み込んだ新機能が正しかったのかどうか、製品を修正することが必要なのか、あるいは仮説・戦略そのものがあっていたのかどうかを見極めて、必要に応じて最適化と転換をおこなう決断をおこないます。


いかがでしょうか。

冒頭にも書きましたが、僕はリーン・スタートアップを知ったときにこの考え方はForce.comでの開発哲学に通ずる部分が多く、Force.comとappexchangeを利用することで、手作りする部分を少なくし、フィードバックループを速くまわすことができるはずだと考えています。リーンスタート・アップのコンセプトにSalesforceのアプリケーションPaaSは最適なお供でだと思います。

summary

ご興味をもたれた方はSalesforce丸の内オフィスで毎月開催しているappexchangeスタートアップトレーニングに是非参加してみてください。

without comments

Written by 中嶋 一樹

12月 8th, 2014 at 11:34 am

すごいアンケート2の新機能

すごいアンケート2の新しいバージョンがリリースされました。パッケージインストールURLはこちらです。今回のバージョンアップで搭載された新機能をご紹介します。

各ゲスト専用のアンケート回答URL

各ゲスト毎に専用のアンケートURLが生成されるようになりました。このURLからアンケートページにアクセスすると、名前・Email等ゲスト情報に関する質問は自動的に隠されます。ゲストは自身の情報を入力する必要がなくなりますが、回答は自動的に対象ゲストに紐づけられます。

このURLはゲストタブで各ゲストをクリックして表示されるゲストの詳細画面で確認できます。あわせて、メールで各ゲストにアンケートURLを送信する機能ではこのゲスト専用のURLが送信されます。

url_for_guest

send_survey_link

ゲスト登録ページ

ゲストが各アンケートに事前にサインアップするページを用意しました。これはイベント等で事前にサインアップがおこなわれる場合に利用することができる簡易なゲスト登録機能です。名前やEmailといった個人情報に加えてサインアップ時に収集しておきたい情報を事前アンケートとして同時に収集することができます。

enable_guest_signup

guest_signup_page

インストール時のセットアップガイドをパッケージに同梱

すごいアンケートはインストール後にサイトの設定、権限セットの割り当てというセットアップが必要ですが、これをスムースにおこなえるような初期セットアップ画面を用意しました。インストール後にアプリにアクセスすると自動的にこのセットアップ画面が表示されます。別途マニュアルをダウンロードせずともアプリの中で必要なセットアップを確認して実施することができます。

getting_started

ゲストから取引先および取引先責任者を作成するボタン

ゲスト情報から取引先および取引先責任者を自動的に作成する機能を追加しました。完全名称一致の既存取引先がある場合はその取引先の配下に取引先責任者が作成されます。また、取引先責任者がすでに存在するゲストは右上に取引先責任者へのリンクが表示されます。

create_contact

link_to_contact

新しいアンケート編集ページ

アンケート編集ページがより直感的なUIとなりました。最終的に公開されるアンケートページとほぼ同じUIですので仕上がりを容易にイメージすることができます。

new_survey_edit_page

ブランド設定

アンケートページにロゴを表示することができるようになりました。

branded_survey


加えていくつかの不具合が修正されています。

  • アンケートのプロパティで日付が正しく表示されない。
  • インストール後の初期設定ページが正しく表示されない。
  • ゲストが取引先責任者に紐づかない。

また、今回のバージョンからアンケートのURLが変更になっています。以前までのアンケートURL(旧URL)は、今回のバージョンでは後方互換性のために利用できるようになっていますが、次のバージョンでは利用できなくなる予定です。ご注意ください。

*アンケートURLは今回の変更でかなり長くなっているので、近々URL Shortnerを組み込むようなことを考えています。

デモ環境はこちらのアプリ紹介ページより「テストドライブを利用」をクリックするとアクセスできます。

すごいアンケート on appexchange

Enjoy!

without comments

Written by 中嶋 一樹

9月 4th, 2014 at 10:28 am

Force.comでオブジェクト権限・項目権限に準じたCRUDをおこなうライブラリ

Force.comにおいて、Apexコードはシステム権限で動作するので、実行ユーザーに依らずすべてのデータにアクセスできます。

しかしAppExchangeに公開されるアプリケーションはユーザーに割り当てられたオブジェクト権限・項目権限を遵守する必要がります。そのためにはApexコード内でデータベースにアクセスする際、実行ユーザーにその権限があるかどうかチェックする必要があります。

public with sharing class employee {
    private class sexception extends exception {}

    public void updateEmployee(id, e_id, string e_name, integer e_salary){
        if (!Schema.sObjectType.employee__c.fields.Name.isUpdateable()){
            sexception e = new sexception();
            e.setMessage('Field Name is not updateable.');
            throw e;
        }
        if (!Schema.sObjectType.employee__c.fields.salary__c.isUpdateable()){
            sexception e = new sexception();
            e.setMessage('Field Salary__c is not updateable.');
            throw e;
        }
        employee__c emp = [select Id from employee__c where Id = :e_id for update];
        emp.Name = e_name;
        emp.salary__c = salary;
        update emp;
    }
}

上記のApexクラスでは、employee__cというオブジェクトに対して更新処理をおこなうメソッドupdateEmployee()が定義されています。更新処理(18行目 update emp)の前にSchema.sObjectType.employee__c.fields.Name.isUpdateable()といった形で、フィールド毎に更新権限の有無を確認しています。

このコードは権限チェックにおいて最も原始的な処理方法です。この方法にはいくつか問題があります。

  • DML操作の前に、更新する項目を網羅的に指定してチェックをおこなう必要がある。
  • 一項目をチェックするとガバナ制限のfield describeメソッドの制限(トランザクション内最大100回)に対してカウントされるため、多くの項目がある場合ガバナ制限に抵触する可能性が高い。

上記の問題点を解決するために権限チェックのコードを汎用化・効率化する必要があり、それらをこちらのライブラリにまとめました。

https://github.com/nkjm/scrud

前述の更新処理は、このscrudライブラリを用いると下記のように記述できます。

public with sharing class employee {
    private class sexception extends exception {}

    public void updateEmployee(id, e_id, string e_name, integer e_salary){
        employee__c emp = [select Id from employee__c where Id = :e_id for update];
        emp.Name = e_name;
        emp.salary__c = salary;
        scrud.supdate(emp);
    }
}

チェック処理はすべてライブラリに任せることができ、更新する項目も自動的に検出されるため、明示的に指定する必要がありません。また、項目数に依存せずupdateであればfield describeのガバナ制限に対して一回しかカウントされません。

このscrud.supdate()は引数にオブジェクトまたはオブジェクトのリストをとります。なので実質的にはupdateをscrud.supdateに置き換えるだけでApexコードをオブジェクト・項目権限に遵守させることができます。ちなみに insert / update / delete は下記の通りすべて同じマナーで利用することができます。

  • insert => scrud.sinsert()
  • update => scrud.supdate()
  • delete => scrud.sdelete()

また、updateに関しては更新できない項目がオブジェクトに含まれていた場合の挙動を選択することができます。デフォルトでは更新できる項目のみが更新され、更新できない項目が含まれていてもエラーにはなりません。更新権限のない項目があった場合にオブジェクトの更新を中止して例外を発生させるには第二引数にtrueを指定します。

scrud.supdate(emp, true)

他にも、下記のようなメソッドが用意されています。

// 対象オブジェクト・項目への参照アクセス権限の有無を確認する
scrud.isAccessible(sObject object)
scrud.isAccessible(sObject object, list&lt;string&gt; fields)

// 対象オブジェクト・項目へアクセス権限がなければ例外を発生させる
scrud.requireAccessible(sObject object)
scrud.requireAccessible(sObject object, list&lt;string&gt; fields)

// 対象オブジェクトで権限のある項目をリストで取得する
scrud.getCreateableFields(string objectName)
scrud.getAccessibleFields(string objectName)
scrud.getUpdateableFields(string objectName)
scrud.getUpsertableFields(string objectName)

// 対象オブジェクトで権限のある項目をカンマ区切りの文字列で取得する(Dynamic SOQLに便利)
scrud.getCreateableFieldsInCSV(string objectName)
scrud.getAccessibleFieldsInCSV(string objectName)
scrud.getUpdateableFieldsInCSV(string objectName)
scrud.getUpsertableFieldsInCSV(string objectName)

Secure Codingのお役に立てば幸いです。

without comments

Written by 中嶋 一樹

1月 20th, 2014 at 4:50 pm

Posted in Uncategorized

Tagged with , ,

Evernote for Salesforceの概要とセットアップ方法

evernote_130930125052

Evernote for Salesforceとは?

Salesforce.comの顧客管理をはじめとするアプリケーションでは、「顧客」「商談」といった会社にとってとても重要なオブジェクトを中心として、そこから関連する情報がつながって保存されていきます。

例えば「顧客」に関連する情報には、担当者、商談、問い合わせ、契約、注文といった情報が紐づきます。

スクリーンショット 2013-10-17 5.29.12 PM

そしてEvernote for Salesforceは、メモと非構造化データ(音声・画像・PDF・オフィス文書)などを一切合切保存し、オブジェクトに紐付けていくアプリケーションなのです。

スクリーンショット 2013-10-17 5.29.40 PM

紐付けは手動でおこえるのはもちろん、関連ノートという機能によってEvernoteが自動的に関連性のある情報をオブジェクトにユルく紐付けてくれます。(僕はこの機能がEvernote for Salesforceではキーになってくると考えています)

セットアップ

公式ガイドにもセットアップ方法は記載されているのですが、英語なのと若干セキュリティ上の懸念点があるので少し修正した手順を紹介しておきます。

AppExchangeからパッケージをインストール

Evernote for Salesforceをお手持ちの組織にインストールします。パッケージは下記URLからインストール可能です。

https://appexchangejp.salesforce.com/listingDetail?listingId=a0N3000000B4QSWEA3

注意すべきはステップ2のセキュリティレベルの選択です。「管理者のみへのアクセス許可」を選択します。

evnt_0

ビジネスアクセスコードの入力

アプリプルダウンメニューから「Evernote for Salesforce.com」を選択、Evernote Adminタブをクリック。ビジネスアクセスコードを入力します。

ビジネスアクセスコードはEvernote Businessの管理コンソールの連携タブにあります。

evnt_bac

ページレイアウトの編集

リード、取引先、取引先責任者、商談にて下記の通りレイアウトを変更してEvernoteセクションを作成します。

  • セクションを一列構成で追加してEvernoteと命名

evnt_section

  • そのセクションにVisualforceページ「EvernoteXXXXPage」を追加

evnt_add_vf

  • Visualforceページの高さを488pxに設定

evnt_edit_vf_area

evnt_vf_height

権限セットの作成と割り当て

権限セットを任意の名称(Evernote for Salesforceなど)で作成しユーザーライセンスは「なし」に設定します。

evnt_create_perm

その権限セットに下記Visualforceページへのアクセス権を付与します。

  • Evernote.EvernoteAccountPage
  • Evernote.EvernoteContactPage
  • Evernote.EvernoteLeadPage
  • Evernote.EvernoteOpportunityPage
  • Evernote.EvernoteCallback

evnt_perm_vf

作成した権限セットをEvernote for Salesforceを利用するユーザーに付与します。

evnt_perm_assign

evnt_perm_selected

これでセットアップは完了です。各ユーザーはリード、取引先、取引先責任者、商談のいずれかのタブを選択するとEvernoteセクションにアクセスすることができます。初回アクセス時は自身のEvernoteアカウントで認証をおこなう必要があります。

evnt_get_started

evnt_signin

認証が完了すると下記のようにノートが表示されるようになります。

evnt_show_notes

Enjoy.

without comments

Written by 中嶋 一樹

10月 17th, 2013 at 5:32 pm

すごいアンケートの仕様変更と機能追加

すごいアンケートv4.1 – 1.44を公開しました。このバージョンでは下記の拡張をおこないました。

アンケートサイトのアンケート一覧の表示・非表示が切り替え可能に

従来のバージョンでは常に現在オープンしているアンケートリストが表示されていましたが、今回のバージョンからデフォルトでは指定したアンケート以外表示されないように変更されました。

ただし、カスタム設定の「アンケートサイトにアンケートリストを表示」にチェックを入れると、アンケートサイトの右上に「他のアンケート」ボタンが表示され、このボタンをクリックするとモーダルウィンドウでオープンしているアンケートリストが表示され、選択することができるようになります。また、アンケートIDを指定しなかった場合には、最初にアンケートリストが表示されます。

質問に「回答必須」を設定できるように

アンケートは各質問ごとに「回答必須」を設定できるようになりました。回答必須のアンケートにはわかりやすく「必須」のタグが表示されます。

回答数の増大による不具合の解消

従来のバージョンではアンケートの回答が一定以上増えると、アンケートサイトまたはレポート画面ですべてのレコードを表示できなくなる不具合がありましたがこれを解消しました。

without comments

Written by 中嶋 一樹

8月 5th, 2013 at 1:52 pm

社会にインパクトを与えるクラウドアプリのビジョンと情熱

去る6/17日のAppExchangeカンファレンスにて、掲題のタイトルでプレゼンをおこないました。その要旨をこちらにまとめておきます。

クラウドサービス、使っていますか?会社で。

Dropbox, Evernote, SlideShareは今や誰もが知るクラウドサービス。しかし、多くの企業では利用が禁止されているのではないでしょうか? その理由は下記のようなものでしょう。

  • 外部に情報を保存してはならない
  • 情シスが管理できない
  • プラットフォームとしてセキュリティレベルが低い、または不透明である

IaaSやPaaSといった初期投資削減ソリューションによって、ベンチャーが運営するクラウドサービスは今や星の数ほどもありますが、前述の3社でも超えられない壁(企業システムでの利用)を超えるのは非常に難しいと思います。

一方、ちょっとおこがましいですが、Salesforce.comは「企業で使ってもいい」クラウドサービスとして認知されているのではないかと思います。その理由は10年以上に及ぶ国内外での実績、そして実際プラットフォームとしてセキュリティレベルが極めて高く、多くの厳しいRFI/RFPに対して満足いく回答ができるという点にあると考えています。

Salesforce.comはアプリケーションだけでなく、そのプラットフォームをForce.comとして公開しています。そのプラッフォーム上で構築されたアプリはプラットフォーム側の「セキュアで実証済み」という恩恵をそのまま受けることができます。しかも個別のアプリのセキュリティレベルについては、すべて「セキュリティレビュー」という監査を手作業でおこない、脆弱性の有無をすべからく検査しています。

AppExchangeへのアプリケーション掲載は、Androidのアプリをマーケットプレイスに出すより幾分面倒なプロセスを経る必要がありますが、逆にAppExchangeに掲載されているアプリケーションはすべてSalesforce.comが考えるセキュリティレベルをパスしているということになります。

 

セキュアなクラウドが力を発揮する領域

そのセキュアなForce.comを活用してどのようなビジネスを狙っていくべきでしょうか? 一つの例として医療/介護という分野があると考えています。

一口に医療/介護といっても電子カルテ、レセプト、論文整理、薬剤検索、放射線累線量算出アプリ、診断サポートアプリ等様々なアプリが存在します。

そんな中、新しい価値を生む医療アプリとして株式会社コーネッツさんが提供するSafe HRがあります。これは医療情報をセキュアなクラウドに保存することで医師と看護師などスタッフをつなぎ、これまで不可能だった遠隔地診療等の新しい形に踏み出しています。

このようにiPad + Cloudで新しい、便利、というだけでなく、看護師の負担を軽減しつつ、これまでできなかった診療を可能にする、というのはアプリケーションとして本当にすばらしいことだと思います。

僕はテクノロジーに軸足をおいたエンジニアとしてキャリアを重ねてきましたが、キャリアを積むごとに、単にテクノロジーの深堀りと啓蒙をおこなうのではなく、テクノロジーで世界をどう変えるのか、どう社会に貢献するのかという関心が高くなってきました。

医療は個人的にも大きな関心事であり、Force.comが高い適性を発揮する分野だと思っていました。僕はどのようにしてこの医療の分野でもっとインパクトを出すことができるだろうか、と考えました。

医療の主役は患者/被介護者。彼らの医療の受け方を変えるようなアプリを作れないか、と考えていましたが、Force.comをベースとして考えた場合、彼らに課金することは現実的ではないし、彼らのユーザーアカウントを医療機関に課金することも難しい。

そこで、一旦社会貢献と事業を切り離してはどうかと考えました。

少し話しはかわりますが、Salesforceの社員は年間就業時間の1%を使って非営利社会貢献活動をすることができます。私もSalesforce foundation活動の一環でいくつかのボランティアに参加してきました。乳児院の窓ふき、被災地への救援物資パッキング、養護施設の子供達へのクリスマスプレゼント。

しかし、正直、少し腑に落ちない点がありました。自分の中に感じる潜在的な社会貢献力と、活動にギャップを感じていたのです。僕だけでなく、Salesforce.comの社員はいわゆるITエキスパートです。自分達がおこなうからこそもっと効果的に大きなインパクトを生む、そういう活動があるはずだと感じていました。

 

Pro bono活動

Pro bonoとは、ラテン語で「pro bono publico」に起源を発する言葉で、専門家がその専門能力を発揮して社会貢献活動をおこなうことを意味します。

僕はこのPro bonoというアクティビティを知り、自分のアプリケーション開発の特殊技術、および、エバンジェリストとして人の心にインパクトを与えるという技術、これらを使って非営利社会貢献活動をおこなうことに可能性を感じました。

6月17日、僕はいつものようにプレゼンテーションをおこなう機会に恵まれました。その中で、来場者の皆さんに対してSalesforce.comを活用した社会貢献活動の可能性をお話し、その輪を広げることは、まさに僕にこそできるPro bono活動の一つだと考えました。

 

Salesforce.comの1/1/1モデル

Salesforceには社会貢献活動をサポートするいくつかの仕組みがあります。その一つにNPO向けのライセンス無償提供およびDeep Discountがあります。

この仕組みを利用して、パイオニアとして社会貢献活動を事業としておこなっているのが株式会社ファンドレックスさんです。ファンドレックスさんはSalesforce.comの社会貢献活動向け特別エディションを活用し、NPOが寄付金および寄付金提供者とのコミュニケーションを管理するためのパッケージを提供されており、そのコンサルティングを実施されています。

株式会社ファンドレックスのホームページ

僕自身、NPO向けの特別なライセンス形態に魅力を感じ、悩んでいた課金に関する問題を解決する突破口が見えたように思いました。

そこで、このライセンスを使って利用できるアプリケーションの作成に取りかかりました。

 

みんなの医療記録

バイタルデータをクラウドに保存して看護師/介護士と医師をつなぐというアイデアに着想し、さらに「医療は患者・家族が主役」という考え方を盛り込みました。みんなの医療記録は医療スタッフがForce.comで患者さんの医療記録を保存しつつ、患者、家族がChatterによってこれまでになかったコミュニケーションをはじめることができる、というアプリです。

使い方と機能の概要

  • 医療スタッフが患者およびその家族を登録する。
  • 医療スタッフはタブレットデバイスで患者の検査項目を入力する。検査結果は視覚化(グラフ化)される。
  • 検査結果がしきい値を越えた場合はタイムラインにアラートが出力され、医療スタッフおよび家族はすぐに確認することができる。
  • 検査結果だけでなく、患者の日々の様子、家族の様子を写真とともにタイムラインにアップできる。介護施設の祖父母と離れた場所に住む子や孫、あるいは入院中の患者と家族とのコミュニケーションを活発にする。

複雑な仕組みではありませんが、常に家族の健康状態を把握する、日々の生活に楽しみを生み出す、そして、ふとした医療スタッフ側からの投稿により、気がついたら半年、一年と会う機会のなかった家族が話するきっかけを作る。そんなことを実現できれば、と考えています。

このアプリはリリースするにはもう少し時間が必要ですが、必ず近いうちにAppExchangeに公開しようと思っています。NPOで活用されるシーンを想像すると開発も加速します。

この記事をここまで読み進めていただいた方々にお願いです。

既存のSalesforce.com アプリケーションパートナー様へ

NPO(特定非営利活動法人)向けの特別価格設定を検討ください。AppExchangeの製品紹介ページはNPO向けのディスカウント価格を設定できるようになっています。NPOでは思いがけないユースケースが存在します。意図せずとも、皆様の優れたアプリはそのまま社会に貢献するかもしれません。

草の根開発者の皆様へ

社会貢献を意識したアプリケーションを開発しませんか? Salesforce.comのプラットフォームは開発環境は無償、NPO向けであれば10ライセンスまで無償で本番環境のライセンスを提供できます。社会貢献を目的とした場合、これほど適したプラットフォームは他にないと思います。

僕自信、今後も継続してこの活動をつづけていきたいと考えています。この輪が広がることを想像しながら。

without comments

Written by 中嶋 一樹

6月 26th, 2013 at 4:29 pm

Posted in Uncategorized

Tagged with ,

すごいアンケートへの機能追加「ゲストが取引先責任者と自動リンク」

すごいアンケートにゲストを取引先責任者と自動でリンクする機能を追加しました。

ゲストとはイベントに参加し、アンケートに回答する人です。そのゲストレコードは下記のタイミングで作成されます。

  1. 管理者がCSVファイルからインポートしたとき
  2. 管理者が一人づつ登録したとき
  3. 登録されていない人がアンケートに回答したとき

特に、「3」の登録されていない人がアンケートに回答するケースでは、その人が誰なのかEmail以外に判断するすべがありません。

今回の追加した機能では、ゲストのEmailアドレスをもとに該当する取引先責任者をスキャンし、合致するものがあればリンクさせます。リンクされると下記のことが実行されます。

  • 取引先責任者の情報で、ゲストの情報を自動補完・入力します。
  • そのゲスト(=取引先責任者)がイベントに参加することがChatterフィードに流れます。これによって、その取引先責任者または取引先をフォローしているユーザーは、自身の顧客がイベントに参加するという情報を入手することができます。
  • そのゲスト(=取引先責任者)がアンケートに回答したら、その回答へのリンクがChatterフィードに流れます。これによって、その取引先責任者または取引先をフォローしているユーザーは、自身の顧客のイベントへのフィードバックを入手することができます。

通知は取引先責任者と取引先のレコードフィードに流すことができ、イベント毎にどちらのフィード(または両方)に流すか設定できます。


既存のすごいアンケートをアップグレードした場合、上図の「Chatter設定」セクションは自動では追加されません。設定->作成->オブジェクト->イベントをクリックし、ページレイアウトを編集して「Chatter設定」セクションを追加し、「取引先のレコードフィードフィードにゲストの活動を投稿」および「取引先責任者のレコードフィードフィードにゲストの活動を投稿」のカスタム項目をそのセクションに追加してください。

知らない間に自分の顧客が自社のイベントに参加していた、というシチュエーションをなくし、関心のある顧客のアクティビティを積極的に入手することができる、という機能です。

僕はChatterをはじめとするソーシャルネットワークとメールによるコミュニケーションの一番の違いは「能動的」か、「受動的」か、だと考えています。

ソーシャルネットワークは自分が関心のある対象を積極的にフォローし、能動的に情報を掴みにいくツール。一方メールは関心に関係なく勝手にINBOXに情報が入ってくるツールだと思います。

そしてソーシャルネットワークはオープン。メールはクローズドです。他人のメールのやりとりは見ようと思ってもみれるものではありません。けれど、ソーシャルネットワークでおこなわれている情報は、(アクセス権限に応じて)公開されています。

自分に関連のある有用な情報ソースを特定し、積極的に取り込む。そういった率先力をもったビジネスマンにとってChatterは社内の情報宝庫から重要な情報をたぐり寄せるパワフルなツールになります。

今回の機能はそういったChatterの醍醐味ともいえる部分を3rd Partyアプリで活用する具体例です。

今回のバージョン、v4 1.13にはその他下記のアップデートが含まれます。

  • ゲストの詳細画面のレイアウトをリニューアル
  • アンケートからドリルダウンした際に表示されるゲスト一覧の画面のレイアウトを微修正

これまでにインストールされた組織では、自動的に最新バージョンにアップグレードされています。

すごいアンケートの新規インストールはこちらから。

https://appexchangejp.salesforce.com/listingDetail?listingId=a0N30000008a7DuEAI

without comments

Written by 中嶋 一樹

3月 1st, 2013 at 5:37 pm