Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
hello-trema.rb • シンプルですが、これだけで完全なコントローラのコードになっています • (ただし Hello Trema! と表示するだけのものです) class HelloController < Controller def start info "Hello Trema!" end end
コントローラクラス • すべてのコントローラは、クラスとして実装します (`class HelloController`) • Tremaクラスライブラリに用意されている `Controller` クラスのサブクラスとして実装します • コントローラに必要なメソッドは、自動的に継承されます (flow-mod メッセージの送信等) class HelloController < Controller #... end
イベントハンドラ class MyController < Controller def start # start-up event handler # ... end def packet_indpid, msg # Packet-in received handler # ... end # ... end • イベントドリブン形式で、コントローラを記述します • 各ハンドラを、インスタンスメソッドとして実装します
イベントの振り分け # Packet-in handling in Trema class MyController < Controller # automatically called at startup def start # ... end # automatically caled when receiving a packet-in def packet_indpid, msg # ... end end • Tremaはイベントの振り分けにリフレクションを使っています • そのため、複雑になりがちなディスパッチやハンドラ登録を行う必要はありません
短く書く • コードの長さと生産性の間には強い相関関係 • e.g. Arc Programming Language [Paul Graham] • コードを短くすることで、 • お約束コードを書く時間を最小にする • バグ混入の可能性を少なくする Tremaは、実行時の効率性よりも プログラマーの生産性に重きをおいています
Logging API • ロギングレベル毎に用意されたシンプルな API (debug, info, etc) • `trema ruby` で、Logging API を含む API リファレンスを表示 class HelloController < Controller def start # outputs an info level message info "Hello Trema!" end end