2016年7月 7日 (木)

Partial Copy Sandboxについての考察

入社2年目の和田(佳)です。
業務では、
Salesforceを土台としたSFA/CRMソリューションをお客様に届けるプレイングマネージャ的役割を担っています。
こちらへの投稿は初めてですが宜しくお願いします。

今回は、 Salesforce Summer '16 にて有効となったSandboxライセンスである、
 Partial Copy
について考察してみようと思います。

Partial Copy Sandboxライセンスの特徴

端的に言えば、Developer(Pro)とFullの間を取った特徴を持っています。
Fullの場合は全レコードがコピーされたSandbox環境が作成されますが、
Partialの場合はその名が表す通り、本番環境を部分的にコピーして作成されるSandbox環境になっています。
特に、以下の3点が特徴的です。

  • Sandboxテンプレートに対応するサンプルデータが投入される
  • 更新間隔は5日間
  • 容量は5GB

利用条件

Enterprise Edition、Unlimited Editionの場合のみ、
どちらも1ライセンス使用することが出来ます。

利用方法

事前にSandboxテンプレートを作成しなければならない点が従来と異なりますが、特に難しい点はありません。
本番環境にログインした状態で、
 設定>リリース>Sandbox
から、以下の作業を実施します。

Sandboxテンプレートを作成する

「Sandboxテンプレート」タブにて、「新規Sandboxテンプレート」を押下
名前や説明を記入し、サンプルデータ投入対象としたいオブジェクトを指定し保存

Partial Copy Sandbox環境作成時にSandboxテンプレートを指定する

「Sandbox」タブにて、「新規Sandbox」を押下
Partial CopyのSandboxライセンスにて「次へ」を押下
名前や説明を記入し、Sandboxテンプレートを指定して作成

利用場面を考える

さて、本題はここからです。
Partial Copy Sandbox環境はどのような場合に効果的でしょうか。
結論から書いてしまうと、
従来のFullSandbox環境を利用する場面の内、
性能テスト以外の用途においては代替しうる環境であると考えます。

考えの根拠として私は、

  • Sandboxテンプレートに対応するサンプルデータが投入される
  • 更新間隔は5日間

の2点に注目しました。
それはこの2点が、
テストの効率・精度向上やデグレードリスクの低減に寄与することにつながると考えたからです。

テストの効率・精度が向上しデグレードリスクが低減されている状態が非常に健全であるという考えには、
システム開発に携わる多くの方は賛同頂けることと思います。
ではなぜそれが今回取り上げるPartial Copy Sandbox環境で実現しやすいのかというと、
構成や時間経過の面から本番環境との差異を少なくすることができるからです。
DevOpsを実現しやすい、と言えばイメージしやすいかもしれません。

サンプルデータが投入されることで、
データ投入の負荷が軽減されるのみならず、
よりリアリティのあるテストを実施することが可能となる上、
余計なマージ工数の発生を押さえられることによる改修影響の局所化が達成されます。
これは、
プロダクトやサービスのライフサイクルが短期化しお客様の要望にスピーディーに柔軟に対応する必要があっても(当社がまさにそうです)なお、
開発&テスト、リリースをよりスムーズに行うことができる可能性を持っていることを意味します。
例えば結合テスト環境としてPartial Copy Sandbox環境を確保し、
複数の開発者がそれぞれのDeveloper(Pro)環境で開発したモジュールをこちらにリリースするといった仕組みにハマるのではないでしょうか。

注意事項

とは言えネガティブな面にも注意は必要で、私は2点あると考えています。

  • サンプルデータはあくまで本番データの一部である
  • Partial Copy Sandbox環境そのものがまだ枯れていない

サンプルデータはあくまで本番データの一部である

サンプルデータと言うと取引先名"ほげほげ"、取引先責任者名"山田太郎"というのを想像しがちですが、
適当な値を持ったレコードというわけではなく、本番に格納されている値をもったレコードで、これはFull同様です。
そのため、適宜マスクなどの対応が必要であることは認識しておく必要があります。

Partial Copy Sandbox環境そのものがまだ枯れていない

冒頭に Salesforce Summer '16 にて有効となったSandboxライセンスと述べた通り、
まだまだ新技術です。
新技術には不具合もつきものなので、こちらなどを参考に、過信しないこと、事前にアタリをつけておくことが肝心かと思います。

まとめ

Partial Copy Sandbox環境は、従来のFullSandbox環境の代わりになる可能性を秘めています。
ここでの考察を踏まえ実組織への適用・浸透を進めて行きたいと思いますので、
その結果を追ってこちらで報告できればと思います。

参考

各サンドボックスライセンスの比較

DeveloperDeveloper ProPartial CopyFull
更新間隔 1 日 1 日 5 日 29 日
データのコピー なし なし あり あり
サイズ 200 MB 1 GB 5 GB 本番組織と同じ
テンプレート/サンプリング なし/なし なし/なし あり/あり あり/なし
Developer Sandbox のバンドル N/A 5 10 15

