nkjmkzk.net

powered by Kazuki Nakajima

日本オラクルに入社しました – シーズン2。

もう2週間以上経ちましたが、8月末でセールスフォース・ドットコムを退職しました。そして今月、日本オラクルにPaaS エバンジェリストとして入社しました。

背景について少しだけ。

  • 中嶋:プラットフォームをデファクトスタンダードにするというミッションに責任をもってやりきりたい。
  • 日本オラクル:VISION 2020を掲げてクラウド No.1に本気で向かっている。

私が自分のキャリアの中で次にやり遂げたいゴールと、日本オラクルがビジョンとして掲げる命題がぴったり一致している。端的に言えばこれが今回の選択の理由です。

会社のプライオリティ#1が自分のやりたいこととピッタリ重なっており、幸せなことにそのど真ん中ストレートの仕事をやらせてもらえる機会がありました。

出たり入ったりドタバタな私ですが、また暖かく迎えていただき、さらに、なんと楽しい仕事を任せていただいた日本オラクルに感謝しています。前職セールスフォース・ドットコムの方々にも今回の選択を理解していただき、快く送り出していただきました。本当にありがとうございます。

今回の立場では、オラクルのPaaSを中心としたクラウドサービスがお客様および技術者にとってどんなインパクトがあるのか、それを伝え、ファンを増やしていくのが私のミッションです。

え?と思うようなデモの作成。

開発者が安心して開発に没頭できる技術情報の整備。

知的好奇心を刺激するエンターテイメントの提供。

同じ関心事をワイワイガヤガヤ会話できるコミュニティのアレンジ。

こういった活動をおこなっていきます。

少しだけ具体的なサービスのお話を。オラクルといえばデータベースが気になるところですが、すでに日本でもデータベースはクラウドサービスとして提供されています。スキーマベース、インスタンスベース、またExadataといったウルトラパフォーマンスの占有環境を利用できる物理ユニットベースのサービス、といった複数のタイプのサービスが提供されています。

これまで企業システムの中で「こっちはクラウドで。こっちはオンプレミスで。」とされていた後者のシステムをもクラウドで実現可能にする。そんなカバレージがオラクルのクラウドサービスの魅力の一つだと思います。

また、データベースサービスはRESTful Webサービスを標準提供しており、オラクルデータベースにREST APIで直接アクセスすることができます。RDBMSは今も昔もこれからも多くのシステムで心臓部を支えるデータベースであることは間違いありません。しかし、SQL互換のRDBMSクラウドサービスは少なからず提供されているものの、REST APIで直接アクセス可能なサービスは実はほとんどありません。

つまりオラクルのデータベースサービスだと、こんな構成でHTML5アプリやモバイルアプリを構築できます。

Screen Shot 2015-09-20 at 11.41.16

 

 

 

 

 

 

 

こういった構成はBaaSなどでは当たり前の構成ですが、これまで使っていたRDMBSをそのまま利用できるという点で極めてユニークです。特にオラクルの場合はクラウド−オンプレミス間の移行が可能であることが特徴です。なのでこれまでオンプレミスで運用していたデータベースをクラウドに移行すれば、すぐにHTML5やモバイルアプリ、または外部サービスとの連携をおこなうための下地が整うことになります。

つまり、既存のデータと投資を最大限活用しながらシステムをモダナイズする近道がここにあります。

これはあくまでもデータベースサービス単体の活用例ですが、実際にはJava, Node.js, NoSQL,  IoT, Mobile, Big Data,  Application Builderなどすごい数のプラットフォームサービスが続々リリースされます。

このあたりの気になるサービスについて、活用例や実際の事例、Tipsなどを今後どんどん発信していこうと思います。

シーズン2がはじまりました。よろしくお願いします!

without comments

Written by 中嶋 一樹

9月 20th, 2015 at 11:56 am

Posted in Uncategorized

Tagged with , ,

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

