Translate

2011年4月24日日曜日

Force.com開発コースを受講する

Salesforce社の最後の研修、
Force.com開発コースを受講した。

以下がテキストの目次。
#2011年2月版

Force.comイントロダクション
  • Force.comとは
  • Force.comのメリット
  • Force.comプラットフォームでの開発
  • アップグレードとメンテナンス
  • Force.comプラットフォームでの開発に適するアプリケーション
  • 人材採用管理アプリケーション
このコースはあまり内容がないので
実際に速攻で省略された。
まあ前提研修受講済みの人なら飛ばされても
文句を言う人はいないと思う程度の内容。
この研修では前回の基礎コース同様
人材採用管理アプリをベースに演習が構築されている。


Force,comでの開発(DEV551)
  • Modile1: Development as a Service
  • Application Lifecycle Management(ALM)入門
  • Development as a Service に関するSalesforce.comの考え方
  • Module2: 統合開発環境
  • 概要
  • メタデータAPI
  • Force.com IDE
  • Force.com Sandbox
  • Force.com Code Share
  • 参考資料:変更管理
Force.com IDEはEclipseのForce.com開発用プラグイン。
Code Shareとあるが、構成管理ツールが提供されるわけではない。
SandboxやDeveloper Editionの使い方についての解説がメインかな。


Force.com Code(Apex)(DEV541)
  • Module1: Apexの紹介
  • Apexの紹介
  • Apexはクラウド
  • Apexの紹介使用例
  • Module2: データ型とロジック
  • データ型
  • ロジック
  • Module3: Apexでのオブジェクト指向プログラミング
  • クラス
  • 変数とメソッド
  • Apexライブラリクラス
  • Module4: データベース
  • sObjectリレーション
  • SOQL
  • SOSL
  • DML
  • Apex共有
  • Module5: Apexトリガ
  • トリガの型
  • トリガコンテキスト
  • トリガの制限
  • Module6: 例外、デバッグとテスト
  • 例外
  • デバッグ
  • テスト
  • Module7: 配置
  • 配置の概要
  • 他組織への配置
  • Module8: ApexとWebサービス
  • SOAP Webサービス
  • SOAP Webサービスコールアウト
  • REST Webサービスコールアウト
  • 非同期Apex
  • Module9: ApexとE-mail
  • インバウンドEmailサービス
  • Apexからのメール送信
  • Module10: 高度なトピック
  • 動的Apex
  • Visualforceコントローラ
  • バッチApex
  • カスタム設定

Apexクラス中心のコース。
文法は基本的な書き方程度で
言語仕様をがっつりという講義はなかった。
中心はDML/SOQL/SOSLか。
Force.com環境ではSOAPサーバ、クライアントどっちにもなれるので
それを説明してくれる。
Force.com上のメールアドレスへメールを送ると
トリガが走ったり指定のアドレスへ送信するとかもできることを学ぶ。
バッチは重要だけどとばされてしまった。
どうも時限起動できるバッチが作れるらしい。
工夫すれば出来るのかもしれないが、
この研修では
RESTサービスのサーバとしては使えないと教えている。
ガバナ制約があるのでRESTサーバにするのは
正直つらい基盤であるのでしょうがないところはある。


Force.com(Visualforce) Pages(DEV511)
  • Module1: visualforceの紹介
  • Visualforceの概要
  • Visualforceの基本
  • Module2: Visualforceコンポーネント(タグ)
  • タグの基本
  • タグバインディング
  • Module3: Visualforceコンポーネント(タグ)ライブラリ
  • コアコンポーネント
  • デフォルトLook and Feelコンポーネント
  • Module4: フォームとアウトプットコンポーネント
  • フォームコンポーネント
  • 出力コンポーネント
  • Module5: Visualforceコンポーネントの部品化
  • Module6: VisualforceでのJava Script
  • アクションバインディングとJava Script
  • JavaScript機能
  • ページの部分的な更新
  • 非同期オペレーションステータス
  • イベント上のAJAXの動作
  • Module7: Introduction to Visualforce(Apex)コントローラ
  • コントローラの概要
  • 標準コントローラ
  • カスタムコントローラ
  • 拡張コントローラ
  • Module8: その他
  • VisualforceとSite
  • VisualforceとSiteモバイル