Salesforce Summer '16 リリースノート

https://resources.docs.salesforce.com/202/latest/ja-jp/sfdc/pdf/salesforce_summer16_release_notes.pdf

2016年4月22日 (金)

振り返るリリースノート パート2

こんにちは、なかやまです。

振り返るリリースノート的なお話パート2です。

 

あんなリリース、こんなリリースあったでしょう〜。

 

権限セット

Salesforce2_05

〜Winter'12〜

プロファイル量産にストップがかかりました。大変ありがたいですね。

「1 回限りの」プロファイルを作成する代わりに、権限セットを使用して追加の権限や他のアクセス権をユーザに付与できます。権限セットでは、ユーザの役職などの概念を表すことができます。また、レコードの削除や移行など、あるユーザに課せられたタスクのセットのように、より特定のアクセス設定を表すこともできます。

ちなみに、Winter'13で組織権限セット(プロファイルを指定しない)が使えるようになったよ!

https://help.salesforce.com/HTViewHelpDoc?id=perm_sets_overview.htm&language=ja

 

 

代理ログインを組織でコントロール
2_04

〜Summer'15〜

昔は隠しコマンドのようにサポートに問い合わせると有効になる機能でしたが、今ではどの組織でも最初からメニューとして表示されていますね。

メニューに出てこないので、気付かなかった管理者の方も多いのでは。アドミンひゃっほーなリリースでした。

Photo_2

https://releasenotes.docs.salesforce.com/ja-jp/summer15/release-notes/rn_login_access.htm


 

 

sandboxが増えた!!

Salesforce2_02

〜spring'16〜

Enterprise Editionだと1つしかsandboxがなかったので、リリース前の確認だの、やりくりには非常に苦労しました。。今回はEnterprise Editionだと1→25に!!Performance Editionだと30→100になるそうです。

年3回のリリース前の検証に、リリース前の事前バックアップに、ユーザの勉強会用に、AppExchangeのお試しなどなど。いろいろ活用できそうです。
https://releasenotes.docs.salesforce.com/ja-jp/spring16/release-notes/rn_deployment_sandbox_licenses.htm

 

 


DataLoaderでjavaがいるようになった。。

2_03

〜Spring'16〜

TLS1.0の無効化に伴ってのセキュリティ強化の1つですね。

新データローダを利用する場合は別途、Java(JRE1.8)のインストールが必要になります。TLS1.0の無効化スケジュールは、sandboxは2016年6月から適用なので開発者のみんなはそろそろ意識する必要がありますよ〜。

しかし、スッキリした見た目になって。今まで作ったマニュアルとか大丈夫だよなぁとか、旧データローダで作ったバッチもJava対応いるよなぁとか、外部連携でSalesforceにアクセスする子はJava6使えなくなるよ、とか。ひとまずsandboxの対応進めておかないと、6月25日以降はsandboxで動かない機能がでてくるぞ!

本番インスタンスは2017年3月4日とのこと。

Salesforce による TLS 1.0 の無効化

https://releasenotes.docs.salesforce.com/ja-jp/spring16/release-notes/rn_forcecom_data_data_loader.htm

Photo_2

6/26がsandboxのリミットかも。

 

 

オブジェクトの一覧にインデックスのマークがつくよ

2_06

〜Spring'15〜

カスタム項目を外部IDとして設定したものはインデックスされるのですが、ぱっと見た感じ非常にわかりずらかったです。また、サポートに依頼をして作成してもらうカスタムインデックスについても適用されているのか不明なところがありましたが、、これでわかりやすくなりましたね^^

Photo

プライマリ キー(Id、Name、および、Owner 項目)、外部キー(参照 または 主従関係項目)、audit dates(LastModifiedDate など)、そして、外部 ID または ユニーク にマークされたカスタム項目。

パフォーマンスを向上させるためのカスタムインデックス

https://docs.releasenotes.salesforce.com/ja-jp/spring15/release-notes/rn_forcecom_general_field_indexed_column.htm

 

ページレイアウトのレポートグラフがS1でも使えるよ!

Salesforce2_01

〜Spring'14〜

1画面3つまでの制限はありますが、ページレイアウトに追加するだけでモバイルで見れるなんて、素敵です。

https://releasenotes.docs.salesforce.com/ja-jp/spring14/release-notes/rn_mobile_salesforce1_newfeats_embed_charts.htm

 

 

Apexフレックスキューの制限が5→100に!

Salesforce2_07

〜Spring'15〜

5個から増えました!!100個までキューに入るのであれば、同時バッチ起動も耐えれそうです。開発者へのゆとりができたのではないでしょうか。

 http://releasenotes.docs.salesforce.com/ja-jp/spring15/release-notes/rn_apex_flex_queue_ga.htm

 

