アクセスカウンタ

ブログ名
BIGLOBEエンジニアブログ
ブログ紹介
RSS
初めての人のためのインターネットルーティング 2014/11/11 17:57
ネットワークエンジニアのつちやです。

「レバーを食べると翌日元気になる」という自己分析のもと、この一年間毎晩のようにレバーを食べていますが、
実際のところ真偽は知りません。

さて、Internet Week 2014という技術系のイベントの中の
「初めての人のためのインターネットルーティング」というプログラムで発表します。
https://internetweek.jp/program/t04/

このプログラムは、私がプログラム委員の一人としてイチから企画させていただいたプログラムだったりします。

インターネットを運用しているネットワークエンジニアにとって、現場で使われる技術やインターネットの仕組みの話、または企業間に発生するビジネス慣習などを教えてくれる場というのは、実はあまり用意されていません。

プログラマやサーバエンジニアと比較しても、そもそもネットワークエンジニアの絶対数が少ないことから、キーワードをwebで検索して見つかった先駆者たちの記事を参考に問題解決する、ということもあまり多くはありません。ネットワークエンジニアが扱う装置の多くが、一台あたり数百万〜数千万円レベルのものであることも、世間に情報が少ない一因かもしれません。

では、ネットワークエンジニアはどこで学ぶのかというと、ほとんどの場合が現場で学びます。
インターネットの運用現場で専門的な技術や知識と出会い、または自社や他社のエンジニアの先輩方に直接話を聞くことでビジネス的なバランス感覚や、広大なインターネットにおける自身の仕事の役割などを少しずつ理解していき、一人のエンジニアとして成長していきます。

そのため、エンジニアとして一人前に成長するまでにやはりどうしても時間がかかりますし、入社したばかりの若手社員にとっては「なんのこっちゃ」というモヤモヤした状況が数年続きます。

私自身、モヤモヤで不安だらけの日々が長かったので(今もまだモヤの中ですが)、次の若手エンジニアの方やネットワークのことを学ぶ機会が得られなかった方々にとって、ステップアップの助けになればという想いで、今回のプログラムを企画させていただきました。

私のパートは、インターネットやルーティング技術における基礎的な話が中心ですが、一緒に発表させていただくBIGLOBEの先輩エンジニアの川村さんやさくらインターネットの主任研究員の大久保さんのお話は、現役のベテランネットワークエンジニアだからこそ聞ける生々しいノウハウや知見がたっぷり詰まったものとなっています。(会場でしか公開できない情報もあるそうです)

ご興味があれば、ぜひお越しいいただいて、会場でしか味わえない発表者の温度感やインターネットの奥深さを感じていただければと思います。

最後に、私の資料の一部を抜粋して載せておきます。

それではまた。

画像


画像


画像


画像
記事へトラックバック / コメント


BMPサーバを実装してくれた救世主があらわれました。 2014/08/08 10:37
ネットワークエンジニアのつちやたいじです。
嫌いなものはトマトですが、トマトクリームパスタとマルゲリータは大好きです。

さて、以下の記事を投稿させてさせていただきましたが、続報です。

(前回記事)GREEさん、Cisco Systemsさんとネットワーク共同検証をしました。
http://engineer.biglobe.ne.jp/201407/article_1.html


ここでは「BMP受信を実装しているサーバサイドのソフトウェアが、現状ではまともに動作するものが無い!」
と紹介させていただきましたが、

JANOG 34の発表者で、たまたまお知り合いになった
NTTソフトウェアイノベーションセンタの石田 渉さんが


BMPサーバを作ってくれました。JANOG34発表後から一ヶ月足らずで。



というわけで、早速使ってみました。


今回作っていただいたBMPサーバは、SDNフレームワークRyuを利用して実装されています。

Ryu SDN Framework
http://osrg.github.io/ryu/


Ryu BMP Server(と呼ぶのが正しいようです。石田さん曰く) のインストールの手順と使い方は、
石田さんご本人からJANOGメーリングリストにて、このように紹介されています。

==========================================================
使い方は以下のとおりになります。dockerを利用しなくてもgithubからryuをインストールすれば利用可能ですが、dockerを利用する方法が一番簡単だと思います。今流行ですし:)

BMPサーバとなるマシンで

1. dockerのインストール (Ubuntuを想定しています、適宜環境に合わせて下さい)
$ aptitude install docker.io

2. dockerhubからdockerイメージをダウンロード
$ docker pull osrg/ryu

3. ポート11019を外部に公開してコンテナを起動し、bashでコンテナ内にログイン(※)
$ docker run -it --name ryu -p 11019:11019 osrg/ryu /bin/bash