apexタグをひとつひとつ解説してくれるわけではない。
こういうのがあるよというインデックスレベルでどんどん進むし
テキストにすべてのタグが記載されているわけではない。
Siteについてもがっつりとばされてしまった。
このコースの内容からすると、
どうも既存の宣言的開発ではちょっと届かない範囲
をこのコース内の知識でナントカクリアしてね
といった構成に読めた。
コントローラについては解説があったが
どうも最近次のコースに独立したためか
概要レベルにとどまった。

Force.com(Visualforce)Page Controllers(DEV521)
  • Module1: Visualforceの復習
  • Visualforceページ
  • Module2: Visualforce標準コントローラ
  • Visualforceコントローラ
  • 標準コントローラ
  • Module3: Visualforce拡張コントローラとカスタムコントローラ
  • カスタムコントローラの作成
  • 拡張コントローラ
  • カスタムコントローラの作成
  • Module4: その他のVisualforceコントローラトピック
  • カスタムウィザードコントローラ
  • コンポーネントコントローラ
  • コントローラのテストと配置
  • Visualforce付録

このコースでコントローラについて説明。
Force.com上ではセッションが使えないが
そのかわりにViewStateという機能があり
これでやりくりする方法を学ぶ。






この研修では計5日間で、
開発環境から、DML、SOQL/SOSLなどのDBまわり、
Apexクラス、トリガ、Visualforce、そしてコントローラと
毎日毎日新しいことを講義と演習で綴られている。

テキストは本体が約400ページ、
ページ数が振られていないので詳しく数えていないが
演習テキスト(別冊)も100ページは超えている。

予想通りテキストも演習も全部学習できるわけではない。
以下は演習ガイドの目次だが、右端に*をつけた部が
実際に演習を行った。
だいたい6割といったところか。

Force.comでの開発(3/8)(DEV551)
  • 演習1-1 Sandbox組織の作り方*
  • 演習1-2 Force.com IDEのインストールと構成
  • 演習1-3 Force.com IDEプロジェクトの作成*
  • 演習2-1 組織の構成を調査
  • 演習2-2 スキーマブラウザによるSOQLクエリの実行*
  • 演習2-3 既存オブジェクトと修正
  • 演習2-4 新しいオブジェクトとリレーションシップの作成
  • 演習2-5 Force.com IDEとForce.com Builder間の連動*
本研修の環境作りも入っている演習と行ったところ。


Apex(12/18)(DEV541)
  • 演習1-1 Hello World Apexクラスとトリガの作成*
  • 演習2-1 匿名ブロックを使用した簡単なApexコーディング*
  • 演習4-1 募集職種(Position)の共有*
  • 演習5-1 申し込み(job Application)のStatusの変更*
  • 演習5-2 応募者(Candidate)の重複防止*
  • 演習5-3 給与(Salary)情報の共有*
  • 演習5-4 求人サイトに募集職種(Position)を掲載
  • 演習5-5 申し込み(Position)の共有(Option)
  • 演習5-6 と給与(Salary)の関係を1対1に制限
  • 演習6-1 テストクラスの作成*
  • 演習7-1 別の組織へのApex配置*
  • 演習8-1 カスタムSOAP Webサービス*
  • 演習8-2 外部WSDLのインポート*
  • 演習8-3 非SOAP HTTPコールアウト
  • 演習9-1 インバウンドメールサービス*
  • 演習9-2 アウトバウンドメールの送信*
  • 演習10-1 動的SOQLでの検索
  • 演習10-2 Apexトリガを使用した上級な承認プロセス
