インフィニットループ 広報ブログ

2015年11月26日 (木)

著者 : iwaiwa

これからはじめるDDD ダーツ駆動開発入門

全国のダーツ好きエンジニアの皆様!
はじめまして、ILダーツ部部長のiwaiwaです。
今回はダーツ駆動開発のススメと題しまして、DARTSLIVE社の人気機種100sの導入から、運用、最新版200sへのアップデートまで、実際に社内で実践した模様をお伝えしたいと思います!
20151028_041455748_iOS

ダーツ駆動開発(DDD: Darts Driven Development)とは?

ダーツ駆動開発とは、社内にダーツボードを設置し、開発作業の合間にプレイすることで開発者の気分転換をおこない、生産性を高めるための開発手法です。
ダーツは的に3本の矢を投げ込むゲームで、技術、精神力、戦略性、チームの結束やコミュニケーションなどが求められ、開発業務との通じる点がたくさんあります。
まさにエンジニア向けの遊びですね!
20151110_050006388_iOS

100sとは?

100sは、ダーツバーやネットカフェなどでおなじみのマシン「Dartslive」を手軽に家庭でも楽しめるように開発された、家庭用ダーツボードです。
静音設計で比較的静かに稼働し、ダーツの刺さりも良く、また社内にDartslive好きが多かったこともあり、ダーツ駆動開発にぴったりということで採用が決定しました。
100s_1

セットアップ手順

ダーツボードを社内環境をセットアップするには、まずボードを設置するスタンドをビルドする必要があります。
これには特別なツールは必要なく、パッケージに添付されている手順に従ってビルドをおこなえば簡単に完成します。
今回購入したのはこちらのスタンド
20151019_103307021_iOS
20151019_103535808_iOS
20151019_105609949_iOS
次に、スタンドにボードを設置するためのねじをセットします。
これはボードが正しい位置に配置されるよう、しっかりとねじのポジションを計る必要があります。
(実はこの段階で一度失敗しました。ボードが5cmも低くなってしまい、やむなくねじを付け直す羽目に・・・)
IMG_5753_
(ここからの手順はオプションですが、より堅牢性の高いシステムを構築するには欠かせないものです。)
ダーツボードには日々たくさんの社員がアクセスします。そして、ときには例外がスローされるかもしれません。
想定外の例外をボードが正しくキャッチできなかった場合、何が起こるでしょう?そうです、壁や柱に傷がついてしまいます!
こんなリスクがあっては社長もダーツ駆動開発にGoサインを出してくれませんよね?
そこで、ボードの後ろをしっかりガードするために、発泡スチロールボードを導入します。
IMG_5738
20151021_113942130_iOS
これで安心ですね!

実際にスローされた例外の履歴がこちら

実際にスローされた例外の履歴がこちら↑

運用

無事に環境整備が完了しました。これでダーツ駆動開発を開始できます!
でも、ちょっと待ってください。DDD初心者にとってはまだ分からないことがいっぱいです。
最低限の運用ルールや、ダーツ上達のコツが分からないと、せっかくの環境も十分に活きません。
まず、ルールをドキュメント化しましょう。
ILダーツ部の場合はバージョン管理に社内gitlabを使用しているので、新規プロジェクトを作成して、ルールのドキュメントをpushしておきます。
これでルールの変更があっても履歴が残るので安心ですね!
そして、ルールをプリントアウトしてボードの側に張っておきます。
20151110_045947904_iOS
静音設計とは言え、ダーツが刺さるとそれなりに音がします。
静まり返ったオフィスの中で投げると、さすがに気になるでしょう。
ですので、ダーツの利用には時間を設けるのが良いと思います。
ILダーツ部では昼休みおよび定時後1時間経ってからを利用可能時間として定めています。
また、設置位置もなるべく人の通らない場所を選びました。安全性の確保は非常に重要です。
万が一、人に当たれば大怪我の危険性もありますので。
運用する上で、機器の管理や資材の追加購入も必要になってきます。
ILではコミュニケーションツールとしてSkypeを利用していますが、ダーツ部専用の窓をつくり、運用の方針などはそこで話し合って決めています。

200sへのアップデート