4. bmpサーバを起動(デフォルトでポート11019でlistenします
$ ryu run ./ryu-master/ryu/app/bmpstation.py

あとはルータのBMPサーバの設定をコンテナが起動しているサーバに向ければ、BMPのログを見ることができます。

機能としてはまだBMPのログが吐かれるだけ(しかも見辛い)ですが、
徐々に機能拡張予定です(BMPはver3に対応しています)。
==========================================================
(※)指定するポート番号に11019に限らずに、WELL KNOWNポートでなければ何番でもいいようです。


さっそくLinuxマシンにRyu BMP Serverをインストールして、ルータにBMP設定を入れて動かしてみました。
ルータのBMP設定例はJANOG34の発表資料で紹介しています。

JANOG34 ルーティングテーブルを覗きたい┃_・)ジー BMP共同検証
http://www.janog.gr.jp/meeting/janog34/doc/janog34-rtabl-taiji-2.pdf


実行結果はこのようになりました。
(ログのなかで、BIGLOBEネットワーク情報が含まれる部分はいくつか別の値に差し替えしています。)

<< ルータ Cisco ASR1000(IOS-XE 3.13S) から受信したBMPメッセージ >>

BMPInitiation(info=[],len=6,type=4,version=3)

BMPPeerUpNotification(is_post_policy=False,len=184,local_address='0.0.0.0',
local_port=179,peer_address='0.0.0.0', peer_as=65002,peer_bgp_id='192.168.1.1',
peer_distinguisher=0,peer_type=0,
received_open_message=
BGPOpen(bgp_identifier='192.168.1.1',hold_time=90,len=59,my_as=65002,opt_param=
[BGPOptParamCapabilityMultiprotocol(afi=1,cap_code=1,cap_length=4,length=6,
reserved=0,safi=1,type=2),
BGPOptParamCapabilityRouteRefresh(cap_code=2,cap_length=0,length=2,type=2),
BGPOptParamCapabilityUnknown(cap_code=128,cap_length=0,cap_value='',length=2,type=2),
BGPOptParamCapabilityUnknown(cap_code=64,cap_length=2,cap_value='\x00x',length=4,type=2),
BGPOptParamCapabilityFourOctetAsNumber(as_number=65002,cap_code=65,
cap_length=4,length=6,type=2)],opt_param_len=30,type=1,version=4),
remote_port=60003,sent_open_message=
BGPOpen(bgp_identifier='192.168.1.2',hold_time=180,len=57,my_as=65001,
opt_param=
[BGPOptParamCapabilityMultiprotocol(afi=1,cap_code=1,cap_length=4,
length=6,reserved=0,safi=1,type=2),
BGPOptParamCapabilityUnknown(cap_code=128, cap_length=0,cap_value='',length=2,type=2),
BGPOptParamCapabilityRouteRefresh(cap_code=2,cap_length=0,length=2,type=2),
BGPOptParamCapabilityEnhancedRouteRefresh(cap_code=70,cap_length=0,length=2,type=2),
BGPOptParamCapabilityFourOctetAsNumber(as_number=65001,
cap_code=65,cap_length=4,length=6,type=2)],opt_param_len=28,type=1,version=4),
timestamp=0.0,type=3,version=3)

BMPRouteMonitoring(bgp_update=
BGPUpdate(len=78,nlri=[BGPNLRI(addr='1.0.6.0',length=24),
BGPNLRI(addr='1.0.7.0',length=24)],path_attributes=
[BGPPathAttributeOrigin(flags=64,length=1,type=1,value=0),
BGPPathAttributeAsPath(flags=64,length=26,type=2,value= [[xxxx, 2518, xxxx, xxxx, xxxx, xxxx]]),
BGPPathAttributeNextHop(flags=64,length=4,type=3,value='192.168.1.5'),
BGPPathAttributeMultiExitDisc(flags=128,length=4,type=4,value=0)],
total_path_attribute_len=47,type=2,withdrawn_routes=[],withdrawn_routes_len=0),
is_post_policy=False,len=126,peer_address='0.0.0.0',peer_as=65002,
peer_bgp_id='192.168.1.1',peer_distinguisher=0,peer_type=0,timestamp=0.0,type=0,version=3)