Lightningアプリケーションをアプリケーションプルダウンメニューに表示する方法

Lightningコンポーネントフレームワークでスタンドアローンアプリを作成したい場合、つまり、パーツではなく単体でアプリとして機能するものを作りたい場合、Lightningアプリケーションバンドルを作成することになります。

ただし2015年4月現在、LightningアプリケーションバンドルはSalesforce標準画面の右上にあるアプリケーションプルダウンメニューに通常の手段では表示することができません。

今回は、よく考えれば誰でもできるハックですが、このLightningアプリケーションバンドルを下図のようにアプリケーションプルダウンメニューに表示させる方法をご紹介します。

スクリーンショット_0027-04-16_12_39_52

スクリーンショット_0027-04-16_12_40_00

LightningアプリケーションバンドルはLightningコンポーネントバンドルとほぼ同じものですが、一意のURLが割り当てられる点が異なります。この特性を利用します。

Lightningアプリケーションバンドルを作成する

まず開発者コンソールを開いてFile > New > Lightning ApplicationをクリックしてLightningアプリケーションバンドルを作成します。このLightningアプリケーションバンドルには下記のURLフォーマットでアクセスできます。

https://インスタンス名.salesforce.com/名前空間/バンドル名.app

リダイレクトを担当するVisualforceページを作成する

次にそのまま開発者コンソールからFile > New > Visualforce PageをクリックしてVisualforceページを作成します。ページの名前はなんでも構いません。Visualforceページの中身は下記のように記述します。

<apex:page showHeader="false" sidebar="false" standardStylesheets="false" applyHtmlTag="false" applyBodyTag="false" docType="html-5.0">
<html>
<head>
    <meta http-equiv="refresh" content="0; url=/名前空間/バンドル名.app" />
</head>
</html>
</apex:page>

あぁ、なるほど、と。このVisualforceページにアクセスしたらLightningアプリケーションのURLにリダイレクトするのね、ということがわかります。

タブを作成する

そしてビルド > 作成 > タブでVisualforceタブを作成し、先ほど作成したVisualforceページに紐付けます。

アプリケーションを作成する

最後に、ビルド > 作成 > アプリケーションで新規アプリケーションを作成し、選択されたタブに先ほど作成したVisualforceタブを追加、そしてデフォルトの表示タブをそのVisuaforceタブにセットして保存します。

これで完成です。
アプリケーションプルダウンメニューからアプリを選択すると、下記の流れでLightningアプリケーションが表示されます。

  • デフォルトタブにセットされたVisualforceページがまずロードされる。
  • VisualforceページはすぐにLightningアプリケーションへリダイレクトする。
  • Lightningアプリケーションが表示される。

まどろっこしい仕組みですが、アクセスしてみると意外に遅延もなくスムースにLightningアプリケーションが表示されます。

現時点でLightningコンポーネントフレームワークでアプリを作ってしまいたい場合はこんな形で既存の環境でも違和感なく利用することができます。

Enjoy :)

without comments

Written by 中嶋 一樹

4月 16th, 2015 at 12:51 pm

Posted in Uncategorized

Tagged with ,

知っておくべきSalesforce1のアップデート:完全なリストビューとリストビューチャート

Salesforce1 Mobile Appに嬉しいアップデートが入っています。

従来までSalesforce1のリストビューは項目が一つしか表示されず、それが自動採番フィールドだったりすると終わった感がありました。これは現実的にキツかった。

ついに、タブレット版Salesforce1 Mobile Appの最新バージョンでは、PCブラウザ版と遜色ない完全なリストビューが提供されるようになりました。

スクリーンショット 0027-03-20 14.23.54

さらに。各リストビューに連動するチャートを作成・表示できるようになりました。見た目的にはWaveと同様のアニメーションが実装されており、「お、」となります。

スクリーンショット 0027-03-20 14.25.11

ただ、追加されたばかりの機能なので至らない点も。