sandbox作成後にApex実行できるよ

Img_3226

〜Spring'16〜

sandboxを作った後・更新した後にApexが実行できるようです。

カスタム設定の接続情報変更とか、データのマスキングもできちゃうのかしら♪(大量レコードのマスキングなどで無制限に利用できるとは限らないので、計画的に実装しましょう!)

https://releasenotes.docs.salesforce.com/ja-jp/spring16/release-notes/rn_deployment_sandbox_postcopy_script.htm

 

 


添付ファイルの最大ファイルサイズが5M→25Mに!!

Salesforce2_10

〜Summer'14〜

最近まで5M制限だと思ってました。。

ちょっと大きめのファイルも添付できるようになりました!やったね。

https://releasenotes.docs.salesforce.com/ja-jp/summer14/release-notes/rn_general_attachment_size_increase.htm

 

 

Chatter機能の利用

Salesforce2_09

2010年6月22日
今や当たり前のChatterですね。モバイル対応もあって、Salesforceになくてはならない存在になりました!
http://www.salesforce.com/jp/company/news-press/press-releases/2010/06/100622.jsp

 

 

2016年3月10日 (木)

振り返るリリースノート

こんにちは、なかやまです。

ここ最近はLightningのお話が目立ちますね。

今日は、振り返るリリースノートのお話です。

Salesforce案件に関わってきて、早XX年。
色々なリリースがありましたが、心に残るリリースはあったでしょうか?

 

インタビューしたものをまとめてみましたので、ご覧ください↓

 

updateする前にselectしなくてもいいんだよ

Salesforce_01

〜Spring'13〜

この機能が利用できるようになる前は、前もってselectしたオブジェクトに対して更新値を設定す必要がありました。

今はこんな感じで、書けちゃいます。

  a.Phone = '(415) 555-1212';
  a.Id = '00199000002JMim';
  update a;

SOQLの発行回数を減らせるし、ありがたい機能改善でしたね。

http://jp.force.com/releases/release/Spring13/Setting+ID+Fields+for+Updates

 

 

ページレイアウトにレポートで作ったグラフが埋め込めるよ

Salesforce_04

〜Winter'14〜

ページレイアウトにはVFの埋め込みできるので、自前で実装されていた方も多いのではないでしょうか。

開発不要&インプリのみで実現できるので利用されるケースは多いと思います。
https://releasenotes.docs.salesforce.com/ja-jp/winter14/release-notes/reports_embed_pagelayout.htm

 

 

リリース時にスケジュール解除しなくてもOKな設定ができるよ

Salesforce_06

〜Winter '15〜

リリース設定のメニューから選択できます。有効化することでスケジュールを止めることなくデプロイができます。

Photo

http://releasenotes.docs.salesforce.com/ja-jp/winter15/release-notes/rn_deploy_with_jobs.htm

 

 

複数のコミュニティが作れるよ

Salesforce_10

〜Spring'16〜

複数のコミュニティがOKになりました。Sitesも含むそうです。
コミュニティを検討する際の幅が広がりそうですね!
https://releasenotes.docs.salesforce.com/ja-jp/spring16/release-notes/rn_networks_limit_max_number_communities.htm


Salesforce 組織では、最大 50 個のコミュニティを使用できます。有効なコミュニティ、無効なコミュニティ、およびプレビューコミュニティ (Force.com サイトを含む) がこの制限に対してカウントされます。

 

 


sandboxのライセンスを本番と同期できるよ

Salesforce_05

〜Summer '15〜

sandboxのライセンスを本番ライセンスに合わせる機能。この機能がない時代は、sandboxで新しいライセンスを使うためにsandboxの更新をしなければならず、開発中モジュールの退避うんぬんが非常に厄介でした。。

今はボタンを押すだけで同期できます、非常に便利ですね!

Photo_2

https://releasenotes.docs.salesforce.com/ja-jp/summer15/release-notes/rn_deployment_sandbox_match_licenses.htm

 

 

sObjectのメソッドに数式更新のメソッドがあるよ

Salesforce_07

〜Winter '16〜

recalculateFormulas()

数式項目にはselectした瞬間の値が入っています。処理中に数式に利用している項目の値を変更しても数式項目は最新にはなりません。一度レコードを保存して再度selectする必要がありました。それがメソッド1つで最新になるなんて、すばらしい!!

・・・のですが、もう少し見てみると、クロスオブジェクトには使えないとか。。

This method doesn’t recalculate cross-object formulas. If you call this method on objects that have both cross-object and non-cross-object formula fields, only the non-cross-object formula fields are recalculated.

そうかー。まぁそうですよね。
https://releasenotes.docs.salesforce.com/ja-jp/winter16/release-notes/rn_apex_new_classes_methods.htm