BMPStatisticsReport(is_post_policy=False,len=228,peer_address='0.0.0.0',
peer_as=65002,peer_bgp_id='192.168.1.1',peer_distinguisher=0,peer_type=0,
stats=[{'type': 0, 'value': 0, 'len': 4}, {'type': 1, 'value': 0, 'len': 4}, {'type': 2, 'value': 0,
'len': 4}, {'type': 3, 'value': 0, 'len': 4}, {'type': 4, 'value': 1141, 'len': 4},
{'type': 5, 'value': 0, 'len': 4}, {'type': 6, 'value': 0, 'len': 4},
{'type': 7, 'value': 36098, 'len': 8}, {'type': 8, 'value': 36098, 'len': 8},
{'type': 32767, 'value': '\x00\x00\x00\x00\x00\x00\x03\xe8', 'len': 8},
{'type': 32768, 'value': '\x00\x00\x00\x00\x00\x00\x03\xxx', 'len': 8},
{'type': 32769, 'value': '\x00\x00\x00\x00\x00\x00\x00\xxx', 'len': 8},
{'type': 32770, 'value': '\x00\x00\x00\x00\x00\x00\x03\xxx', 'len': 8},
{'type': 32771, 'value': '\x00\x00\x00\x00\x00\x00\x00\xxx', 'len': 8},
{'type': 32772, 'value': '\x00\x00\x00\x00\x00\x00\x03\xxx', 'len': 8},
{'type': 32773, 'value': '\x00\x00\x00\x00\x00\x00\x00\xxx', 'len': 8},
{'type': 32774, 'value': '\x00\x00\x00\x00\x00\x00\x05\xxx', 'len': 8}],
timestamp=0.0,type=1,version=3)


<< ルータ Juniper MX960(JUNOS 13.3R1.8)から受信したBMPメッセージ >>