Apexトリガが利用される業務要件ケースを
演習タイトル化してくれている。
穴あきソースを埋める形式なのだが、
埋めなくてはいけないコードの説明が
コメントで書かれている。
おまけに全部英語..
しかもその文面が人材管理アプリのオブジェクト構造を
きちんと理解していないと時間内にとても終えることは出来ない。
このため、ほとんどの研修受講者は回答コードをEclipseに
貼り付けてコードを読んで理解するという方式をとらざるを得なかった。
講師も一部日本語化して配布していたが、
正直研修前に全部日本語化しておいてほしかったところだ。


Visualforce Pages(8/11)(DEV511)
  • 演習1-1 Visualforce Hello Worldの作成*
  • 演習2-1 VisualforceでのPDFの生成*
  • 演習3-1 Salesforce詳細ページの再作成*
  • 演習4-1 別のUIウィジェットを使用したデフォルト編集ページのオーバライド*
  • 演習4-2 インラインページの表のデータの表示*
  • 演習5-1 Flashウィジェットを含むデフォルト編集ページのオーバライド*
  • 演習5-2 カスタムコンポーネントの作成
  • 演習5-3 ページテンプレートを使用したページの作成
  • 演習6-1 状況フィールドのための部分的ページリフレッシュの作成*
  • 演習7-1 カスタムコントローラを使用したVisualforceページの作成*
  • 演習7-2 より複雑なコントローラの使用
Visualforceの演習では
apexタグが大量に出てくる。
のでほぼコードを独力で埋めることは出来なくなった。
毎日の詰め込みで記憶飽和量をほぼ全員が突破している。
特筆すべきはカスタムコンポーネントの作り方か。
これはコミュニティサイトのドキュメントで学習するのは
とても効率が悪いので。


Visualforce Controllers(3/7)(DeV521)
  • 演習3-1 拡張コントローラの作成*
  • 演習3-2 拡張コントローラへのGetter/Setterの作成
  • 演習3-3 カスタムコントローラへのGetter/Setterの作成
  • 演習3-4 オブジェクトラッパークラスを使用するコントローラの作成
  • 演習4-1 マルチウィザード用の拡張コントローラの作成*
  • 演習4-2 カスタムコンポーネントコントローラの作成
  • 演習4-3 カスタムコントローラの単体テストの実施*

コントローラとなるApexクラスの作り方が中心。
ViewStateの使い方がポイント。
結論を言うと
コントローラクラスは JSF の
Managed Bean だとおもえばいい。
そのManaged Bean上の
Transient以外のフィールドが
自動的にViewState上にのっかる。
ただしSavePointがフィールドとして
乗っけられないので、
データベース(sObject)のトランザクションは
1リクエスト完結せざるをえない。
まあアプリとしてロールバック処理を
1行1行書いていけばつくることはできる。




この研修受講前提として
Java/.NETでWebアプリ開発をやったことのある人、
Java開発者でいえばJSFないしはStrutsでWebアプリを作った経験がある人か。

正直未経験者は
テキストをもらいにこの研修に参加するだけになってしまう。
部下を研修に行かせようとする人は
投資が無駄になるような人は送り込まない方が良い。



今回の講師は
Salesforce研修全部の講師の中で
一番腰が引けていた。
ただ
研修期間内は講師はSalesforce社に質問を
なげられるらしい。
なので、知識のない人が先生やっていても
きがねなくばんばん質問しちゃって良いようだ。

ただし
認定試験の内容に関する質問に答えると
講師資格を剥奪されるらしい。
サイトに置いてあるStudyGuide以上の内容は
回答できない「ガバナ制約」が働いている事に注意。

0 件のコメント:

FloydHubを使ってKerasのサンプル lstm_text_generation.py を動かしてみる

タイムラインにふらっと入ってきた記事で FloydHubというものを知った。 FloydHub https://www.floydhub.com/ Heroku風の機械学習環境のPaaSとのこと。 .. そもそもHeroku知らない んですけど..というかPyth...