SlideShare a Scribd company logo
Javaプログラマのための
ミニ四駆再入門
#yonayonajavafx
@kiy0taka
告知
富士通乾電池提供
ミニ四駆ジャパンカップ2014
• 10/5(日) 大阪大会2
• 京セラドーム大阪・9Fスカイホール
• たぶん8:00から受付開始
自己紹介
•奥 清隆(おく きよたか)
• id:kiy0taka、@kiy0taka
•JGGUG関西支部
•関西Javaエンジニアの会
•株式会社ニューキャスト所属
Mr. Java Day Tokyo
javafx-mini4wd
javafx-mini4wd
javafx-mini4wd
ミニ四駆の話をと言われて
https://twitter.com/skrb/status/484356816084926465
富士通乾電池提供
ミニ四駆ジャパンカップ
2014
ジャパンカップ
• 2012年にミニ四駆30周年を記念して復活!
• 第三次ブームのきっかけになった
• 昨年の動員数は2万人。
• 全盛期1996年は30万人超
• 安定の富士通乾電池提供
• 6月22日(日) 東京大会1 品川シーサイドフォレスト・オーバルガーデン(東京都品川区)
• 6月29日(日) 大阪大会1 京セラドーム大阪・9Fスカイホール(大阪市西区)
• 7月 6日(日) 愛知大会 愛・地球博記念公園 地球市民交流センター(愛知県長久手市)
• 7月13日(日) 群馬大会 ニューサンピア高崎・多目的ホール(群馬県高崎市)
• 7月20日(日) 静岡大会 ツインメッセ静岡(静岡県静岡市)
• 8月 3日(日) 愛媛大会 今治港特設会場(愛媛県今治市)
• 8月17日(日) 仙台大会 サンフェスタ・1Fイベントホール(仙台市若林区)
• 8月24日(日) 東京大会2 品川シーサイドフォレスト・オーバルガーデン(東京都品川区)
• 9月 7日(日) 広島大会 広島マリーナホップ(広島市西区)
• 9月14日(日) 北海道大会 新千歳空港 イベントホール翔(北海道千歳市)
• 9月21日(日) 福岡大会 かしいかえん シルバニアガーデン 大テント(福岡市東区)
• 9月28日(日) 東京大会3 東京ビッグサイト(東京都江東区)
• 10月5日(日) 大阪大会2 京セラドーム大阪・9Fスカイホール(大阪市西区)
• 10月12日(日) 岡山大会 岡山おもちゃ王国(岡山県玉野市)
• 10月19日(日) 東京大会4・チャンピオン決定戦 MEGA WEB(東京都江東区)
javafx-mini4wd
参加方法
• 昔のように事前抽選はない
• 当日参加
• でも遅くなると参加できない
• 通称:0次予選
クラス
• ジュニアクラス(中学生以下)
• オープンクラス(誰でも)
• チャンピオンズ(公式大会優勝者)
• ファミリークラス(小学校3年生まで、または共
同製作した中学3年生までの親子)
• ファミリークラスは1次予選のみ
シード代表決定戦
• 全国各地のミニ四駆ステーションで行われる大
会で優勝すると2次予選から参加できる
• お近くのミニ四駆ステーションへ
• http://www.tamiya.com/japan/mini4wd/
station_race/jcup2014_0603.pdf
ミニ四駆を始めるため
に必要な物
はじめるために必要な物
• ミニ四駆
• パーツ
• 工具
• コース
• 友達
シャーシ
• http://www.tamiya.com/japan/cms/
newstopics/2276-mini4chassis.html
• 14種類?
• タイプ1∼3シャーシは手に入らない
• とりあえずMAシャーシから始めればいいと思う
モーター
• http://www.tamiya.com/japan/download/
pdf/mini4wd/parts/mini4wd_motor.pdf
• たくさんある
• ハイパーミニ/ハイパーダッシュなんてもうない
• MA/MSシャーシは両軸モーターなので間違えな
いように
パーツ
• ありすぎる
• とりあえずモーター全種類買っとけ
• あとファーストトライパーツセットとか
ステー/プレート
• 強度を上げたり、ローラーベースを広げたりする
• 加工して自作パーツを作る
ブレーキ
• レーンチェンジャーやドラゴンバックでコースア
ウトしないように減速させる
• 最近のモーター/コースでは必須アイテム
ダンパー
• ジャンプして着地後に衝撃を吸収させる
• ショック吸収タイヤなんて今や夢パーツ扱い
その他のパーツ
• パーツについてはきりがないのであとはググれ
• ネットで買うならヨドバシ.comが最強
• パーツ1つでも送料無料で翌日配達
工具
• ドライバー
• ボックスドライバー
• ニッパー
• ペンチ
• ヤスリ
• ピンセット
• デザインカッター
• ノギス
• ホビールーター
コース
• JCJC (安いとこで14Kぐらい)
• オーバルホームサーキット (8Kぐらい)
• もしくは近くのミニ四駆ステーションへ
• レンタルできるが送料考えると割に合わない
#ミニ四駆を走らせたい
お客様の中に、会社にコースあるって方はいませんか?
おまけ
JavaFX 3DとJBulletで
物理演算の話
∼ミニ四駆シミュレータを作りたい∼
ミニ四駆シミュレータ
https://www.youtube.com/watch?v=Ag16KQ7YrSg
JavaFX 3D
• javafx.scene.shape.Shape3D
• Box/Cylinder/Sphere/MeshView
物理演算エンジン
物理演算エンジン(ぶつりえんざんエンジン、Physics
engine)とは、質量・速度・摩擦・風といった、古典力
学的な法則をシミュレーションするコンピュータのソフ
トウェアである。多くの場合、ミドルウェアライブラリ
を指す。 略して物理演算、物理エンジン、Physicsとも
言う。
http://ja.wikipedia.org/wiki/物理演算エンジン
http://www.nicovideo.jp/tag/物理演算
JBullet
• Bullet Physics Library (http://bulletphysics.org/
wordpress/) のJava版
• 本家の最新版は2.83、バージョン3系が開発中らしい
• JBulletは本家の2.72がベース
• 開発は2010年で止まってるっぽい
ざっくりとした使い方
• DynamicsWorldを作る
• 物体をDynamicsWorldに入れる
• DynamicsWorldにシミュレートさせる
• 描画するのはBulletの仕事ではないので自前で用
意する → JavaFX 3D
JBulletでHelloWorld
HelloWorld.java
• JBulletのサンプルについてる
• 球体が自由落下して地面に跳ね返る
• 画面はないので球体の座標が標準出力に出るだけ
DynamicsWorld
// おまじない!
CollisionConfiguration collisionConfiguration = new DefaultCollisionConfiguration();
CollisionDispatcher dispatcher = new CollisionDispatcher(collisionConfiguration);!
// 物理世界の大きさ!
Vector3f worldAabbMin = new Vector3f(-10000, -10000, -10000);!
Vector3f worldAabbMax = new Vector3f(10000, 10000, 10000);!
// 物理世界に存在できる物体の数!
int maxProxies = 1024;!
AxisSweep3 overlappingPairCache = new AxisSweep3(worldAabbMin, worldAabbMax,
maxProxies);!
// ソルバーなにそれおいしいの!
SequentialImpulseConstraintSolver solver = new SequentialImpulseConstraintSolver();!
// 物理世界!
DiscreteDynamicsWorld dynamicsWorld = new DiscreteDynamicsWorld(dispatcher,
overlappingPairCache, solver, collisionConfiguration);!
// 重力!
dynamicsWorld.setGravity(new Vector3f(0, -9.8, 0));
地面を作る
// 地面の形状(Box)!
CollisionShape groundShape = new BoxShape(new Vector3f(50.f, 50.f, 50.f));!
!
// 地面の位置!
Transform groundTransform = new Transform();!
groundTransform.setIdentity();!
groundTransform.origin.set(new Vector3f(0.f, -56.f, 0.f));!
!
// モーションステート(これ重要)!
DefaultMotionState myMotionState = new DefaultMotionState(groundTransform);!
!
// 質量(単位はKg、0にすると無限大)!
float mass = 0f;!
// 地面の物理的なあれ!
RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass,
myMotionState, groundShape, localInertia);!
RigidBody body = new RigidBody(rbInfo);!
!
// 力学世界につっこむ!
dynamicsWorld.addRigidBody(body);
球体を作る
// 球体!
CollisionShape colShape = new SphereShape(1.f);!
collisionShapes.add(colShape);!
!
Transform startTransform = new Transform();!
startTransform.setIdentity();!
!
// 質量1kg!
float mass = 1f;!
!
// 初期位置設定!
startTransform.origin.set(new Vector3f(2, 10, 0));!
!
DefaultMotionState myMotionState = new DefaultMotionState(startTransform);!
!
RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass,
myMotionState, colShape, localInertia);!
RigidBody body = new RigidBody(rbInfo);!
!
dynamicsWorld.addRigidBody(body);
シミュレートする
for (int i=0; i<100; i++) {!
dynamicsWorld.stepSimulation(1.f / 60.f, 10);!
...!
}!
JBullet HelloWorld
+
JavaFX 3D
JBullet + JavaFX 3D
• 力学世界に入れてる物体をJavaFX 3Dで描画する
• JBulletのCollisionShapeと同じ形状/位置/姿勢の
ものをJavaFXのShape3Dで作る
• シミュレートして、それぞれの物体の位置/姿勢を
JavaFXのノードに適用する
Node CollisionShape
地面を作る(JBullet)
// 地面の形状(Box)!
CollisionShape groundShape = new BoxShape(new Vector3f(50.f, 50.f, 50.f));!
!
// 地面の位置!
Transform groundTransform = new Transform();!
groundTransform.setIdentity();!
groundTransform.origin.set(new Vector3f(0.f, -56.f, 0.f));!
!
// モーションステート(これ重要)!
DefaultMotionState myMotionState = new DefaultMotionState(groundTransform);!
!
// 質量(単位はKg、0にすると無限大)!
float mass = 0f;!
// 地面の物理的なあれ!
RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass,
myMotionState, groundShape, localInertia);!
RigidBody body = new RigidBody(rbInfo);!
!
// 力学世界につっこむ!
dynamicsWorld.addRigidBody(body);
地面を作る(JavaFX)
// 地面の形状(Box)!
Box groundNode = new Box(100, 100, 100);!
!
// 地面の位置!
boxNode.setTranslateX(0);!
boxNode.setTranslateY(-56);!
boxNode.setTranslateZ(0);
JavaFXの座標について
3D を行うのに欠かせないのが、座標です。もちろん、JavaFX でも 3 次元の座標
を扱うのですが、ちょっとだけ注意が必要です。
というのも、通常の 3D の CG Tool は y 軸が数学と同じで上方向を向いています。
ところが、JavaFX では 2D と 3D を区別なく使えるように
しているためなのか、y 軸が下を向いています。
ツールで作ったモデルをインポートしたら、なぜかモデルが下を向いていたという
こともあるので、注意が必要です。
もし、下向きの y 軸がいやなのであれば、z 軸を中心にし
て 180 度回転させます。
JavaFX 8 で 3D その 1 - JavaFX in the Box
http://skrb.hatenablog.com/entry/2013/12/25/002250
座標
JavaFX JBullet
x軸に180 回転してやる
地面を作る(JavaFX)
// 親ノードをx軸に180°回転!
Group root = new Group();!
root.setRotationAxis(new Point3D(1, 0, 0));!
root.setRotate(180);!
!
root.getChildren().add(boxNode);
Nodeの変換
JavaFX JBullet
Box BoxShape
Cylinder CylinderShape
Sphere SphereShape
MeshView BvhTriangleMeshShape
Group CompoundShape
MotionState
地面を作る(JBullet)
// 地面の形状(Box)!
CollisionShape groundShape = new BoxShape(new Vector3f(50.f, 50.f, 50.f));!
!
// 地面の位置!
Transform groundTransform = new Transform();!
groundTransform.setIdentity();!
groundTransform.origin.set(new Vector3f(0.f, -56.f, 0.f));!
!
// モーションステート(これ重要)!
DefaultMotionState myMotionState = new DefaultMotionState(groundTransform);!
!
// 質量(単位はKg、0にすると無限大)!
float mass = 0f;!
// 地面の物理的なあれ!
RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass,
myMotionState, groundShape, localInertia);!
RigidBody body = new RigidBody(rbInfo);!
!
// 力学世界につっこむ!
dynamicsWorld.addRigidBody(body);
MotionState
• dynamicsWorld.stepSimulation()を実行すると
それぞれの物体の位置とかを計算してくれる
• シミュレートごとに各物体の計算結果が
MotionStateのsetWorldTransform()で渡され
る
• DefaultMotionStateクラスを継承してJavaFX
用にあれしてやればいい
JavaFXMotionState
@Override!
public void setWorldTransform(Transform centerOfMassWorldTrans) {!
super.setWorldTransform(centerOfMassWorldTrans);!
!
Quat4f rotation = new Quat4f();!
centerOfMassWorldTrans.getRotation(rotation);!
double rad = 2 * Math.acos(rotation.w);!
!
Platform.runLater(() -> {!
node.translateXProperty().set(centerOfMassWorldTrans.origin.x);!
node.translateYProperty().set(centerOfMassWorldTrans.origin.y);!
node.translateZProperty().set(centerOfMassWorldTrans.origin.z);!
node.setRotate(rad * 180 / Math.PI);!
node.setRotationAxis(new Point3D(!
rotation.x / Math.sin(rad / 2),!
rotation.y / Math.sin(rad / 2),!
rotation.z / Math.sin(rad / 2)!
));!
});!
}
その他
• 2つの剛体を結合する制約とか
• ソフトボディとか
• Vehicleとか
• いろいろ調べないと分からない
ライブラリ作成中
• JavaFXのノードを作って物理的なパラメータを
渡せばあれしてくれる
• GroovyFX用のも作成中
• 公開は未定
サンプル(Java)
public class App extends JBulletApp {!
!
@Override!
protected void create3D() {!
Box box = new Box(50, 50, 50);!
box.setTranslateY(-25);!
box.setScaleX(0.5);!
add(box, new BulletOption().restitution(1.0f));!
!
Sphere sphere = new Sphere(5);!
sphere.setTranslateY(30);!
add(sphere, new BulletOption().mass(10).restitution(0.1f));!
}!
!
...!
}!
サンプル(GroovyFX)
start {!
stage(title: "Hello World", visible: true, primary: true) {!
scene {!
perspectiveCamera(true, nearClip:0, farClip:1000)!
simulator {!
box([50, 50, 50], translateY:-25, mass:0, restitution:1.0)!
sphere(5, translateY:20, mass:10, restitution:0.1)!
}!
}!
}!
}
まとめ
• 大阪大会まで3ヶ月
• 参加される方は @kiy0taka までご連絡を
• あと会社にコースあるよって人も
ご清聴ありがとう
ございました

