大地はじめにみなさん、あけましておめでとうございます。走れるシステムエンジニア、溝口です。正月はいかがお過ごしだったでしょうか?私はニューイヤー駅伝、箱根駅伝と現地に応援に行って、非常に充実した時間を過ごしていました。しても、青山学院は強いですね〜。原監督の自主性を重んじる指導の元、のびのびと競技をしている選手たちを見るとこちらも元気になってきます。個人的には東京国際大学が初出場、初シードを取ったら面白いのになぁと思っていましたが、やはり箱根路はそんなに甘くはなかったようです。来年以降に期待ですね。私の母校は今回は本戦出場はなりませんでしたが、関東学連の10区で良い走りを見せてくれたので、この経験を持ち帰って来年の箱根駅伝予選会は是非突破して欲しいと思います。iPadで手書きサイン機能を実装したい失礼しました。前置きが長くなりました(まだまだ書き足りないですが)。iOSのネイティブアプリを作る時の要件として、まず挙げられるのが「オフライン対応」だと思います。次点としては何でしょうか?格好良いUI?いやいや、GPSやカメラ機能でしょうか?意外と多いのが、「手書きサイン機能」ではないでしょうか。今回は、「手書きサイン機能」を「5分で」実装し、更にSalesforceにアップロードする所までご紹介しようと思います。ACEDrawingViewとはなぜiOSでは手書きサインの実装が簡単なのか、それはiOSにはこのライブラリがあるからです。https://github.com/acerbetti/ACEDrawingViewACEDrawingViewというライブラリで、UIViewの派生クラスとしてこのビューを実装するだけで、簡単に手書きサインが作れてしまうというなんとも素敵なライブラリになります。2.0になります)ACEDrawingViewで手書きサインを実装するでは、早速実装の方を進めていきましょう。今回は最終的にSalesforceへ手書きサインデータをアップロードする部分まで実装しますので、以前に使用したアプリケーションと同様に、一旦SalesforceMobileSDKを使用したプレーンなプロジェクトを作成します。AppDelegate.swiftはこんな感じになっていると思います。msg:switchMsg)self.resetViewState({self.initializeAppViewState()SalesforceSDKManager.sharedManager().launch()})}}Swift2.0とSalesforceMobileSDKが4.0になった影響で若干変わっている部分もありますが、概ね違いは無いと思います。次に、下準備としてACEDrawingViewをインストールし、プロジェクトにインポートします。installコマンドを実装します。"ACEDrawingView.h"これでACEDrawingViewを使用する準備が整いました。このプロジェクトでMainViewControllerとなっているViewのxibファイルの方を見ていきましょう。今回は取引先オブジェクトにレコードをInsertし、そのレコードの添付ファイルとして手書きサインをアップロードしますので、取引先のNameを入力する項目と、手書きサインを入力するUIViewを配置します。画面下部のUIViewのクラスをUIViewからACEDrawingViewに変更します。xibでの実装はたったこれだけです。error.description)}}全体の実装としてはこんな感じになっています。一つずつ見ていきましょう。UITextField!まずプロパティとして先ほど設定したACEDrawingViewをswift側に記載します。saveButton}viewDidLoadメソッドの中でACEDrawingViewの各設定をします。お絵かきアプリ等を作る場合はここでACEDrawingViewの多種多様なプロパティを設定していくのですが、今回は手書きサインなので文字の太さだけを調整します。ACEDrawingViewの実装はこれで完了です!あとは「image」プロパティにアクセスすることで描いた画像を取り出すことが出来ます。手書きサインをSalesforceにアップロードしてみようでは、アップロードの処理を取引先にレコードをInsertInsertされた取引先のIdを添付ファイルの参照先に設定して、画像ファイルをInsertという流れで実装していきたいと思います。inself.insertAccontSucceeded(responseData)})}保存ボタンタップ時に呼び出される処理です。これ自体は普通のInsert処理ですね。accountId)self.insertAttachment(accountId)}取引先のInsert完了時にコールバックとして呼ばれるメソッドです。ここでInsertされた取引先のIdを引き渡します。inself.insertAttachmentSucceeded(responseData)})}ここではaccountDrawingView.imageとして手書きサインの画像データを取り出し、バイナリデータに変換した後、添付ファイルのBodyに設定してSalesforceのAttachmentにInsert処理を行っています。画像データの取り出しも、バイナリデータへの変換も特に難しい部分は無いですね。このアプリケーションを動かしてみましょう。こんな感じで取引先名と、手書きサインを入力しました。(字が汚い・・・)入力が終わったら、保存ボタンをタップします。SalesforceにInsertされているか見てみましょう。取引先のデータが正しくInsertされていますね。次に、添付ファイルが保存されているか見てみましょう。おー、取引先の関連リストとして添付ファイルが設定されています!では、中身もちゃんとアップロードされているか確かめてみましょう。APIを使用した実装では取引先のInsert処理と、添付ファイルへのInsert処理のトランザクションが分かれてしまうことでしょうか。APIを作成して、画像のバイナリデータと対象のレコードデータを一度に受けられるように作る必要がありますね。APIを呼ぶメソッドも予め用意されています!)まとめiOSネイティブアプリの手書きサイン機能の実装と聞くだけでなんだか難しそうな気はしますが、こんなにも簡単に実装出来てしまいました。検索クラウドやるならテラスカイ。求む!Salesforce開発エンジニア。