チャート名に日本語を入れると怒られます。なので今は半角英数字で設定してください。また、一度チャートを作成するとUI上からは削除できないんですね。もし消したい場合は開発者コンソールを開き、query editorでまず下記のように定義情報を取得し、Delete Rowボタンで削除してください。

select Id, DeveloperName, MasterLabel from ListViewChart 

スクリーンショット_0027-03-20_14_25_34

こういうのが充実してくると、いよいよ簡単にいろいろなモバイルアプリ(スクショは家計簿アプリのプロトタイプ)が作れてきますね。

without comments

Written by 中嶋 一樹

3月 20th, 2015 at 2:40 pm

Posted in Uncategorized

Tagged with

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

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

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

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

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

よければ活用ください!

without comments

Written by 中嶋 一樹

3月 17th, 2015 at 2:23 pm

Force.com REST APIがついにCORSをサポート

長年待ち焦がれていたCORSがついにForce.com REST API全体でサポートされました。 使いかたもめちゃくちゃシンプルです。早速使ってみましょう。

スクリーンショット 0027-03-03 16.54.53

まずは上図にある通り、Salesforce組織のCORS設定で外部サイトを登録します。

管理 > セキュリティのコントロール > CORSを開き、「新規」ボタンをクリックしてオリジンのURLパターンに外部サイトのURLを設定します。

スクリーンショット_0027-03-03_16_58_49

必要な設定はたったこれだけ。

OAuth2.0でアクセストークンを取得し、外部サイトでホストされているJavascriptからSalesforceにAPIアクセスしてみましょう。ツルッと通るはずです。

内部の動きとしては、下記のようになります。

  1. クロスドメインのリクエストであることをブラウザが検知し、APIアクセスに先立ってpreflightリクエストという「このドメインからのクロスドメインアクセスしてもいいですか?」という確認をSalesforce側におこないます。
  2. Salesforceは当該ドメインがCORS設定に登録されているURLパターンと一致すれば、Access-Control-Allow-xxxxヘッダー付きのレスポンスで承認を通知してくれます。
  3. ブラウザはレスポンスの中身を確認し、OriginやMethodに相違がなければクロスドメインのAPIアクセスを実行します。

もちろん、OAuth2.0で認証をおこないますので事前に接続アプリケーションの設定などは忘れずに。

without comments

Written by 中嶋 一樹

3月 3rd, 2015 at 5:17 pm

Posted in Uncategorized

Tagged with , ,

Lightning ComponentをSublime Textで開発する方法

現在Lightning Componentは基本的に開発者コンソールで開発することになっていますが、実はSublime Textでも開発可能で、sublime-lightingというプラグインが用意されています。今回はその環境構築方法を紹介します。なお、環境はMac OS XとSublime Text 3を前提として進めていきます。

sublime-lightningプライグインのインストール

Force.com CLIをインストールする

sublime-lightningは内部でForce.com CLIを利用しているため、まずForce.com CLIをインストールする必要があります。

まずhttps://force-cli.herokuapp.com/より各OS用のモジュールをダウンロードします。Macの場合、「force」というファイルがダウンロードされるのですが、最初一体このファイルをどうしたらいいのか途方に暮れます。このファイルは実はそのまま実行モジュールになっているので、コマンドラインからこのファイルを実行すればForce.com CLIが起動できます。そのためにはまず下記のようにパーミッションを実行可能なように変更する必要があります。

$ chmod 755 $HOME/Downloads/force

次にこのファイルをサーチパスに移してあげます。

$ sudo mv $HOME/Downloads/force /usr/bin/

本当は/usr/local/binにいれたいところですが、sublime-lightningのサーチパスに入っていないようなので/usr/binとしています。多分どこかで設定できると思いますが、またそれは後日。これでForce.com CLIのインストールは完了です。下記のようにコマンドが実行できるはずです。

$ force help