https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_methods_system_sobject.htm

 

 

Stringクラスのメソッドが充実してきたよ

Salesforce_02

〜Winter'13〜

たしかに!昔のStringクラスはシンプルでした!

Winter13でガバッと増えましたよね。isEmptyとかjoinとか。
昔のロジックに、メソッドでできることをベタで書いてることがありますが、
そんな歴史があるんです。そっと直してあげてください。

https://developer.salesforce.com/releases/release/Winter13/New+String+Methods

http://releasenotes.docs.salesforce.com/ja-jp/spring14/release-notes/rn_apex_string_methods.htm
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_methods_system_string.htm

 

 

プロファイルのIP設定に説明欄がついたよ

Salesforce_08

〜Summer'14〜

さりげないリリース、でも大事。

Ip

http://releasenotes.docs.salesforce.com/ja-jp/summer14/release-notes/rn_forcecom_login_ip_range_desc.htm

 

 

クイック★リリース

Salesforce_03

〜Winter'15〜

事前に検証しておけば、デプロイの時間を短縮することができます。

素敵すぎます。

http://releasenotes.docs.salesforce.com/ja-jp/winter15/release-notes/rn_quick_deployment.htm

 

 

日本語ドキュメントの充実

Salesforce_09

リリースノートも早い段階で日本語対応してくれますよね。

めっちゃありがたいです!

 

もう少しネタを頂いたので、続きは次回に。。

 

 

 

お知らせ。

フレクトがAppパートナーとして初出展します↓↓

App Exchange EXPO 2016 東京

2016年3月11日(金)10:30~17:50
会場:JPタワー ホール&カンファレンス 4F

https://sfdc.smktg.jp/public/application/add/112

 

フレクトのセッションは14:40〜15:10です。

【IoT】コネクテッド・カーがもたらす不正利用防止、コスト管理と売上拡大

http://cariot.jp 

 

ぜひお立ち寄りください^^

2016年1月19日 (火)

Meshlium×Plug&Sense×Soracom×Salesforceをニジマス養殖場へ

こころです。12/4のSalesforce World Tourにお越し頂いた皆様はCariot(キャリオット)一色だったフレクトブースにこっそりセンサーが展示されていたのにお気づきでしたでしょうか?

0p8a7516

こちらは、Libelium(リベリウム)社のPlug&Senseの1種類で、SmartWaterという水質のデータが取得できるセンサーです。

こちらがゲートウェイ機器のMeshliumです。

Img_9283

  • SmartWater(防水防塵で屋外設置可)
  • Meshlium(データ通信のためのゲートウェイ機器 3G回線あり 要室内設置)
  • SIMカード
  • ソーラーパネル(SmartWater用)

を用意して屋外の水場シーン(池、河川、畑など)を想定した実験を行いました。折角なのでセンシングデータはSalesforceに保存し、ダッシュボードで見える化します。また、アラート(水質に異常値が検出された場合等)はChatterのMentionでPush通知されると便利ですし、実際の利用シーンでも「水温が◯℃以下になったら通知したい」というニーズはありそうです。

Photo_2

図に記載してしまいましたが、設置場所は屋外のニジマス養殖池です。

  • Plug&Senseの電力はソーラーパネルで発電(100%の充電には晴天時約24時間)
  • Plug&Sense⇒Meshlium間はZigBeeで通信
  • Meshlium⇒Saelsforce間はSORACOM Airの3Gデータ通信

SmartWaterから10分間隔(数秒にもチューニングは可能)でセンシングデータ(今回は水温、導電率、機器内部温度、ph、バッテリー、三軸加速度)をMeshliumに飛ばし、Meshlium内のDBに保存したセンシングデータをサマリしてSalesforce上のレコードとして作成します。

※SmartWater,Meshliumとも中にLinuxOSが搭載されていますがハックするには専用の手順、ツールが必要です。今回はMeshlium上にphpのruntimeが用意されていたのでMeshlium上のDBのデータをSalesforceにSyncする処理にはphpを使いました。

それでは実際の設置現場をご覧ください。

1_2

0p8a7485センサー先端はしっかり着水しています。

0p8a7472

ソーラーパネルは器具で固定します。

データ連携を確認して、約1ヶ月半の間屋外に放置してきました。屋外に設置する前に社内でコップに水をはって実験したので、

・中夜間の温度差が5℃位あり(日中は水温が上がる)自然界では中夜間の水温差がより開く

・導電率が落ち葉等により変化する

と仮説をもっていました。

※導電率は不純物が多いほど上がる傾向があり、お茶と水だと導電率が100倍位違います。

20160119_214036

Swtt_meshlium

折角なのでセンシングデータを日別で見るグラフアプリも作りました。

フタをあけてびっくりですが、

