‫わかりました｡
‫では､ デリゲートとは何でしょうか｡
‫まあ､ 簡単に言うと､ デリゲートはメソッドへの参照を保持できる型なんだけどね｡
‫そして､ デリゲートを呼び出すと､ 参照されたメソッドが呼び出されます｡
‫他の開発者がモバイルアプリを構築するために使用できるUIライブラリを開発しているとして､ 他の開発者が使用できるUI要素の1つがボタンであるとします｡
‫画面上に緑色のボタンを作成するために使用されるボタンクラスの背後にあるコードを見てみると､
‫このようなボタンは､ 次のプロパティを持っています：値を送信するテキストという文字列､
‫バックカラーという緑がかった色､ そしてもちろん､ ボタンの幅と高さを表すサイズWとサイズHという2つです｡
‫さて､ ここで足りないのは､ ボタンがクリックされたときに実行される必要のあるコードを含むメソッドです｡
‫さて､ ここで問題が発生しました｡
‫このUIシステムを作った開発者は､ このUIシステムを使用している他の開発者が､ ボタンをクリックしたときに何をしたいのかを知ることができません｡
‫そのため､ on clickイベントを通常のメソッドとしてではなく､ デリゲートとして提供する必要があるのです｡
‫また､ デリゲートはメソッドへの参照を格納できる変数なので､ 先ほど聞いたように､ 他の開発者はクリック時に実行させたいロジックを含む独自の実装をメソッド内部に記述し､
‫ボタンのクリック時のデリゲート・スラッシュイベントに代入することができます｡
‫クリックデリゲートは､ 以下のように定義することができます｡
‫では次に､ 少しずつ分解してみましょう｡
‫まず､ このprivateキーワードに指定されたアクセスを書き､ その後にdelegateキーワードを書くことで､
‫コンパイラに新しい型を定義していることを知らせます｡
‫そして最後に､ デリゲートが保存できるメソッドの種類を指定する必要があります｡
‫型というのは戻り値の型のことで､ クリックのパラメータは先ほど定義したデリゲートの名前です｡
‫さて､ 次のステップは､ その新しいデリゲートタイプの変数を実際に作成することです｡
‫そこで､ C-嬰記号で他の変数を定義するのと同じように､ この変数を定義します｡
‫publicで始めることで､ 作成する変数の型が､ クリック時のデリゲートであることがわかります｡
‫そして最後に､ クリック時である変数名です｡
‫ここでも､ Click Delegate型のpublic変数を定義し､ その名前をClickにしました｡
‫この変数は､ 戻り値の型がvoidでパラメータを取らない限り､ 任意のメソッドへの参照を保持または格納することができる｡
‫さもないと､ in変数の中にfloatを格納しようとしたときと同じようなエラーが発生します｡
‫では､ この新しいデリゲートをどのように使えばいいのでしょうか？
‫さて､ このモバイルアプリを開発するためにUIシステムで使用しているIDのキャンバスにボタンをドラッグ＆ドロップすると､
‫ボタンオブジェクトが作成されます｡
‫このボタンの名前を送信ボタンとします｡
‫そこで､ まずボタンがクリックされたときに実行したいロジックを追加します｡
‫今回の例では､ ネットワークに接続し､ メッセージを送信し､ そしてユーザーにメッセージを表示したいと思います｡
‫つまり､ Send Button Clickという､ まだボタンと何の関係もない普通のメソッドがあるわけです｡
‫これを解決するには､ on Click Delegateタイプのon click変数にメソッドを代入する必要があります｡
‫メソッド名を括弧で囲まないで書いているのは､ メソッドを呼び出すのではなく､ その参照を適切なデリゲートに保存しているからです｡
‫今､ ボンネットの中で､ マウスがボタンの上に置かれていて､ マウスがクリックされた場合､ UIシステムは送信ボタンのクリック時デリゲートを呼び出し､
‫その代わりに､ それに割り当てられた任意のメソッドを呼び出すことになります｡
‫この場合､ 送信ボタンのクリックを呼び出し､ メッセージ送信ダイアログが表示されます｡
‫こうすることで､ UIシステムを使う人は誰でも独自のメソッドを作ることができ､ そのメソッドをデリゲートに割り当てれば､
‫条件が整ったときにいつでも呼び出すことができるのです｡
‫オンクリックイベントに限定していません｡
‫例えば､ アプリケーションの起動時や終了時のデリゲートを作成することも可能です｡
‫さて､ 今回は非常に抽象的な例でしたが､ これは一般的なデリゲートの実際の使用例です｡
‫そこで次は､ C-shineにすでに存在するデリゲートの1つを使う方法を学びます｡
‫そしてその後､ この例で行ったのと同様に､ 独自のデリゲートの作成に取り掛かります｡
‫それでは､ 次のビデオでお会いしましょう｡