More Related Content

Similar to javafx-mini4wd

メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
JustSystems Corporation
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
Toshiaki Maki
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
 
JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪
bitter_fox
 
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
torutk
 
JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?
Shingo Fukui
 
20150209 甲府-web新世紀2
20150209 甲府-web新世紀220150209 甲府-web新世紀2
20150209 甲府-web新世紀2
Taisuke Fukuno
 
iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携
Masahiro Murakami
 
OpenCVで作るスタンプAR
OpenCVで作るスタンプAROpenCVで作るスタンプAR
OpenCVで作るスタンプAR
Takashi Yoshinaga
 
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
Tomohiro Kumagai
 
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1 pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
Takuma Morikawa
 
cloudstack devcloud
cloudstack devcloudcloudstack devcloud
cloudstack devcloud
Kimihiko Kitase
 
Javaと小道具
Javaと小道具Javaと小道具
Javaと小道具
Sho Ito
 
MVCもやもや話
MVCもやもや話MVCもやもや話
MVCもやもや話
Tetsuya Kaneuchi
 
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
a know
 
Live the Knight#7
Live the Knight#7Live the Knight#7
Live the Knight#7
ssuser033561
 
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンAzure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Yasuaki Matsuda
 
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX UpdateJavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
Takashi Aoe
 