・PH・・・ほとんど変わりません!
・導電率・・・ほとんど変わりません!
・中夜間の水温・・・ほとんど変わりません!(ただし、水温の平均は11月後半⇒12月にかけてゆるやかに下がっていきました)
・機器内部温度・・・15℃から20℃の間をさまよっていました。
・バッテリー残量・・・98%から100%の間をウロウロ(ソーラー優秀ですね!)

と、環境変化による急上昇、急降下を想定したアラートを仕込んだにも関わらず、何も起きませんでした(笑)

発見したことは、ソーラー発電が想像以上に優秀でバッテリー98%以上をキープしていたことで、屋外でも長期間放置することが可能です。

機器提供、設置にご協力頂きました三井物産エレクトロニクス様、ありがとうございました!

2015年9月 8日 (火)

セキュリティに気をつけてForce.comで開発しよう!

こんにちは、なかやまです。

今日はForce.comで開発する際に気をつけるセキュリティポイントについてです。

_01

 

会社でセキュリティの勉強会に参加させてもらったので、

Salesforceで開発する上で気をつけるポイントをまとめてみました。

_02

 

あらためて調べてみると、以下の資料がありました。

いくつかはリンク切れだったり、英語の記事ですが参考まで。

Force.comセキュリティリソース

セキュアコーディングガイドライン

セキュリティ早見表

 

 

勉強会で紹介しきれなかったものを書いておきます。

英語版しか見当たらなかったのですが、

そこまで難しいものでもないので是非チャレンジしてみてください!

 

開発者向けセキュリティクイズ