Sublime TextのPackage Controlをインストールする

MavensMateをインストールしている人は多くの場合すでに導入されていると思いますが、もしSublime TextのPackage Controlが導入されていなければ次のように導入します。

Sublime Textを起動し、メニューバーからView > Show Consoleを選択し、コンソールに下記コードをペーストしてEnterキーを押下します。

import urllib.request,os,hashlib; h = ‘eb2297e1a458f27d836c04bb0cbaf282′ + ‘d0e7a3098092775ccb37ca9d6b2e4b7d’; pf = ‘Package Control.sublime-package’; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( ‘http://packagecontrol.io/’ + pf.replace(‘ ‘, ‘%20′)).read(); dh = hashlib.sha256(by).hexdigest(); print(‘Error validating download (got %s instead of %s), please try manual install’ % (dh, h)) if dh != h else open(os.path.join( ipp, pf), ‘wb’ ).write(by)

これでPackage Controlのインストールが完了です。

sublime-lightningをインストールする

次にPlugin本体を下記の通りインストールします。

  • Sublime TextのメニューバーからTools > Command Paletteを選択し、Package Control: Install Packageを選択。
  • Lightningを検索して選択するとsublime-lightningがインストールされます。

これでプラグインのインストールは完了です。

Lightning Bundleを作成・編集する

まずSublime Textのワークスペースにディレクトリを作成します。このディレクトリはプロジェクトのような位置付けで、この中に複数のLightning Bundleが作成されることになります。*MYPROJECTは適当な名前に置き換えてください。

$ mkdir -p /MYPROJECT/metadata/aura

次にSublime Textを起動し、メニューバーからFile > Openを選択して作成したディレクトリを開きます。

次にサイドバーのディレクトリを右クリックし、Lightning > Salesforce Loginをクリックします。Sublimeウィンドウの最下部にUsernameを入れるフォームがあらわれるのでログインしたいSalesforce組織のユーザー名を入力しEnterキーを押下します。さらにパスワードを入力してEnterキーを押下します。ログインが成功したことを確認します。*Force.com CLIが正しくインストールされていないとエラーになります。

ログインが成功したらサイドバーからauraディレクトリを右クリックし、Lightning > Create App/Component/Eventをクリックすれば新しいLightning Bundleを作成できます。通常どおりファイルを保存するとファイルがSalesforce組織に保存されます。

既存のLightning Bundleを編集するには、サイドバーからauraディレクトリを右クリックし、Lightning > Fetch Lightningを選択して任意のLightning Bundleを選択すれば、auraディレクトリ配下にロードされます。


これで快適にLightning Componentを開発する環境が整いました。 Enjoy.

without comments

Written by 中嶋 一樹

2月 11th, 2015 at 11:11 am

Posted in Uncategorized

Tagged with , , ,

リーン・スタートアップと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

Force.com Canvasに一般ユーザーでもインストールできる「個人用」が登場

これまでSalesforceにおいてアプリはシステム管理者しかインストールできないものでしたが、Winter’15で「キャンバス個人用アプリケーション」が登場し、システム管理者ではない一般ユーザーが自由にアプリをインストールする、という機能が追加されます。

アプリそのものはこれまでのForce.com Canvasと同じ仕様ですが、以下の点においてユニークなものとなります。

  • 一般ユーザーがインストールできる。
  • インストールしたアプリは自分のChatterタブにのみ表示される。

ISVの方々はこの仕組みを利用すればより広い裾野のユーザーに対して自社のアプリを触ってもらうことが可能になると思います。

このキャンバス個人用アプリを素早くマスターするための「キャンバス個人用アプリ 速習ガイド」を作成してみました。ピンと来た方は是非チェックしてみてください。

キャンバス個人用アプリ 速習ガイド from Kazuki

without comments

Written by 中嶋 一樹

10月 3rd, 2014 at 1:47 pm

Posted in Uncategorized

Tagged with , ,