Introduction to Kanagawa Ruby Kaigi01 #kana01
Introduction to Kanagawa Ruby Kaigi01 #kana01Introduction to Kanagawa Ruby Kaigi01 #kana01
Introduction to Kanagawa Ruby Kaigi01 #kana01
Aki Ariga
 
㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!
Nishida Kansuke
 

Similar to javafx-mini4wd (20)

メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 
JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪
 
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
 
JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?
 
20150209 甲府-web新世紀2
20150209 甲府-web新世紀220150209 甲府-web新世紀2
20150209 甲府-web新世紀2
 
iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携
 
OpenCVで作るスタンプAR
OpenCVで作るスタンプAROpenCVで作るスタンプAR
OpenCVで作るスタンプAR
 
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
 
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1 pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
 
cloudstack devcloud
cloudstack devcloudcloudstack devcloud
cloudstack devcloud
 
Javaと小道具
Javaと小道具Javaと小道具
Javaと小道具
 
MVCもやもや話
MVCもやもや話MVCもやもや話
MVCもやもや話
 
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
 
Live the Knight#7
Live the Knight#7Live the Knight#7
Live the Knight#7
 
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオンAzure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
 
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX UpdateJavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
 
Introduction to Kanagawa Ruby Kaigi01 #kana01
Introduction to Kanagawa Ruby Kaigi01 #kana01Introduction to Kanagawa Ruby Kaigi01 #kana01
Introduction to Kanagawa Ruby Kaigi01 #kana01
 
㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!
 

More from Kiyotaka Oku

Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3
Kiyotaka Oku
 
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
Kiyotaka Oku
 
BaseScriptについて
BaseScriptについてBaseScriptについて
BaseScriptについて
Kiyotaka Oku
 
ミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考えるミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考える
Kiyotaka Oku
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memo
Kiyotaka Oku
 
GDK48総選挙の裏側
GDK48総選挙の裏側GDK48総選挙の裏側
GDK48総選挙の裏側
Kiyotaka Oku
 
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介
Kiyotaka Oku
 
Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜
Kiyotaka Oku
 
日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ
Kiyotaka Oku
 
GroovyConsole2
GroovyConsole2GroovyConsole2
GroovyConsole2
Kiyotaka Oku
 
GroovyConsole
GroovyConsoleGroovyConsole
GroovyConsole
Kiyotaka Oku
 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 Spring
Kiyotaka Oku
 
Jenkinsプラグインの作り方
Jenkinsプラグインの作り方Jenkinsプラグインの作り方
Jenkinsプラグインの作り方
Kiyotaka Oku
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and Groovy
Kiyotaka Oku
 
とある断片の超動的言語
とある断片の超動的言語とある断片の超動的言語
とある断片の超動的言語
Kiyotaka Oku
 

More from Kiyotaka Oku (20)

Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3
 
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
 
BaseScriptについて
BaseScriptについてBaseScriptについて
BaseScriptについて
 
ミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考えるミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考える
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memo
 
Spockの基礎
Spockの基礎Spockの基礎
Spockの基礎
 
JUC2012
JUC2012JUC2012
JUC2012
 
GDK48総選挙の裏側
GDK48総選挙の裏側GDK48総選挙の裏側
GDK48総選挙の裏側
 
Jenkins入門
Jenkins入門Jenkins入門
Jenkins入門
 
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介
 
Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜
 
日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ
 
GroovyConsole2
GroovyConsole2GroovyConsole2
GroovyConsole2
 
GroovyConsole
GroovyConsoleGroovyConsole
GroovyConsole
 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 Spring
 
Jenkinsプラグインの作り方
Jenkinsプラグインの作り方Jenkinsプラグインの作り方
Jenkinsプラグインの作り方
 
Devsumi Openjam
Devsumi OpenjamDevsumi Openjam
Devsumi Openjam
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and Groovy
 
とある断片の超動的言語
とある断片の超動的言語とある断片の超動的言語
とある断片の超動的言語
 
Mote Hudson
Mote HudsonMote Hudson
Mote Hudson
 

javafx-mini4wd