ここで登録したメールアドレスに確認URLが届きます。(ログイン画面

Security_force_com_platformquiz_2

 

URLをクリックすると、以下のようなクイズ画面が表示されます。

社内勉強会でのディスカッションタイムに

Salesforce版としてこの素材をつかってもおもしろいかもと思いました。

Force_com_platform_security_quiz

 

ユーザ向けの教育

http://security.force.com/security/tools/usered/phishquiz

こちらはユーザ向けで、Salesforceのログイン画面やSalesforceから届くメールが題材になってます。メール登録がいらないので、すぐに試すことができますよ!

Cloud_security__salesforce_com

 

Cloud_security__salesforce_com_2

 

 

勉強会では20分の枠でお話しましたが、あっという間に時間がたってしました。

デモ環境の準備してたのに、見せる時間(余裕)が一切なかった。

_03

 

基礎☆Forceシリーズはもう少し続けていきたいので、

社内でアウトプットしたらブログで紹介しますね。

2015年8月14日 (金)

Lightningコンポーネントがやってきたヤァヤァヤァ

エンジニアの小川(mitsuruog)です。
先日、Lightningコンポーネントについて社内で勉強会を行いました。

資料はこちらです。

Lightningコンポーネントとは

Lightningコンポーネントとは、Salesforce1 Platform上で画面(UI)を構築する新技術です。

UIをコンポーネントとして作成することができ、複数のコンポーネント化したUI部品をレゴブロックのように組み立てることで、素早くアプリケーションを構築することができます。

特に、AppBuilderと組み合わせることで、コードを作成する必要がなく、デリバリーまでの時間を限りなく0にできる可能性があるため注目しています。

しかし、JavaScriptが培ってきたさまざまなプラクティスを無神経に壊しているなどと言われ、その部分についてはかなり同意できる部分がありますが、今後も様子を伺いながら上手に付き合っていきたいです。

参考資料

すでに国内で先行している企業がありますので、日本語の情報も比較的見つかりやすいかと思います。

特に、Lightningコンポーネントを学習する上では、まずAppirioさんのこちらの記事を一読することをオススメします。
日本語で丁寧に書かれていて、非常に助かりました。

Lightning学習のススメ - 必見 何から手をつけようか迷っているあなたに - Appirio Japan

資料の中で参照した利用はこちらです。

ハンズオン資料

Salesforce Lightning コンポーネントチュートリアル

Appirioさん

実践Lightningコンポーネント開発(1) - Appirio Japan

実践Lightningコンポーネント開発(2) - Appirio Japan

実践Lightningコンポーネント開発(3) - Appirio Japan

テラスカイさん

Lightning開発のポイント

Salesforce Lightning をやってみてあれこれ

Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~

Umekita Force(大阪のSalesforce Developer User Group)が作成した、チュートリアルもポイントを押さえられていていいと思います。

Salesforce - ステップバイステップでLightningコンポーネントを楽しもう! - 準備 - Qiita

ではではー。

2015年5月15日 (金)

Salesforce1 Lightning Fast Seminarにいってきた!

初めまして、なかやまです。フレクトには去年の12月からお世話になってます。これから少しずつブログ書かせてもらいますね!

今週の火曜日にSalesforce1 Lightning Fast Seminarがあったので行ってきました!

Lightning_01

会場は4Fと明記されていたのに、いつものようにJPタワーを登ろうとしました。。

Lightning_02

受付するとLightningの本と時計とかがいただけるとのコト。

Lightning_03

まわりの皆さんはLightningかなりやりこんでいる方ばかりですが、私は初心者です。

Lightning_04

14:00~Lightningコンポーネント概要

Lightning_05

Lightningコンポーネントがモバイル・タブレット対応して、次はデスクトップがくるぞー!

Lightning_06

このLightningは3箇所から生まれてきますよ。

Lightning_07

Lightning_08

14:45~Lightningコンポーネント DeepDive

Lightning_11

都会は回線早くていいけど、電車のっててトンネルだとか田舎にいくと電波遅くなるよね。

対応しようとするとメモリ管理も大変。。でもこのLightningが効率的なんです!

Lightning_12

ちなみにLightningはHTMLとCSS・JS・ちょっとのApexスキルがあれば作れちゃいます!

Lightning_13

デモ画面をみせてもらいましたが、ビジュアルな入力画面いいですよね。AppExchangeで「lightning」と検索するとお試しできるそうです。

Lightning_14

フラッシュだとかクロスプラットフォームうまくいかないけど、

HTML/CSS/JSはとても相性がいいよね!

Lightning_15

このコンポーネントは効率的なんだよ!っていうのを列車が運ぶ表現をしていたのですが、ちょっとうる覚えです。(すいません)

Lightning_17

あとLightningOut!!

Lightning_20

質問タイム。

jQueryとか他のライブラリ使える?

Lightning_21

オフラインサポートしてる?ほかにも質問されてましたが、詳しくはtogetterにて。。

Lightning_22

16:00~Lightningを利用した開発とケーススタディ

Lightning_23

コンポーネントには引数があって、画面からでもカスタマイズ可能です。

Lightning_24

開発者コンソールからLightningApplicationを選んで、数行のコードだけで作れちゃいます!

デモンストレーションで”すごい家計簿”を見せてもらいました。コンポーネントとコンポーネントの組み合わせでここまで表現できるのかと驚きです。コンポーネントを使う場合のコード行数は70行程度!

Lightning_26

続いてエディタと開発環境のお話。

Lightning_29

開発者コンソール~Eclipse、SublimeText、Atomなどで開発できますよ!

その気になればビルド環境も作れるそうです。

Lightning_30

楽しいデモもたくさん見せてもらったので、Lightningにチャレンジしたくなりましたよ!

当日の資料→Salesforce1 Lightning Fast Seminar開催 & 資料公開

Lightning_32

お仕事があったので、ネットワーキングではエビチリと焼きそばだけいただいて帰りました。もっとお話したかったです。。

Lightning_33

こんな感じで、これからもゆるっとSalesforce関係のお話をさせていただくかと思います。

よろしくお願いします^^

2014年12月 7日 (日)

SWTT2014~Salesforce Platformで実現するIoTソリューション~



この記事はSalesforce1 Advent Calendar 2014 - 12月7日の記事です。

エンジニアのこころです。
12/4に行われたSalesforce World Tourでは、フレクトのブースで、
”Salesforce Platformで実現するIoTソリューション”と題した出展を行いました。
本エントリで出展内容を簡単にご紹介します。

内容は次の2つです。

1.シャトルバスのリアルタイム走行情報アプリケーション
2.Salesforce Platformとセンサーデバイスとの連携



1.シャトルバスのリアルタイム走行情報アプリケーション

イベント会場がプリンスパークタワーと虎ノ門ヒルズの2箇所だったため、シャトルバスが2会場間を往復していて、その走行データを可視化するアプリケーションを開発しました。

このアプリは、SWTTアプリ(iOS/Android)にも埋め込まれたり、会場に60インチの画面が複数設置されていたのでご覧になった方も多いのではないでしょうか?

Photo

Dsc_0022

↑こんな感じの。

アプリケーションの構成は、4台のシャトルバスにOBD2コネクタを挿し、走行情報をリアルタイムにHeroku上のサーバで受けて地図画面に位置座標をプロットしています。OBD2車載器にはSIMカードが挿せるのでサーバ側は車載器からデータを直接UDPで受信します。取得できるデータの中で面白かったものと、その使い道をちょっとご紹介すると、

・位置情報・・・緯度、経度の位置座標
・方位・・・北を0度として0〜360度の数値で取得できます。バスのアイコンが道に添って滑らかに運行するアニメーションは、方位の数値により画像を16タイプに分けて描画することで実現しています。
・エンジン負荷・速度・・・バスが走行中か停車中か判定するのに使用しました。実際の利用シーンでは”事故が発生したときアクセルを踏み込んでいたか?”等の評価にも使われているそうです。

アプリケーション側では、

・スマートフォン画面への最適化
・サイネージ画面への最適化
・redisでRead/Write高速化
・アクセス集中時(数千クライアント)をシミュレートした負荷テスト

など、Frontend/Backendの準備、テストともなかなかに大変でしたが、フレクトのスーパーエンジニアがさくさくHerokuで開発していました。

<当日>

・最高時70req/秒ほどでしたがHerokuが難なく捌いてくれました
・バスに乗っているとかなりリアルタイムなのが体感できる

など、評判の良いアプリとなって大成功でしたhappy01


ちなみに、

・トンネル内など、電波状況が良くない場所ではデータが途切れてしまう
・端末からの多量リクエストによりスマホのバッテリーの減りが激しい

など、事前の検証でもどうしようもなかった環境依存や、沢山使って頂けたゆえのフィードバックも頂いておりますhappy02

イベント等で活躍が予想されるこの走行情報アプリ、ぜひぜひ今後にもご注目ください。

OBD2コネクタはコネクシオ様の提供でした。



2.Salesforce Platformとセンサーデバイスとの連携

フレクトのブースにお越しいただいた方は体験されたかもしれませんが、センサーデバイスからSalesforce Platformにアクセスする、駐車場管理のモックアプリケーションを展示しました。

Img_5741

前日作ったジオラマ。

あくまで展示会用のコンセプトモデルです。センサー等も極めてチープなものを使っています。

20141206_230828


シンプルにすると、

20141206_231505_2

駐車場のミニチュアの中には、近接する物体との距離を測る超音波センサーとスイッチが仕込んであります。超音波センサーは半径1.5cm以内に物体が近づいたら検知してフラグをONとし、駐車場の1台用の枠に車が入車するのを再現しています。

スイッチは、コールセンターとの連携をイメージしています。スイッチを押すとSalesforceのケースを作成します。


Raspberry Piで回路をつくり、センサー(超音波センサー、スイッチ)からの標準入力を受けるスクリプトをRaspberry Pi上に用意します。そのスクリプトからAWS上のSalesforce REST APIを経由してSalesforce上のレコードを更新しています。

見て頂いた方には伝わると思いますが、レコードが更新される様子だけを見せてもインパクトがないので、リアルタイム感とPush感を出すために更にSalesforce上でStreaming APIを使い、Twitterやfacebookのタイムラインのように仕上げています。



<大変だったこと>

このモデルではシナリオ決めが大変でした。センサーの入出力とSalesforceのレコードを連動させる事が実際のビジネスに生かせるシナリオを何度も練直し、2転3転しました。

ボツになった案の例
・ブレスレット型のデバイスで脈をとって健康管理
・ゴルフクラブに加速度センサーをつけてスイング分析
・気温、湿度等のセンサーでスマートアグリのモック

デモでやるにはスケールが壮大すぎる、危険すぎる、伝えにくい、専門知識が必要、Salesforce Platformと繋げるメリットが見えにくい、等の理由で見送りました。。



逆に、駐車場のステータス管理を採用したポイントは

・位置情報と密接に連動する(視覚化したアプリがある方が便利)
・コールセンターが必要になる(Salesforceが大活躍する)
・他業種でも読み替えしやすい(倉庫や小売り、不動産、ホームコントローラー等)

IoTという言葉がバズって久しいですが、BtoBのシーンで利用するにはビッグデータの処理やセキュア通信、Analyticsなど考える事が無数にあり、私たちが活躍できることを探して得意分野に特化する必要があると実感します。



<おまけ>

このアプリを作成するにあたって色々なセンサーを買い込みましたが、ウェザーステーションに使う気温・湿度・照度センサー、加速度センサー、匂い(硫黄)を検知するセンサー、CO2濃度を測定するセンサー、カメラ、マイク等AV系センサー・・・デジタル工作用のセンサーが数百円〜千円ちょっとで無数にあり、ホント買い物が楽しいです。
あと、ジオラマも何回か作ったので今なら犬小屋くらい作れる気がします。

こちらも大きなトラブルなく本番当日を終えられてよかったwobbly

Dsc_0038

来年の今頃は家とか車とか展示してるかもしれません。
ブースにお越し頂いた皆様ありがとうございました!

この記事はSalesforce1 Advent Calendar 2014 - 12月7日の記事です。




2014年11月17日 (月)

コミュニティの Salesforce1 サポート

こころです。

Spring '14 以降で

・カスタマーコミュニティライセンス
・パートナーコミュニティライセンス
・その他のサポートされるポータル

で、Salesforce1(iOSで確認)アプリケーションが使用できるようになっていました。
時代はもうWinter'15だというのに古いネタ....

<前提>

・公開済のコミュニティがあること(パートナーコミュニティを使いました)
・コミュニティユーザーのプロファイルで、「Salesforce1 for iOS」「APIの有効化」がオンになっていること。(コミュニティ関係のプロファイルではデフォルトで両方オフになっています。)

①接続先へコミュニティドメインの追加(と削除)

Img_5447_2

右上の歯車アイコンをタップして

Image6

コミュニティのURLと、接続先の名前を登録します。
コミュニティのURLは


https://XXXXX-developer-edition.ap0.force.com/login

の、赤字の部分を登録します。

Image7 こんな感じに新しい接続先"Community"が出来ます。

ちなみに接続先の削除は

Image3

右から左にスワイプすると削除できます。(編集ができないみたいですので、ミスしたら削除して再追加。)

②ログイン

Image1
S1でもコミュニティのデザインが適用されます。

Image4

ログイン前にエラーが出たら

Image2

コミュニティユーザーのプロファイルで、「Salesforce1 for iOS」「APIの有効化」のチェックを見なおしてみてください。

なんてことないのですが、図説されてる資料が見つからなかったので設定方法の備忘としてご参考まで。

2014年11月 3日 (月)

Queueableインタフェースを使った非同期処理実行

エンジニアの谷隈です。

Winter'15から導入された新機能Queueableインタフェースについて書きます。


Queueableインタフェースはfutureメソッドと機能的にはすごく似ています。
どちらも非同期に処理を実行する仕組みです。
ドキュメントで謳われている両者の違い、Queueableインタフェースを利用するメリットは次の2点です。

・ジョブIDを取得して、進行状況を監視できる
・ジョブの連鎖が可能(Winter'15時点では2連鎖まで。Spring'15で無制限になる予定。)

次のコードはQueueableインタフェースを実装したクラスの簡単なサンプルです。
非同期に実行したい処理をexecuteメソッドの中に書きます。

public class QueueableExample implements Queueable {
    public void execute(QueueableContext context) {
		String n = 'Queueable_' + DateTime.now().getTime();
        Account a = new Account(Name=n,Phone='(03) 1234-1234');
        insert a;        
    }
}

処理のキューへの登録にはsystem.enqueueJobメソッドを使用します。
キューに入れられた処理の開始タイミングは呼び出し側のトランザクション完了後の模様。

ID jobID = System.enqueueJob(new QueueableExample());
System.debug('jobID = '+ jobID);

1トランザクション中でキューに登録できるジョブ数は50。
ガバナ制限を超えてキューにジョブを登録しようとした場合は、例外が発生します。

System.LimitException: Too many queueable jobs added to the queue: 51

ジョブの進行状況の取得はAsyncApexJobレコードを検索して取得できます。

AsyncApexJob jobInfo 
	= [SELECT Status,NumberOfErrors FROM AsyncApexJob WHERE Id=:jobID];

futureメソッドとの違いで、ちょっと面白いと思ったのはバッチジョブ内からもキューへの登録/実行が可能な点です。(バッチからfutureメソッドを呼び出した場合は例外が発生)
ただ、現時点では制限により1つしかキューにジョブを追加できないので使えるケースはかなり限られそうです。

最近の派手系追加機能と比べるといかんせん地味なQueueableですが、その内容はfutureメソッドからの順当な進化系なので抑えておいて損はない機能だと思います。


リリースノート
http://docs.releasenotes.salesforce.com/ja-JP/winter15/release-notes/rn_apex_queueing_jobs.htm

The New Apex Queueable Interface
https://developer.salesforce.com/blogs/engineering/2014/10/new-apex-queueable-interface.html

採用情報

株式会社フレクトでは、事業拡大のため、
・Salesforce/Force.comのアプリケーション開発
・HerokuやAWSなどのクラウドプラットフォーム上
でのWebアプリケーション開発
エンジニア、マネージャーを募集中です。

未経験でも、これからクラウドをやってみたい方、
是非ご応募下さい。

フレクト採用ページへ

会社紹介

  • 株式会社フレクトは、
      ・認定コンサルタント
      ・認定上級デベロッパー
      ・認定デベロッパー
    が在籍している、セールスフォースパートナーです。
    また、heroku partnersにも登録されています。
    herokuパートナー
    株式会社フレクト
    Salesforce/Force.com
    導入支援サービス
    弊社の認定プロフェッショナルが支援致します。
    ・Visualforce/Apexによるアプリ開発
    ・Salesforceと連携するWebアプリ開発
    も承っております。
    セールスフォースご検討の際は、
    お気軽にお問合せください。

Twitter

リファレンス

■Developer's Guide(リファレンス)
・Apex  HTML | PDF | 日本語PDF | ガバナ制限
・Visualforce  HTML | PDF
・Web Services API  HTML | PDF | 日本語PDF
・Bulk API  HTML | PDF
・REST API  HTML | PDF | 日本語PDF
・Metadata API  HTML | PDF
・Migration Tool  HTML | PDF
・AJAX Toolkit  HTML | PDF
・Data Loader PDF | 日本語PDF

■早見表 (日本語)
数式
Apex
Visualforce
Web Services API
Chatter