先日、100sの後継機である200sが発売されました。200sはBluetooth経由でスマホアプリと連携して稼動する今風のソリューションを採用しています。
先に、200sの入手について触れておきます。
200sは2015年11月現在、非常に品薄で、入手が困難になっています。ILダーツ部でもすぐには手に入らないものと半ばあきらめていました。
が、たまたま近所のドンキホーテに電話で問い合わせたところ、在庫があるとのことで、即取り置きをお願いし、翌日無事に入手できました。
Webでの予約も可能ですが、発送がかなり先になってしまうので、まずはドンキホーテに問い合わせてみるのもアリだと思います。
さて、200sですが、いくつか100sとの違いがあります。
まず、見た目を比較してみましょう。
IMG_5761
20151110_050023665_iOS
上が100s、下が200sです。100sに比べて200sはディスプレイが不要になった分、UIがすっきりしました。そして、Bluetooth連動のためのボタンが追加されています。
主電源は長押しになりました。Buletoothのペアリング時も長押しです。
動作面での大きな違い。それは、200sは単体では動作しないということです!
必ずスマホやタブレットなど、200s専用アプリがインストールできる端末が必要になります。
そして電源の供給がUSB経由に。
(ケーブルだけが付属されていました)
設置に関しては100sの仕様を引き継いでいるので、同じスタンドとねじの設定をそのまま引き継ぐことができます。
すでに100sを導入済みの場合のアップデートは簡単ですし、200s導入後も容易に付け替えが可能で、ハードウェア障害などの万一の事態が発生してもすぐにフェールオーバーできます!
互換性の維持、冗長性の確保は大切ですね!

ダーツの魅力

なぜ、ダーツなのか?
まず真っ先に言えること。それは導入が比較的簡単なことです。
ビリヤードを置こうと思ったら、かなりなスペースと、強固な床の基盤、そして高価な環境一式が必要ですよね?
ダーツならある程度のスペースさえあれば容易に設置できますし、お値段もみんなでカンパしたり、社長におねだりすれば、まあ、なんとかなる範囲内です。
そして、ダーツは比較的誰でもすぐになじめる簡単なゲームです。
初心者でも、とりあえず矢を三本、的に向かって投げるものだという程度の認識で、すぐに始められます。
いくつかの規約はありますが、たいていはボードを見れば直観的に分かるようになっていて、ここに入れば何点というのは習うまでもなく理解できます。
この学習コストが小ささはダーツの大きな魅力です。
シンプルゆえに、その結果がダイレクトに見て分かり、周囲の人達との共有もしやすいです。
みんなでわいわいとやるもよし、息を飲んで見守るもよし。
そんなシンプルなゲームでありながら、奥が非常に深いという面も持ち合わせています。
ダーツはメンタルスポーツと良く言われますが、自分もまさにその通りと思っています。
同じ場所を狙って矢を投げる簡単な動作なので、同じ状態を再現できれば毎回同じ場所へ刺さるはず。ところが現実にはなかなかそうはいきません。
ちょっとした乱れが大きなズレとなって結果に出てしまいます。
技術と同時にどんな状況にも対応できる強い精神力が求められます。
あと一本で勝てる、と思った時の独特の緊張感。
失敗したときの悔しさ、うまくいったときの喜び。
一度味わうとやみつきになりますね!

さらに突きつめたい方に

100sや200sにはダーツの矢が付属されているので、別に買わなくてもすぐにダーツを始めることができます。
しかし、それらが必ずしもあなたに合っているとは限りません。こだわりのマウスやキーボードがあるように、ダーツもあなたの手に合った最適なものがあるはずです。
ダーツ駆動開発に馴染んできたら、あなたのダーツライフをより充実させるために、マイダーツの購入をお勧めします。
自分に最適な道具を探すこともまたダーツの楽しみのひとつだと思います。
そして、具体的かつ継続的な目標の設定が重要です。カウントアップの平均点を500点にしてみようとか、ブル率を30%にしようとか、Aフライトになろうとか。
目標達成のために計画を立て、実行し、結果を評価して練習方法などを見直す(PDCA: Plan Do Check Action)。このサイクルをしっかりと回すとここそがダーツ駆動開発の真骨頂なのです!
200sは、アプリ内でカードを登録することで、自分の成績の履歴や集計を見ることができます。
ダーツ駆動開発のPDCAサイクルにはぴったりですね!
ダーツが好きな方、興味のある方、ぜひインフィニットループで一緒にDDDしませんか?
採用情報はこちらから!
200s 紹介サイト
200s Androidアプリページ
200s iOSアプリページ