【SDNチャレンジ】 第22回 Trema-edge編

2015.10. 2


TremaのOpenFlow1.3用フレームワーク「Trema-edge」

forestroad.jpg

今回はOpenFlowコントローラのTrema-edgeについてご紹介します

Trema-edgeは「OpenFlow1.3に対応したTremaのフレームワーク」です。RyuやFloodlightの様にOpenFlow1.3に対応した各コントローラの開発が進む中、TremaプロジェクトからリリースされたのがTrema-edgeなのです。下表の通り、それまでTremaが対応するOpenFlowのバージョンは1.0でした。(思い返せば、このブログシリーズで最初に扱ったのがTremaでした。。懐かしいです)

コントローラ比較表.png

対応するOpenFlowのバージョンが異なる点に付随し、両コントローラが使用する言語にも注目しておく必要があります。Trema-edgeとTremaは共にRuby、C言語で記述されていますが、内RubyについてTrema-edgeではRuby2.0以上が使用されており、よりソースコードが簡略化されユーザライクな実装となっています。

それでは、今回も実際のインストールを進めていきます。

事前準備 ~最新版のRuby-2.2.3をインストール

(実行環境)

・仮想OS:Ubuntu (ver14.04)
・仮想化ソフトウェア:Virtual BOX (ver4.3.26)

今回は最新安定版のRuby-2.2.3(2015/10/2現在)を使用しますが、Ruby2.0以上を動作させるためにはUbuntu14.04の環境が必要となる点にご留意下さい。まずはシステム内パッケージリストの更新と、必要パッケージのインストールから。
$ sudo apt-get update
$ sudo apt-get install -y build-essential git gcc g++ make libpcap-dev libssl-dev

インストール方法の指定は特にありませんでしたが、ソースコードからインストールを行う様に留意して下さい。それ以外の方法でインストールすると、後述するTrema-edgeインストール時に以下の様に出力され、rakeコマンドが正常に終了しない事象が見受けられました。(因みにrakeとはrubyで処理内容を記述できるビルドコマンドです)TEINF-21.PNG

ruby-2.2.3.tar.gzをダウンロードします。
$ wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gzTEINS-63.PNG

そして、ruby-2.2.3.tar.gzを解凍しましょう。
$ tar xzvf ruby-2.2.3.tar.gz
$ ls

TEINS-06.PNG

ruby-2.2.3デイレクトリに移動し、インストール先のトップディレクトリを/usrに指定してMakefileを作成します。
$ cd ruby-2.2.3
$ ./configure --prefix=/usr

TEINS-07.PNG

作成されたMakefileに従って、コンパイルします。以下のように表示されれば成功です。
$ make

TEINS-09.PNG

作成されたファイルをディレクトリにインストールします。
$ sudo make install

TEINS-11.PNG

新しくバージョン2.2.3のRubyがインストールされました。これでTrema-edgeをインストールする事前準備が完了です!
$ cd ~
$ ruby -v

TEINS-12.PNG

Trema-edgeをインストールしよう

 

forest2.jpg

Trema同様、Rubyのライブラリーからbundlerでインストールを行います。まずはbundlerのインストールから始めましょう。

gem:Rubyのライブラリー公開形式であり、Rubyと共にインストールされています。
bundler:Rubyのライブラリーを管理する仕組みであり、これによりユーザはgemのバージョンを意識する事なく、Rubyのライブラリーをインストールできます。

$ sudo gem install bundlerTEINS-13.PNG

では、Trema-edgeをダウンロードします。
$ git clone https://github.com/trema/trema-edge.git

TEINS-14-1.PNG

ディレクトリを移動し、Trema-edgeのインストールを実行します。以下の様にメッセージが表示されれば成功です。
$ ls
$ cd ~/trema-edge
$ bundle install

TEINS-16.PNG

最後に、rakeコマンドでTrema-edgeを実行環境に適合させます。(失敗してしまった場合は、Rubyがソースコードからインストールされているか確認してみて下さい)
$ rake

TEINS-18.PNG

Trema-edgeのバージョン0.1.0がインストールされているのを確認できます。
$ ./trema -v

TEINS-20.PNG