BMPInitiation(info=[{'type': 0, 'value': u'This is MX960 BMP message', 'len': 25},
{'type': 1, 'value': bytearray(b'Juniper Networks, Inc. mx960 internet router,
kernel JUNOS 13.3R1.8, Build date: 2014-04-09 21:10:21 UTC Copyright (c)
1996-2014 Juniper Networks, Inc.'), 'len': 151},
{'type': 2, 'value': bytearray(b'MX960'), 'len': 5}],len=199,type=4,version=3)

BMPPeerUpNotification(is_post_policy=False,len=180,local_address='0.0.0.0',
local_port=179,peer_address='0.0.0.0',peer_as=65002,peer_bgp_id='192.168.1.3',
peer_distinguisher=0,peer_type=0,received_open_message=
BGPOpen(bgp_identifier='192.168.1.3',hold_time=90,len=53,my_as=65002,
opt_param=[
BGPOptParamCapabilityMultiprotocol(afi=1,cap_code=1,cap_length=4,length=6,reserved=0,safi=1,type=2),
BGPOptParamCapabilityUnknown(cap_code=128,cap_length=0,cap_value='',length=2,type=2),
BGPOptParamCapabilityRouteRefresh(cap_code=2,cap_length=0,length=2,type=2),
BGPOptParamCapabilityFourOctetAsNumber(as_number=65002,cap_code=65
,cap_length=4,length=6,type=2)],opt_param_len=24,type=1,version=4),remote_port=18772,
sent_open_message=BGPOpen(bgp_identifier='192.168.1.1',hold_time=90,len=59,
my_as=65002,opt_param=[BGPOptParamCapabilityMultiprotocol
(afi=1,cap_code=1,cap_length=4,length=6,reserved=0,safi=1,type=2),
BGPOptParamCapabilityUnknown(cap_code=128,cap_length=0,cap_value='',length=2,type=2),
BGPOptParamCapabilityRouteRefresh(cap_code=2,cap_length=0,length=2,type=2),
BGPOptParamCapabilityUnknown(cap_code=64,cap_length=2,cap_value='\x00x',length=4,type=2),
BGPOptParamCapabilityFourOctetAsNumber(as_number=65002,cap_code=65,
cap_length=4,length=6,type=2)],opt_param_len=30,type=1,version=4),
timestamp=1407320989.0,type=3,version=3)

BMPRouteMonitoring(bgp_update=BGPUpdate(len=102,nlri=[BGPNLRI(addr='xx.xx.xx.xx',length=24),
BGPNLRI(addr='xx.xx.xx.xx',length=24), BGPNLRI(addr='xx.xx.xx.xx',length=24)],path_attributes=
[BGPPathAttributeOrigin(flags=64,length=1,type=1,value=0),
BGPPathAttributeAsPath(flags=64,length=18,type=2,value=[[2518, xxxx, xxxx, xxxx]]),
BGPPathAttributeNextHop(flags=64,length=4,type=3,value='192.168.1.4'),
BGPPathAttributeMultiExitDisc(flags=128,length=4,type=4,value=0),
BGPPathAttributeLocalPref(flags=64,length=4,type=5,value=xxxx),
BGPPathAttributeCommunities(communities=[xxxxxxxxx],flags=192,length=4,type=8),
BGPPathAttributeUnknown(flags=128,length=4,type=9,value='\n\xcd\xxx '),
BGPPathAttributeUnknown(flags=128,length=4,type=10,value='\n\xcd\x01\xxx')],
total_path_attribute_len=67,type=2,withdrawn_routes=[],withdrawn_routes_len=0),
is_post_policy=False,len=150,peer_address='0.0.0.0',peer_as=65002,
peer_bgp_id='192.168.1.3',peer_distinguisher=0,peer_type=0,timestamp=1406883933.0,
type=0,version=3)

BMPStatisticsReport(is_post_policy=False,len=132,peer_address='0.0.0.0',peer_as=65002,
peer_bgp_id='192.168.1.3',peer_distinguisher=0,peer_type=0,stats=[{'type': 0, 'value': 0, 'len': 4},
{'type': 1, 'value': 25, 'len': 4}, {'type': 2, 'value': 0, 'len': 4}, {'type': 3, 'value': 0, 'len': 4},
{'type': 4, 'value': 0, 'len': 4}, {'type': 5, 'value': 1, 'len': 4}, {'type': 6, 'value': 0, 'len': 4}
{'type': 7, 'value': xxxxxxx, 'len': 8}, {'type': 8, 'value': xxxxxxx, 'len': 8}],
timestamp=1407320989.0,type=1,version=3)


おお、BMPメッセージを受信できました!!!


OSS(オープンソース・ソフトウエア)の1stリリースということで、
まだ人間には少し見づらい表示であったり、一部では解析しきれてないところもあるみたいですね。(※)

(※)石田さん曰く、解析しきれてない部分は
BMPのInternet Draft(http://tools.ietf.org/html/draft-ietf-grow-bmp-07)
で表現されている定義が曖昧だったり、メーカ特有の実装があるところのようです。

ネットワークの運用ツールとして使うにはまだこれからな印象ではありますが、
パケット解析ツールとしては既に十分使えるかもしれません。

BMPを活用することで、今までネットワーク運用の中で見逃していた情報を調査することができたり、
ネットワークトラブルの早期発見につなげることができるので、
Ryu BMP Serverの登場は非常に価値のある大きな一歩だと感じます。

OSSとして公開されているので、どんどん磨いて、うまく活用して、賢いネットワーク運用の仕組みに取り入れていきたいですね!


開発者の石田さんも、ネットワーク運用者からのフィードバックやリクエストを
期待されているようなので、気になった方はこちらまでメッセージしていただくのが良さそうです。

ryu-devel@lists.sourceforge.net

それではまた!
記事へトラックバック / コメント


GREEさん、Cisco Systemsさんとネットワーク共同検証をしました。 2014/07/31 16:36
はじめまして。ネットワークエンジニアのつちやたいじです。
普段はBIGLOBEのISPネットワークの運用や設計を担当しています。
好きなものはお肉と楽しいこと、嫌いなものはトマトとめんどくさいことです。

今回は、GREEさん、Cisco Systemsさんのエンジニアの方々とBMPという新しいプロトコルを
共同検証しましたので、その内容を紹介します。

GREEさんは言わずと知れた日本最大手のソーシャルサービス事業者さんです。
Cisco Systemsさんは、世界最大級のネットワーク機器メーカさんで、BIGLOBEネットワークでもCisco製のネットワーク機器をたくさん使っています。


インターネットとBGP

みなさんがいつも使っているインターネットは、組織所有のネットワークが無数に繋がり合って構成されています。
この組織所有のネットワーク同士が繋がるためには、お互いのルータ同士でBGP(Border Gateway Protocol)と呼ばれる世界標準のプロトコルを使い、情報をやり取りすることが必要です。

ここでやり取りされる情報の中には、経路情報という、お互いのネットワークが持っているIPアドレスの一覧情報があります。
ルータ同士が経路情報を交換することで、お互いのネットワークに通信できるようになります。
(例えるなら、経路情報とは住んでいる地域の住所一覧が載っているタウンページのようなイメージです。)

画像


そして、世界中の企業ネットワーク同士が、BGPを使って直接/間接的に経路交換することで、
世界中のどこへでも通信ができる仕組みを実現しています。
これがインターネットと呼ばれているものの正体です。


BGPについてご興味がある方は、JPNICさんで紹介されている記事が参考になります。
インターネット10分講座:BGP
https://www.nic.ad.jp/ja/newsletter/No35/0800.html

インターネットそのものについてご興味がある方は、著名なブロガーのあきみちさんが書かれた本が参考になります。
インターネットのカタチ―もろさが織り成す粘り強い世界
http://www.amazon.co.jp/dp/4274068242

BMP

今回共同検証したBMPは、BGP Monitoring Protocolの略で、その名の通りBGPでやり取りされる情報を可視化するためのプロトコルです。

BGPは1990年代から使われているプロトコルですが、BMPはまだ標準化もされていない比較的新しいプロトコルです。
(厳密には、RFCとして標準化される前のInternet Draftという段階で、IETFという団体で標準仕様について現在も議論されています。)

BMPを使うことで、他社ネットワークの経路情報の異常を調べることができたり、本来なら複数のルータにログインして確認しないと把握できないような複雑なトラブルを早期発見することが可能になります。


こういった運用監視やトラブルシューティングの用途で、BMPはネットワークを運用している企業から注目を集めています。

画像


BMP共同検証

検証は、BIGLOBEとCiscoの検証ラボを繋いで、BGP構成を再現して実験しました。

画像


今回の検証では、「若手メンバーで実施してほしい!」というBIGLOBE/GREEのチームリーダーの強い要望(笑)があったため、事前調査や検証の準備などは私も含めた若手メンバー中心でやらせていただきました。
私個人としても、標準化関連の資料を読みながら仕様を確認して新しいプロトコルを実際に検証する、なんてのはこれまでの仕事のなかでも初めてのことだったので大変勉強になりました。

Ciscoさんのオフィスを2週間お借りして、ときには真面目に、ときには差し入れにいただいたアイスを食べて談笑しながら、楽しく検証しました。

他社のネットワークエンジニアの方々と一緒に検証して感じたのは、会社の事業内容が違うことで、検証方法をはじめ、注目するポイントや利用シーンで異なる部分が多いことであり、
自分たちとは異なった物の捉え方があることを身をもって体感しました。
今回の検証を通して、会社内で仕事しているだけではなかなか感じることができない貴重な経験をさせていただきました。
画像

画像

画像


BMP検証結果

実際にプロトコルの挙動を確認してみたところ、BMPは「なかなか使えそうなログ収集ツール!」という印象でした。
BGPが切断されたときの原因などもきっちりログとして出力してくれたり、今までは見れていなかった経路情報なども時系列データとして収集できたりします。
またデバックコマンドのようなルータに与える負荷が大きいコマンドを実施せずとも、上記のようなBGPの詳細情報を1台のサーバで収集することが可能になります。

いままで出来てなかったことや、苦労して取得していたデータが、ひとつのプロトコルで、さらにマルチベンダ環境でも差分なく取得できるという点で運用者にとって使い勝手の良いプロトコルであると感じています。


ただ、BMPにはひとつ大きな問題がありまして。。。


それは、BMP受信を実装しているサーバサイドのソフトウェアが、現状ではまともに動作するものが無い!ということです。
いくつか検証で、web公開されているBMPサーバを試したのですが、いずれも最新版BMP version3では期待した動作はできませんでした。
今回の共同検証もこれらのツールをアテにしていたため、このような現状を知り、いきなり落胆からスタートしましたが、特別にCiscoさんが社内での検証で利用されている内製ソフトウェアを提供してくださり、無事に検証することができました。

この記事を読んでいただいた方の中から、ソフトウェア開発が得意な方で、BMPサーバを実装していただける方が出てくると、とてもうれしいです。
おそらく、ネットワーク業界から歓喜の声が沸き上がるのではないでしょうか。

JANOG34で発表してきました

日本中のネットワーク技術者が一同に集うJANOG Meetingというのイベントがあるのですが、
そこで時間をいただいて、このBMP検証について紹介させていただきました。
具体的な検証内容についてはこちらで紹介していますので、ご興味あればご参照ください。

JANOG34 Meeting ルーティングテーブルを覗きたい┃_・)ジー
http://www.janog.gr.jp/meeting/janog34/program/rtabl.html

ネットワーク業界の猛者のみなさんの前で発表するのは、とてもとても緊張しました。。。
それでも、いざ発表してみると、好印象なコメントをいただけたり、研究者の方やキャリア事業者さんなど、いろんな立場の方からアドバイスをいただけたので、非常に参考になりました。

またJANOG Meetingでは、慰労会と呼ばれる発表者を集めて飲み明かす怪しい(?)イベントがあるのですが、そこでもJANOGスタッフの方や他のプログラムの発表者の方といろんな意見交換をさせていただきました。中には「BMPサーバ作りますよ」なんていう心強いメッセージをいただけたりして、発表してよかったと心から感じました。

画像


最後に

今回はBMPというモニタリングプロトコルそのものの動作検証でしたが、BMPにおける私の考えとしては、「BMP受信サーバをいかに作り込んで実装させるか」、そして「自動化ツールと連携することで、ネットワーク運用をいかに楽にできるか」という点がキモになるのではないかと感じています。
ネットワークエンジニアはプログラミングが苦手な方が多かったりするのですが(もちろん私もその一人です)、BMPのような使い勝手の良いプロトコルをうまく取り入れて自分自身の仕事を楽にし、さらに仕事が楽しくなるようなツールの開発もやっていきたいと思っています。

また他社のエンジニアの方と一緒に仕事をすることは、慣れた作業の中でも新しい知見を得られることがたくさんあり、自身の知識や技術力を見直す良い機会になります。
それと同時に、新技術の利用シーンを複数の視点から議論することで、自分たちだけでは発想できなかったような便利な使い方を発見できるかもしれません。

これからもこういった社外の方と一緒に仕事するような機会を積極的に作ることによって、今までになかったような良いモノや仕組みを作り、日本のインターネットに少しずつ貢献していければと考えています。
記事へトラックバック / コメント


BIGLOBEでHackDay2(ハッカソン)を開催しました! 2014/03/31 17:28
こんにちは!BIGLOBE HackDay2事務局のまつうらです。


報告が大変遅くなりましたが、BIGLOBEは、2014年3月11日と14日の合計8時間でひとつのサービスを作り上げ壇上で聴衆にプレゼンするハッカソンのイベント「HackDay2」を開催しました。



画像



前回(2013年7月19日)初開催した「HackDay」と違い、今回は参加者を広く募集し、BIGLOBEのグループ会社であるジープランのメンバーも参戦してくれました。総勢37名で普段の業務で関わることのできない面白い人たちと一緒にアイデアを出し素晴らしいものがたくさん出来ました!



HackDay2の目的



  • なんか楽しいことしたい。

  • BIGLOBEの中で、どんどん作っていく雰囲気をつくりたい。

  • せっかくジープランというグループ会社もいるんだからもっと交流したい。



HackDay2の流れ



  • 2014年3月11日(2H):アイデアソン実施

  • 2014年3月14日(6H):ハッカソン実施

  • 2014年3月14日(1H):デモ&表彰



アイデアソン


アイデアソン(Ideathon)とは、Idea(アイデア)とMarathon(マラソン)を合わせた造語です。簡単にいうと、企画検討の場です。今回は、チーム毎にテーマを決め、様々なアイデアを出し合いました。



画像


ハッカソン


ハッカソン(Hackathon)とは、Hack(ハック)とMarathon(マラソン)を合わせた造語です。簡単にいうと、アイデアソンで出したアイデアを動くソフトウェアにして参加者全員の前で発表する場です。今回は、1チーム毎に3名〜4名の構成で、12チームが出場しました。



画像


デモ&表彰


デモは、1チームあたり3分の発表時間です。短い時間の中で、たくさんの素晴らしい動くソフトウェアが出来ました。そして、流暢なトークや体を使ったプレゼンテーションで観る人すべてを感動の渦に巻き込みました!参加者全員が審査員として、アイデア賞、技術賞、プレゼンテーション賞の軸で評価していただきました。それ以外に、ジープラン賞はジープランの佐伯さんに評価していただき、社長賞は古関社長に評価していただきました。



画像


社長賞受賞作品(今日の隣人アプリ)の紹介


社長賞を受賞したチームは、フリーアドレス制のオフィスで毎日出社したときに座席を自動割当できる「今日の隣人」アプリを作成しました。



画像


上記画面でどういう気分かを選択します。

画像


タグをかざす画面で社員証をかざします。

画像


座席表画面に移り、割り当てられた座席が赤い星印で表示されます。
なお、座席がアサインされると本人のスマフォに通知がくる仕組みまで実装されています。短時間に、ここまでのクオリティーを出したのは、さすがと感じました!




参加者からのフィードバック(抜粋)


良かったこと




  • 自分たちが面白いと思ったアプリが多かったこと。

  • 今までに思いつかないようなアイデアや全然知らなかった技術に触れることができたこと。

  • プレゼンも体を張ってwはっちゃけていたこと。

  • 短い時間で人を楽しませるものが作れ、発表できたこと。

  • プロダクト開発のスピード感。

  • 開発の現場に初めて立ち会えて、あっという間に動くサービスができていくことに感動しました。




課題に感じたこと




  • アイデアソンの時間が短かった。

  • 実装時間が短かったこと。

  • 事業化を視野に入れたイベントになっても良いかなと思いました。

  • イベントの後、ソースの解説や勉強会なども開けたらメンバーのスキルアップにつながったかも。

  • チームでうまく作業分担ができなかったこと。




次回への要望




  • アイデアソンで実現したいアイデアのピッチ、作ってみたいアイデアにメンバー分け、当日開発という流れにしてほしいです!

  • アイデアのテーマを会社のビジョンに近いものに絞ったり、審査員を外部から数名呼んだりするのも良いかと思います!!

  • 技術力だけでなく、ユーザーインサイト洞察力も深めることが出来るような内容。

  • 全事業部からの参加。

  • 100人でHackDay開催したい。

  • 1日といわず、2〜3日を要して開催してほしい!

  • いい賞品を期待してます!




さいごに



上記の参加者からのフィードバックをたくさんいただき、HackDay2の目的は達成することが出来たと思います。



私は、事務局兼参加者として、参加しましたがとても多くの学びを得ることが出来ました。私のチームは、D3.js(データに基づいてドキュメントを操作するためのJavaScriptライブラリ)を利用して、花粉データの可視化を行いました。残念ながら表彰されませんでしたが、普段利用していない技術を使うことができ、また多様なメンバーと一緒に作ることができ、とても充実した8時間でした!




今回のHackDay2は、エンジニアのモチベーションや技術力向上、社内外のコミュニケーション活性化としての役割を持っていましたが、次回は新規事業化の場になれればと思います。




次回のHackDay3が待ち遠しいです!明日から、新会社として飛躍していきますので、乞うご期待ください!
もっとオープンにスピィーディーになると思います!!

記事へトラックバック / コメント


アジャイルちゃん(仮)登場!スクラムによるアジャイル開発研修プログラムを始めます! 2013/04/04 12:10
花粉が少なくなってきて体が楽になってきたヤスニシです。

BIGLOBEがスクラムによるアジャイル開発研修プログラムを提供することになりました!
http://www.biglobe.co.jp/pressroom/info/2013/03/130321-1

 部門全体にスクラムが広がり、毎日試行錯誤をしながら開発を行なっておりますが、少しずつそのノウハウが蓄積して来ました。教科書としてのスクラムと共に、その試行錯誤の結果出てきた考え方ややり方もご紹介します。下のマンガは研修のイメージです。アジャイルちゃん(仮)登場!

 講師は、普段からチームに入りスクラムを実践しているメンバーが行います。綺麗なスクラムができると望ましいですが、ただ行なってもなかなか教科書通りにはいきません。現場としてどのようなことを悩み、解決してきた生の声をお話することで、皆様の現場に持って帰っていただけることができるのではないかと思います。

 今回は、アジャイル・スクラムの基礎ということで、特に知識がなくてもアジャイル・スクラムの概要を習得いただけます。ワークショップも行いますので、知識だけではなく体感して習得できます。アジャイル・スクラムに興味が有る方、職場で採用しようと考えている方など、是非お申し込みください。
 お申し込み先→http://www.neclearning.jp/courseoutline/courseId/SD071

そして、アジャイルちゃん(仮)登場!!!

画像

 それに先立ち、Android Bazaar and Conference2013で基本的な考え方を発表させて頂きました。研修でお話する一部を説明しておりますので、ご参考にしてください。


ご参加をお待ちしております!
記事へトラックバック / コメント


Doneの定義を共有する「Doneの定義シート」 2012/08/31 19:55
BIGLOBEのヤスニシです。
最近、クラウド(?)体重計を買いました。乗るだけで体重だけでなく体脂肪も測定できてグラフ化されるので、少しだけ体重を気にするようになりました。オススメです。

さて、スクラムではDoneの定義が重要です。Done(完了)の定義は、タスクやストーリーなどが何をもって完了するかを明確に定義して共有し、メンバー全員が意識して作業することで、完了の曖昧さを排除するために定義します。はっきり定義しないと、終わったと言っても人によって「やったこと」と「やってないこと」が違ったりしますよね。

ということで、我々のチームでもDoneの定義を作成しますが、初めてのチームは書き方がわからなかったり、作るのを忘れてしまったりするので、テンプレートを作成してみました。これを作ったところ、各チームが使い始めてくれたので、ここでも公開します。よろしければ使ってみてください。CC(表示)ライセンスです。作者を表示いただければ、商用利用、改版、再頒布は自由です。
画像
ダウンロード(word)

コンセプト


・Doneの定義を守ってもらうということもありますが、最も重要な目的は、Doneの定義について定期的にチーム全員でディスカッションすることです。
・内容はプロダクトによって事情は違いますし、全ての項目を変更可能にしています。
・このファイルではCommit〜スプリントということになっていますが、チームによって変更ができます。
・スプリントごとに見直してもらうように、Doneの定義の賞味期限という欄を設けています。
・wordに直接書いてもいいですし、大きくコピーして付箋を貼っても良いと思います。

やってみて


先日、新しく立ち上がったチームで、プロダクトオーナも含めてやってみました。スクラム以前も一緒にやっていたメンバーにもかかわらず、全員がそれぞれのDoneの定義について違った認識を持っていました。まずはその認識が合っただけでも有効だったと思います。

まだ始めたばかりなので、内容は不十分な所もありますが、定期的に見直すことによって成熟していくと思います。その成長も楽しみです。

終わりに


Doneの定義をしっかり守って、というだけでなく、コミュニケーションツールとしても使っていただければいいと思います。アジャイル、ウォーターフォールに限らず使えると思いますので、是非現場で活用いただけると嬉しいです。
記事へトラックバック / コメント


Scala, Play2.0 を利用した Let's App!のご紹介 2012/07/30 18:50
BIGLOBEのウエダです。

本日7/30に『Let's App!』のバージョンアップを行い、GooglePlayで公開しました。
Let's App!は友達とおすすめのアプリを教えあうサービスです。
http://letsapp.jp/

Android版アプリは以下のURLからダウンロード可能です。
https://play.google.com/store/apps/details?id=jp.letsapp

今回は本サービスの裏側の話をしたいと思います。
まずは下の動画をご覧ください。



サービス構成


サーバーはScala 2.9.1 + Play Framework 2.0 を利用しています。
BIGLOBEではほとんどのサービスがPHPでできていましたが、今回はアプリの送受信において非同期通信を用いたかったことと、技術的チャレンジの意味を込めてこの方式を採用しました。

対応クライアント


クライアントアプリは現時点ではAndroidのみに対応していますが、iPhone版もリリース予定です。

通信方式


アプリ交換におけるサーバークライアント間の通信は、WebSocketを利用した非同期通信を実現しています。
サービスを作りこむにあたり、Play FrameworkのJSONパース問題やWebSocketライブラリの不具合などの問題にぶち当たりましたが、タイミングよくアップデートが行われ解決できました。

最後に


繰り返しになりますが、Let's App!を使うと友達のスマホにおすすめのアプリをポポイッ!と渡すことができます。
さらに、TwitterやFacebook、メールを通して仲間に教えることもできます。
今後も頻繁にアップデートを行う予定ですので、ぜひご期待ください。
詳細について情報共有されたい方は、ご連絡くださいませ。
記事へトラックバック / コメント


Yahoo! JAPANさんと交流会を行いました。 2012/06/21 09:41
BIGLOBEスクラムチームのヤスニシです。
最近家にビールがあると毎日飲んでしまうことに気づいてズボンがきつくなっているのが悩みです。

BIGLOBEでは、スクラムのチームを作り、アジャイル開発を行っています。他にもアジャイル開発を行っている会社さんがたくさんあり、勉強会などでご一緒させていただいていました。そこで、縁があり、Yahoo! JAPANのスクラムチームの皆様とBIGLOBEチームで交流会を行う機会をいただきました。Yahoo! JAPANの皆様、わざわざ来ていただきありがとうございました!

交流会プログラム


画像メンバーはYahoo!さん10名、BIGLOBE側30名、合計40名ほど集まり、大盛況になりました。内容は、できるだけ多くの人同士で話をしてもらいたかったので、ワールドカフェ形式にしました。「価値あるプロダクトを創るためには」という重〜い(笑)テーマにして、議論を深めてもらいました。

【交流会プログラム】
 ・BIGLOBEスクラムチーム紹介
 ・Yahoo!スクラムチーム紹介
 ・交流会ワールドカフェ
  テーマ:価値あるプロダクトを創るためには
  (15min×4回 プラス発表)
 ・懇親飲み会

ワールドカフェとは


今回の交流会で行った「ワールドカフェ」とは、1テーブル5人〜6人で座り、一定時間決めたテーマについて議論した後、メンバーをシャッフルして、より多くの人と議論できる手法です。

画像

終わって


重いテーマではありましたが、各現場の生の悩みについて熱く語っていた人に対してこういうふうにやっているよーという話をするなど、多くの気づきがあったようです。

私たちはもちろん、どの現場も少なからず問題を抱えています。スクラムなどの開発理論を追求し、勉強していくのは必須ですが、同時に現場の理想とは程遠い生々しい問題と向きあうことは避けられません。そういう意味で、このように現場の人たちが交流するというのは大きな意味があるのではないかと感じました。BIGLOBEのメンバーとしては、生の話を伺うことができ、とても勉強かつ刺激になったようです。

Yahoo! JAPANの皆様は、突然このような形式の交流会(ワールドカフェに関しては、当日まで伝えておりませんでしたm(__)m)にもかからず、前向きに参加していただき感謝感謝です。すばらしいチームなんだろうなぁというのが伝わってきました。

終わった後は美味しいビールで乾杯!皆様、ありがとうございました!

画像
(我々との交流会をご希望のアジャイルチームの方がいらっしゃいましたらご連絡くださいませ
記事へトラックバック / コメント


BIGLOBEエンジニアブログ始めます! 2012/05/18 20:03
はじめまして!BIGLOBEでサービス開発をしているヤスニシです。

BIGLOBEでは、スクラムというアジャイルソフトウェア開発手法を使ってサービス開発をしています。当初は7名1チームだったのが、75名14チームを超える大所帯(2012年5月現在)になりました。

どんな雰囲気でやっているかは、以前IPAさんで発表を行わせていただいたので、そちらのご参照を。見るとあの時の苦労を思い出します。あぁだいぶ大きくなったなぁ。

画像


少しずつですが、エンジニアも増えてきて、スクラムはもちろん、CIやScalaでのサービス開発など、色々なノウハウが溜まってきました。他社に後れ○年ではありますが、少しずつここで紹介してまいります。

不定期ですが、初心者向けからマニアックな内容まで充実させていきますので、是非ご期待を。メンバーのみなさん、一緒にがんばろうねんw。
記事へトラックバック / コメント


月別リンク