各サンプルコードは、以下のディレクトリに格納されています。
$ ls src/examples

TEINS-22.PNG

試しにhello_trema.rbhello_trema.confのソースコードを覗いてみました。内容から、OpenFlowスイッチが接続されたことを表示する様になっているのが分かります。

(hello_trema.rb)

class HelloController < Controller
  def switch_ready(datapath_id)
    info "Hello %#x from #{ ARGV[0] }!" % datapath_id"
  end
end

2行目:switch_readyメソッドで、OpenFlowスイッチから接続要求を受信したときの動作を定義しています。
3行目:文字列を表示します。(因みに%は文字列の先頭であることを、xは文字列の最後であることをそれぞれ示しています。 #は引数を示し、#{ARGV[0]}は、コマンドラインの最初の引数です)

(hello_trema.conf)

trema_switch {
  datapath_id "0xabc"
}

2行目:datapath_idは"0xabc"となっています。

では、hello_trema.rbを実行してみましょう。
$ ./trema run src/examples/hello_trema/hello_trema.rb -c src/examples/hello_trema/hello_trema.conf

TEINS-28.PNG

datapath_id は"0xabc"で、コマンドラインの最初の引数は"src/examples/hello_trema/hello_trema.rb"です。Trema-edgeが正常動作することが確認できました。

Trema-edgeをMininetに接続しよう

Mininetのインストールについては、「SDNチャレンジ ~OpenDaylight動作編」のブログをご参照下さい。

Net2-MN-N.png

repeater-hub.rbの動作自体はTrema(OpenFlow1.0)と同様です。packet_inメッセージを受信したOpenFlowコントローラはOpenFlowスイッチに対してフローを書き込んだ後、OpenFlowスイッチにパケット送信を指示します。ただ、サンプルコードを覗いてみると、Trema-edgeでは以下の変更を確認できました。

switch_readyメソッドが追加・・・switch_readyメソッドはTrema独自のイベントで、OpenFlowプロトコルの仕様にはメッセージとしては定義されていません。OpenFlowコントローラがOpenFlowスイッチのプロトコルバージョンの確認やID等の固有情報を取得し、OpenFlowスイッチを初期化した上で、OpenFlowスイッチとの接続が確立したことを通知します。

インストラクションの追加・・・OpenFlow1.0では「マッチ」「アクション」等でフローを定義しますが、OpenFlow1.3ではインストラクションが追加されています。インストラクションはマッチに一致したパケットの処理内容を記述し、インストラクションに対しアクションが記述されます。ソースコードを見る限りでは、アクションを直接記述することもできるようです。

repeater-hub.rb

class RepeaterHub < Controller
  def switch_ready(datapath_id)
    action = SendOutPort.new(port_number: OFPP_CONTROLLER, max_len: OFPCML_NO_BUFFER)
    ins = ApplyAction.new(actions: [action])
    send_flow_mod_add(datapath_id,
                      priority: OFP_LOW_PRIORITY,
                      buffer_id: OFP_NO_BUFFER,
                      flags: OFPFF_SEND_FLOW_REM,
                      instructions: [ins]
    )
  end

  def packet_in(datapath_id, message)
    action = SendOutPort.new(OFPP_ALL)
    ins = ApplyAction.new(actions: [action])
    match = ExactMatch.from(message)
    send_flow_mod_add(
      datapath_id,
      match: ExactMatch.from(message),
      instructions: [ins]
    )
    send_packet_out(
      datapath_id,
      packet_in: message,
      actions: [action]
    )
  end
end

2~4行目:
switch_readyメソッドを定義しています。
OpenFlowコントローラ(OFPP_CONTROLLER)に対し、パケット全体をpacket_inメッセージとして送(OFPCML_NO_BUFFER)する様アクションとして定義しています。パケットを受信した際は、指定された上記アクションを適用する様定義しています。ApplyActionとは、アクションセットは変更せず指定アクションを直ちに適用するという意味です。

5~9行目:
接続が確立したOpenFlowスイッチに以下フローを追加します。
・priorityをOFP_LOW_PRIORITYに指定し、1パケットに複数のフローが一致した場合、他のフローで処理します。
・buffer_idをOFP_NO_BUFFERに指定し、パケット全体を送信します。
・flagsをOFPFF_SEND_FLOW_REMに指定し、このフローが削除された時にOpenFlowコントローラにFlowRemovedメッセージを送信します。

13~16行目:
packet_inメソッドを定義しています。OpenFlowスイッチがフローに一致しないパケットをpacket_inで受信した場合、OpenFlowコントローラはOpenFlowスイッチにフローを追加し、全ポートからのパケット送信を指示します。フローに一致するパケットを受信した場合、3行目で定義されたアクションを適用するように定義します。16行目では、受信したpacket_inメッセージがマッチングルールの全ての条件に一致するという条件を定義しています。

17~21行目:
OpenFlowコントローラはOpenFlowスイッチに以下フローを追加します。
・packet_inメッセージを受信したOpenFlowスイッチの指定
・受信したpacket_inメッセージがマッチングルールの全条件に一致するという条件を定義

22~26行目
packet_outメソッドの定義をしています。packet_inで受信したパケットを全ポートから送信させます。

OpenFlow1.3に対応するTrema-edgeは、Mininetに接続させる点でもTremaと異なりました。まず、Mininetを起動して、OpenFlowスイッチをポート番号6653に接続します。
$ sudo mn --controller=remote,ip=127.0.0.1,port=6653

TEINS-44.PNG

別の端末を起動し、OpenFlowスイッチをOpenFlow1.3に対応する様設定します。
$ sudo ovs-vsctl set bridge s1 protocols=OpenFlow13

次に、サンプルコードのrepeater-hub.rbを起動します。
$ cd ~/trema-edge
$ ./trema run src/examples/repeater_hub/repeater-hub.rb

Trema-edgeにmininetを接続し、正常動作していることを確認します。
mininet> pingall

TEINS-47.PNG

Trema-edgeをOpen vSwitch(Raspberry Pi2)に接続しよう

Raspberry Pi2へのOpen vSwitchインストールについては、「SDNチャレンジ ~Raspberry Pi2にOpen vSwitchをインストール」を参照してください。

Net2-OVS.png

Trema-edgeの起動方法はMininetの場合と同じです。

サンプルコードのrepeater-hub.rbを起動します。
$ cd ~/trema-edge
$ ./trema run src/examples/repeater_hub/repeater-hub.rb

Open vSwitchをOPenFlow1.3に対応する様設定し、OpenFlowスイッチを接続ます。
pi@raspberry~$ sudo ovs-vsctl set bridge br1 protocols=OpenFlow13
pi@raspberry~$ sudo ovs-vsctl set-controller br1 tcp:192.168.137.8

pingによる疎通確認をすることができました。

Open vSwitchをOPenFlow1.3に対応する様設定しましたが、以下の様に出力されてしまい、フローの取得に失敗してしまいました。
pi@raspberry~$ sudo ovs-ofctl dump-flows br1

TEINS-53.PNG

2015-09-07T07:01:19Z|00001|vconn|WARN|unix:/usr/local/var/run/openvswitch/br1.mgmt: version negotiation failed (we support version 0x01, peer supports version 0x04)
ovs-ofctl: br1: failed to connect to socket (Broken pipe)

調査したところ、OpenFlow1.3でdump-flowコマンドは以下の様に-Oオプションを追加する様です。結果、無事フローの確認ができました。
pi@raspberry~$ sudo ovs-ofctl -O Openflow13 dump-flows br1TEINS-62.PNG

C言語で記述されたサンプルコードを実行してみよう

最後に、Trema-edgeにはC言語で記述されたサンプルコードの実行ファイルが格納されているので、そちらも実行してみました。
$ ls objects/examples/hello_trema

TEINS-59.PNG

hello_tremaを実行してみると、Ruby同様に成功しました。
$ ./trema run objects/examples/hello_trema/hello_trema -c src/examples/hello_trema/hello_trema.conf

TEINS-57.PNG

次に、repeater-hubを実行し、mininetに接続してみます。この記事の「Trema-edgeをMininetに接続しよう」と基本的に同様で、repeater-hubの起動コマンドだけが異なります。
$ sudo mn --controller=remote,ip=127.0.0.1,port=6653
$ sudo ovs-vsctl set Bridge s1 protocols=OpenFlow13

repeater-hubを起動します。
$ cd ~/trema-edge
$ ./trema run objects/examples/repeater_hub/repeater_hub

Trema-edgeにmininetを接続すると、正常に動作していることを確認できました。
mininet> pingall

おわりに

今回はせっかくなのでC言語のサンプルコードも実行しつつ、Trema-edgeをご紹介しました。これまでC言語に触れる機会が十分でなかった事もあり、ソースコードの内容を理解するのも一苦労でした。Rubyの有り難さが改めて身に染みます。

C言語はその歴史の長さから開発者も多く、コンパイルされたバイナリーファイルを実行するため高速性を持っています。ユーザライクなRubyと併せてお互いの良い特徴をうまく取り込めば、Trema-edge(およびTrema)はより実用的なOpenFlowコントローラになっていきそうですね。

今回も最後までお付き合いを頂き、ありがとうございました。

hike.jpg



SDN/NFVと同じカテゴリーの記事


Trema-edgeと同じカテゴリーの記事


技術関連と同じカテゴリーの記事



RSS
最近のエントリー
2017.4.21
【検証自動化】第6回 AT-CLabを使ってみる
2017.4.21
【OSSチャレンジ】第4回 Elasticsearch紹介
2017.4. 7
【OSC2017 Tokyo/Spring】OpenStackを宇宙で!?
2017.3.28
【OSSチャレンジ】 第3回 Bacula紹介:後編
2017.3. 9
【OpenStackチャレンジ】 第29回 Ocata紹介編
2017.2.24
【OSSチャレンジ】 第2回 Docker紹介編
2017.2.20
【OSSチャレンジ】 第1回 Bacula紹介:前編
2017.2. 1
【体験記】最後のフロンティア!? ~ミャンマー 体験記~
2017.1.18
【データベース】pgpool-IIによるDBサーバ負荷分散
2016.12.16
【ログ解析】第2回Splunkのログ解析
2016.12. 9
LPIC304 体験記
2016.11.19
【OSC2016 Tokyo/Fall】VRとOpenStackを連携
2016.11.11
【次世代通信技術】 第1回 5G入門編
2016.10.28
【ログ解析】第1回Splunkの紹介と起動
2016.10.21
【OpenStackチャレンジ】 第28回 Stackalytics登録編
2016.10.14
【OpenStackチャレンジ】 第27回 OpenStack Newton紹介編
2016.10. 7
【検証自動化】第5回 Selenium IDEで記録したテストをJenkinsのジョブから実行する ~PC一台でブラウザテストを自動化~【後編】
2016.9.30
【OpenStackチャレンジ】 第26回 Neutron環境構築編
2016.9.23
【いまさら聞けない!エンジニアの基本シリーズ】 第6回 きれいなログにするためのLinuxお作法
2016.9.16
【OpenStackチャレンジ】 第25回 Nova環境構築編
2016.9. 9
【OpenStackチャレンジ】 第24回 Cinder環境構築編
2016.9. 2
【OpenStackチャレンジ】 第23回 OpenStackコミュニティ~翻訳編
2016.8.26
【OpenStackチャレンジ】 第22回 Glance環境構築編
2016.8.19
【検証自動化】第4回 Selenium IDEでテストケースを記録・実行する ~PC一台でブラウザテストを自動化~【前編】
2016.8. 9
【OpenStackチャレンジ】 第21回 OpenStackコミュニティ 日本語翻訳チーム参加編
2016.8. 5
【OpenStackチャレンジ】 第20回 構成管理ツール「Ansible」を用いたOpenStack上のサーバ構築
2016.7.29
【検証自動化】第3回 IT検証フォーラム2016に出展しました!
2016.7.22
【OpenStackチャレンジ】 第19回 OpenStack Upstream Training編
2016.7.15
【検証自動化】第2回 TestShell+TestCenter連携編
2016.7. 8
【OpenStackチャレンジ】 第18回 HEAT紹介編
2016.7. 4
QNAP紹介(Dockerコンテナ&OpenStack Swift連携)
2016.6.26
【いまさら聞けない!エンジニアの基本シリーズ】 第5回 GitHubを使いこなそう
2016.6.19
【OpenStackチャレンジ】 第17回 Zabbix環境構築編
2016.6.12
【検証自動化】第1回 TestShell編
2016.6. 5
【OpenStackチャレンジ】 第16回 Mirantis 「OpenStack FUEL管理」セミナー紹介編
2016.5.29
【OpenStackチャレンジ】 第15回 Swift環境構築編
2016.5.22
【OpenStackチャレンジ】 第14回 Keystone環境構築編
2016.5.15
【OpenStackチャレンジ】 第13回 Mirantis OpenStack紹介編
2016.5. 2
【OpenStackチャレンジ】 第12回DevStack~ Ironic環境構築編
2016.4.24
【OpenStackチャレンジ】 第11回 インフラエンジニア必見のOpenStackセミナーを開催しました!
2016.4.17
【OpenStackチャレンジ】 第10回 OpenStack Mitaka紹介編
2016.4.10
【Linuxを使いこなす】 CentOSのローカルリポジトリを構築しよう
2016.4. 3
【OpenStackチャレンジ】 第9回 仮想マシンが起動するコンピュートノードを指定してみよう
2016.3.29
【OpenStack チャレンジ】 第8回 ゲストマシンの性能比較をしてみました!
2016.3.19
【OSC2016】第3回 ChatOpsでOpenStackをAPIから制御する
2016.3.12
【OSC2016】第2回Let'sChat Hubot編
2016.3. 4
【OSC2016】第1回ChatOpsの構築
2016.1.31
【OpenStackチャレンジ】 第7回 DevStack~All-In-One Single Machine編
2016.1.22
【OpenStackチャレンジ】 第6回 policy.json紹介編
2016.1.13
【OpenStackチャレンジ】 第5回 Ceilometerについて知ろう!
2016.1. 8
【いまさら聞けない!エンジニアの基本シリーズ】 第4回 VMware基本動作編
2015.12.24
【1年間ありがとう!】2015年度エンジニアブログ アクセスランキング発表!
2015.12.18
【SDNチャレンジ】 第29回 Mininet編
2015.12.14
【いまさら聞けない!エンジニアの基本シリーズ】 第3回 VMwareインストール編
2015.12.10
【OpenStackチャレンジ】第4回 ConoHaでOpenStack環境を構築!
2015.12. 4
【いまさら聞けない!エンジニアの基本シリーズ】 第2回 VirtualBox基本動作編
2015.12. 4
【OpenStackチャレンジ】 第3回 OpenDaylight(Lithium)との連携に挑戦!
2015.11.27
【いまさら聞けない!エンジニアの基本シリーズ】 第1回 VirtualBoxインストール編
2015.11.20
【SDNチャレンジ】 第28回 WiresharkでOpenFlowを解析しよう!
2015.11.15
OpenStackの技術者認定資格「OPCEL認定試験」に合格しました!
2015.11. 9
「Windows Server 2003」から「Windows Server 2012 R2」への移行に不安を抱えるお客様へ
2015.11. 6
【SDNチャレンジ】 第27回 OpenMUL編
2015.10.30
【SDNチャレンジ】 第26回 ONOS-BGPルータ編
2015.10.23
【SDNチャレンジ】 第25回 ONOS GUI編 / [告知]10/24(土),25(日)にOSCに出展します!
2015.10.16
【SDNチャレンジ】 第24回 ONOSインストール編
2015.10. 9
【SDNチャレンジ】 第23回 OpenDaylightユーザ会に参加しました/Lithiumインストール編
2015.10. 2
【SDNチャレンジ】 第22回 Trema-edge編
2015.9.29
【OpenStackチャレンジ】 番外編 10/26(月)からLPI-Japanの「OPCEL認定試験」がスタートします!
2015.9.25
【SDNチャレンジ】 第21回 POX編
2015.9.18
【OpenStackチャレンジ】 第2回 コンポーネント紹介編
2015.9.11
【SDNチャレンジ】 第20回 Floodlight編
2015.9. 4
【OpenStackチャレンジ】 第1回 OpenStackインストール編
2015.9. 3
【ウェブサイトのロードテストをする】 最終回 Siege編
2015.8.28
【SDNチャレンジ】 第19回 Raspberry Piでユースケースに挑戦!
2015.8.21
【SDNチャレンジ】 第18回 OF-Patch動作編
2015.8.13
【SDNチャレンジ】 第17回 OF-Patch紹介編
2015.8. 7
Windows10をインストールしてみました!
2015.8. 4
【ウェブサイトのロードテストをする】 第3回 Tsung編
2015.7.31
【SDNチャレンジ】 第16回 Ryuコントローラインストール編
2015.7.25
【SDNチャレンジ】 第15回 Open vSwitch性能試験編
2015.7.17
【SDNチャレンジ】 第14回 Tcpreplay編
2015.7.17
RedHat OpenStack 管理者認定試験に合格しました!
2015.7.11
【SDNチャレンジ】 第13回 Vyattaコントローラ REST API編
2015.7. 3
【SDNチャレンジ】 第12回 Vyattaコントローラ動作編
2015.7. 1
【ウェブサイトのロードテストをする】 第2回 curl-loader編
2015.6.26
【SDNチャレンジ】 第11回 OpenDaylight動作編②
2015.6.19
【SDNチャレンジ】 第10回 OpenDaylight動作編①
2015.6.18
【ウェブサイトのロードテストをする】 第1回 Apache JMeter編
2015.6.12
【SDNチャレンジ】 第9回 リピーターハブとラーニングスイッチの動作比較編
2015.6. 5
【SDNチャレンジ】 第8回 Tremasharkインストール編
2015.5.25
【SDNチャレンジ】 第7回 帯域制御・ファイアウォール・パケット書換え編
2015.5.22
【SDNチャレンジ】 第6回 ラーニングスイッチ作成編
2015.5.15
【SDNチャレンジ】 第5回 Raspberry Pi2にOpen vSwitchをインストール
2015.5. 8
【SDNチャレンジ】 第4回 5/13(水)、14(木)、15(金)の展示会にて検証自動化デモを実施します!
2015.4.27
【SDNチャレンジ】 第3回 Tremaリピーターハブ編
2015.4.21
【SDNチャレンジ】 第2回 OpenFlowコントローラ作成編
2015.4.14
【SDNチャレンジ】 第1回 Tremaインストール編
2014.8.20
【注意!】8月13日のWindows Updateを適用すると起動できなくなる事例が報告されています!
2014.5.23
約6割の企業が悩んでいるのに、対策しないんですか...?
2014.1. 9
新年あけましておめでとうございます。
2013.12.24
2013年エンジニアブログ アクセスランキング発表!
2013.12.17
コミュニケーション「活性化」の第一歩
2013.10.29
なぜ儲かっているのか分からない!?
2013.10.15
「何を変えるのか、何に変えるのか、どのように変えるのか」
2013.9.17
ブラック企業にドラッカーがアドバイスするとしたら?
2013.9. 4
蟻の穴から堤も崩れる
2013.8. 6
派閥じゃなくて、理念の元に仕事をしよう!
2013.7.31
知識は使ってナンボです!
2013.7.30
御社の相互理解度はどれくらい?
2013.7. 3
何故、それが読まれたか~上半期・エンジニアブログ閲覧数ランキング~
2013.6.12
「何」を知っているかではなく、「誰」が知っているか
2013.5.28
戦後、人間尊重の信念を貫きとおした1人の経営者がいた!
2013.5.24
健康な心が、健康な会社を作る。
2013.4.26
『社長にはもうついていけません・・・』
2013.4.23
仕事と生活をバランスさせるには?
2013.4. 2
組織に必要なのは「ゆらぎ」と・・・?
2013.3.21
代表小林、バングラディシュの地に再度降り立つ
2013.3.14
色々作っちゃいました!
2013.3. 5
「心のバランスシート」に着目していますか?
2013.2. 6
Office2013発売!で、何が変わった?
2013.2. 1
「想いを語る夕べ」が新宿から30分の場所で開催可能に!
2012.12.25
エンジニアブログ番外編:決戦は「ひなたかなた」
2012.12.19
2012年エンジニアブログ&Facebook閲覧数ランキング発表!
2012.11.29
プロセス見直すのはいいけれど...大事なこと忘れてません?
2012.10.31
「仕事」と「個々の生活」の両立~ワーク・ライフ・バランス~
2012.10.26
Windows8発売!で何が起こる?
2012.10. 9
腹が減っては打ち合わせは出来ぬ?~アドック近辺ランチスポット・カフェ編~
2012.10. 2
iPhone5発売!LTE普及には切実な背景が...
2012.9.12
「だれを選ぶか」をまず決めて、その後に「何をすべきか」を決める。
2012.8.17
会社を回すのに大事な3つの感覚。
2012.8. 7
プロジェクトはたいてい失敗に終わるんです。
2012.7.19
『目の前に壁があったら、突き破るしかねえんだよ』by鬼塚
2012.7. 2
大手企業も多数協賛する「東京経営塾」の塾長とは!?
2012.6.15
メンタルヘルスケアジャパン2012報告!
2012.6. 4
御社の理念浸透力はどれくらい?!
2012.5.14
メンタルヘルスケアジャパン2012参加のお知らせ
2012.4.27
東京スカイツリーと地デジとADOC
2012.4.17
マイボトル・マイカップキャンペーン/エンジニアブログ1周年記念
2012.3.14
第1回「想いを語る夕べ」体験会レポート~伝えることの難しさ~
2012.2.29
想いを語る夕べ報告書を新聞にしちゃいました!
2012.2. 6
月刊『ニュートップリーダー』に記事掲載&"想いを語る夕べ"体験会やります!
2012.1.31
【第4回】想いを語る夕べ~フォロー編~
2012.1.23
タニタの社員食堂は"トップの想い"から生まれた!?
2012.1.13
【第3回】想いを語る夕べ~実施編~
2011.12.27
オフィスで簡単エクササイズ!
2011.12.13
【第2回】想いを語る夕べ~準備編~
2011.11.24
【第1回】想いを語る夕べ~誕生編~
2011.11.17
「責任感だけで仕事をしていた・・・。」が「自らサービスを作り上げ、喜びを感じたい!」という熱い想いに変わるまで
2011.11. 8
アドックインターナショナルはGoogleのまわし者!?
2011.10.11
あなたのその行動、誰かに監視されてませんか?
2011.9.28
たったこれだけのことで、チームに一体感が生まれる!?
2011.9.22
ADOCersがITS健康保険組合の野球大会に出場します!
2011.9.21
アドックに入社するとコンサートホールで歌えてグァムに行けるってホント?
2011.8.30
アドック社員元気の素!?
2011.8.16
電力使用制限発動!罰金は100万円!?PC電力管理ソフトのススメ
2011.8. 9
「ネットトラブル調査隊」対象エリア拡大しました!(後日談付き)
2011.8. 1
Windows7にはメールソフトが付いてない!?
2011.7.22
「社長の想いを語る夕べ」プログラムのご紹介
2011.7.12
64ビット版Windowsへの移行について
2011.7. 8
検証やテストを自動化する際に気を付けなければいけない3つの事
2011.7. 5
地デジと周波数再編とADOC
2011.6.29
アドックインターナショナルの節電対策とスーパークールビズ
2011.6.27
あるレンタカー事業会社のケース
2011.6.20
ラボルームのご紹介
2011.6.17
Interop Tokyo 2011に行ってきました!
2011.6. 7
ADOCの保守サービスと震災対応
2011.5.31
"メンタルヘルスケア・ジャパン2011"レポート
2011.5.19
「おばあちゃん家」
2011.5.11
スマートフォンは急速に普及している・・・?
2011.5. 9
ADOCの品質改善活動への取り組み事例をご紹介
2011.4.19
ADOCのお花見と節電への取り組み
2011.4. 6
復興支援のため東北へ向かっていた弊社の社員2名が戻ってきました!その2
2011.3.31
復興支援のため東北へ向かっていた弊社の社員2名が戻ってきました!
2011.3.28
弊社パートナーが被災地支援のサービス開始
2011.3.25
震災により表面化した携帯通信網の弱さ
2011.2.28
エンジニアブログスタートのお知らせ
カテゴリー
月別アーカイブ

<