SlideShare a Scribd company logo
SSeeaassaarrで育ったDDBBFFlluuttee,,

スタートアップ現場でのJJaavvaa88とSSeeaassaarrを思う
~~LastaFluteの誕生~~
久保雅彦(jjfflluuttee)
もくじ
LL..  SSeeaassaarrとDDBBFFlluutteeの関係


AA..  リーンスタートアップ・

        インクリメンタル開発の特徴


SS..  事業会社でのSSeeaassaarrの価値


TT..  JJaavvaa88でSSeeaassaarrを動かすには?


AA..  LLaassttaaFFlluutteeの誕生
2
SSeeaassaarrと


DDBBFFlluutteeの


関係
LLAASSTTAA  SSeeaassaarrとDDBBFFlluutteeの関係
DDBBFFlluutteeって、


SSeeaassaarrプロジェクトだっけ?
4
LLAASSTTAA  SSeeaassaarrとDDBBFFlluutteeの関係
独立しました
11..00..xx::  JJaavvaa66,,77

  SSeeaassaarrプロジェクト

   ▶  oorrgg..sseeaassaarr..ddbbfflluuttee

11..11..xx::  JJaavvaa88

  DDBBFFlluutteeプロジェクト

   ▶  oorrgg..ddbbfflluuttee
5
LLAASSTTAA  SSeeaassaarrとDDBBFFlluutteeの関係
DDBBFFlluutteeって、


SSeeaassaarrでしか


動かないんだっけ?
6
LLAASSTTAA  SSeeaassaarrとDDBBFFlluutteeの関係
色々動く
SSeeaassaarrでも動くけど、

SSpprriinngg  FFrraammeewwoorrkkや

GGooooggllee  GGuuiicceeなどでも動く


特にSSpprriinngg++DDBBFFlluutteeの現場が増えている

そもそも..NNEETT版もあるし、

最近SSccaallaa((パイロット版))でも動く
7
LLAASSTTAA  SSeeaassaarrとDDBBFFlluutteeの関係
最近は…
最近は、スタートアップ現場での活躍が

増えている。

要求の変化や、仮説検証の過程で

発生するDDBB変更、これに耐えられる

フレームワークとして、さらなる調整を

続けている。
8
LLAASSTTAA  SSeeaassaarrとDDBBFFlluutteeの関係
リーンスタートアップ・

インクリメンタル開発の特徴
9
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
!!注意!!


 ※あくまでjjfflluutteeの経験や現場への


ヒアリングを、


 限りある時間で分析したものです。


10
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
事前条件たらたらと......
所詮はケースバイケースで、

SSIIといってもスタートアップっぽい開発
もあるし、事業会社でお堅い感じにやる
こともありえるので…


「どちらかといえば」というニュアンス。
厳密には......の話をしたら二時間くらいかか
るので、((すっごい))シンプルに表現してい
ます。
11
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
スタートアップの


ライフサイクル
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
スタートアップの


ライフサイクル
※ファーストリリースは、導入�期の早い段階


※メンテ期まで数年((22--55年,,nn年))とかかる


※生き残りなので途中ストップの可能性


※衰退期前に次のビジネスをスタートアップ
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
11..ビジネス
14
SSII  ((受注))
頼まれたものを作ることで

お金が入�る


バグは損失に直結  ((瑕疵担保、信頼))


バグの致命度に関わらず損失になりやすい
スタート
アップ
自分たちのビジネスが成功するこ
とでお金が入�る


バグよりもスピードが大切

  ((生き残り::  マーケットフィット))


致命的でなければ直さない選択肢もあり


((バグのビジネスインパクトの見極めが大切))  
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
22..リリースタイミング
15
SSII  ((受注))
ファーストリリースでわりとた
くさん作る


それでおしまいのこともよくある


二次三次開発もそれなりのスパンがある
スタート
アップ
ファーストリリースはわりとシ
ンプルで期間短い


その後、毎週リリース  ((最初は毎日!!??))
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
33..バグの直しやすさ
16
SSII  ((受注))
リリース後は直しづらい

((面倒な手続き、客先作業など)


ちょっとしたバグでも手間がかかる


バグ修正がお金にならないことも  ((瑕疵担保))

==>>  なので、最初からよい品質が求められる
スタート
アップ
リリース後でも直しやすい

☆これ大きい


自分たちのシステム、自分たちの都合で再起動


そもそも、最初は使ってる人がまだ少なかったり

==>>  バグ0よりも、速くビジネスを回したい

  ((超致命でなきゃ、今は直さないという選択肢も))
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
44..作る画面の必要性
17
SSII  ((受注))
作る画面は業務的に必要なもの
である  ((ことが前提))


時々そうでもなくて泣くときあるけど…


なので、コード品質に時間をかけてもOOKK  

((時間ないけど......))
スタート
アップ
その画面が必要がかどうか、ま
だわからない


運用してみてダメだったら捨てることも


あとでガラリと変えるのは日常茶飯事


なので、コード品質に時間をかけづらい
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
55..画面作りの進み方
18
SSII  ((受注))
その画面を作り切ってから、次の
画面へ


必要だとわかっている機能は一気に作る


細切れに作業するとテストし直しコストや
抜けのリスクができる
スタート
アップ
その画面の一部機能だけ作って、
すぐ次の画面へ


ある意味、一部機能だらけの画面たちで

リリース((ジャブ、ローキックのようなもの))


次の  ((oorr  もっと先の))  リリースでその続き
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
66..DDBB変更しまくる
19
SSII  ((受注)) 運用後のDDBB変更はおおごと


できるだけ「やらない」って方向�に…
スタート
アップ
運用してからのDDBB変更は   
息を吸うかのごとく


毎週のようにDDBB変更  ((DDBB変更したい))


データもプログラムもどんどん修正
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
77..ドキュメント
20
SSII  ((受注))
ドキュメント作るの基本


メンテナンスする会社が別かもしれない  
((お客さんとか))


ドキュメント自体がお金になることもあ
る  ((納品物に含まれてる))
スタート
アップ
まずドキュメントは作らない


ドキュメント作ってもお金にならない


ドキュメントが変化についていけないの
で作れない((いつかは作らないといけな
いけど......のジレンマ))
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
88..人員・規模
21
SSII  ((受注))
最初から人員の確保

                                            ((しようとする))


ある程度の規模感はあらかじめわかって
いる  ((はずだが…))


人員確保できなかったら、その仕事断る
ことも  ((れないことも......))
スタート
アップ
最初めちゃ少なく、五月雨増加


サービスの成長速度にプログラマーの数が追
いついかない


入�ってきても「いい感じで頼む!」


ゆえに、コードの統一性を保つのは難しい

少人数のときと大人数のときの激ギャップ
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
99..コーディングルール
22
SSII  ((受注))
ルールを守ることが大切


メンテナンス別会社になるかもしれないし


あとでリファクタリングとかしづらいし


規模がある程度わかっているので、ルール
も作りやすい
スタート
アップ
ルールは流行らない


最初は人が少ないのでそもそもルールがない


そもそも作るものや体制が変動的なのでルー
ル決めが難しい★これでかい


ルールを守るという精神状態でもない

  ((動くことが最優先))
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
1100..役割分担
23
SSII  ((受注))
要件定義、DDBB設計、仕様策定、プ
ログラミングと人が分かれやすい


はずだが…いろいろあるけど


実装時点で仕様も決まっていることが多い  
((はずだが......))
スタート
アップ
ひとりの人が一通りやる、少なく
とも一つに専念はほぼない


そもそも人が少ない  ((エンジニアばかりじゃない))


ある意味「仕様が決まってない中での実装」に


実装しながら決める((仕様という言葉がない))
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
その他、スタートアップあるある
24
作業時間


作る量のわりには期限が短い((生き残れる
かどうかが見積もり基準))


状況によっては、作業時間は深夜//土日  
((別の仕事しながらスタートアップも))
プログラ
ミング
スキル
役割分担できない分、ひとりに求められ
るスキルが多岐にわたる


技術だけに専念できない

  ((プログラマーもビジネスに参加))


不安定な仕事なので、((優秀で成長著しい
とはいえ…))発展途上の若者が多い


精神状態
とにかく速く作らなきゃ


めちゃくちゃ眠い


LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
アーキテクチャは変わる
くどいようですが「所詮はケースバイケース」です
が、大切なポイントは…

作るものが違えば

「大切にすることも変わってくる」


それってつまり、

「アーキテクチャも変わってくる」
25
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
ずばり!スタートアップは…
TTrriiaall  &&  EErrrroorr  の繰り返し


既存コードを読む時間が長い!

要求の変化が激しい!


画面は変わるし、DDBB変更しまくり

みんなであれこれ、

サバイバルコードだらけ


人は次々と変わるし、ルール作りは難しいし
26
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
だから欲しいもの
身軽な開発環境  ((ホットデプロイ,,  起動の速さ))


デバッグのための  TTrriiaall  &&  EErrrroorr


既存コード解析のための  TTrriiaall  &&  EErrrroorr  ☆意外に重要


再起動が必要にしても、起動が速ければいい


再起動で何十秒も待つとかそういう精神状態じゃない


((深夜土日にやっているときは特に))

安全な仕組み


タイプセーフ、DDBB変更への耐性


現象を追跡できるしっかりとしたログ

規約ベース


途中参加の人を入�れてルール無しでもわりと統一感が欲しい


実装する人がガラリと入�れ替わってもわりと統一感が欲しい


その後の大規模化を見越して、そういった仕組み最初から欲しい
27
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
あるよ!
SSeeaassaarrが結構持ってる
28
LLAASSTTAA  リーンスタートアップ・インクリメンタル開発の特徴
事業会社での


SSeeaassaarrの価値
29
LLAASSTTAA  事業会社でのSSeeaassaarrの価値
マッチするじゃん!
スタートアップをやる事業会社で欲しいものが、
SSeeaassaarrの特徴とマッチする。


ホットデプロイ


DDIIレベルでリロードしてくれる


「使い方さえ間違えなければ」かなり効く

起動の速さ


起動が速いというより、開発時はホットだからLLaazzyyLLooaadd


スマートデプロイのコンポーネント増えても、そこまで遅
くならない  ((220000テーブル超えのアプリでも1100秒切り))

SSAASSttrruuttssが規約ベース


NNoo  RRuullee  でも、AAccttiioonnクラスは綺麗にそろう
30
LLAASSTTAA  事業会社でのSSeeaassaarrの価値
そしてヒアリング!
SSeeaassaarrを使ったスタートアップの開発者のみなさ
んに聞いてみると…  ((厳密には、SSAAFFlluuttee  ++  DDBBFFlluuttee))


何気に、SSeeaassaarrに対しての不満の声はそんなに聞
こえない。もちろん細かいところはあるけれど、

他のフレームワークにしたい、とまではならない

((ただ、古いからという機能以外の面で不安あり))

※SSIIだと真逆になる印象。

((さっきのSSeeaassaarrの特徴が刺さらない))

また事業会社でも超大規模フェーズなら話は別
31
LLAASSTTAA  事業会社でのSSeeaassaarrの価値
だかしかしおかし
32
LLAASSTTAA  事業会社でのSSeeaassaarrの価値
JJaavvaa88と


SSeeaassaarr
33
LLAASSTTAA  JJaavvaa88とSSeeaassaarr
時代はJJaavvaa88
JJaavvaa88で使えなかったら

意味がない


というか、JJaavvaa99も来年!!??
34
LLAASSTTAA  JJaavvaa88とSSeeaassaarr
JJaavvaa88とSSeeaassaarr
JJaavvaa88でもSSeeaassaarr使えます

JJaavvaassssiissttを最新版にすればOOKK

実際に、

 SSeeaassaarr  ++  DDBBFFlluuttee  の  JJaavvaa88  版

のサービスを幾つか知ってます。

((厳密には、SSAAFFlluuttee++DDBBFFlluuttee  ですが......))

安定して動いています。
35
LLAASSTTAA  JJaavvaa88とSSeeaassaarr
だかしかしおかし
36
LLAASSTTAA  JJaavvaa88とSSeeaassaarr
LLaassttaaFFlluutteeの誕生
37
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
古いというイメージ
やっぱり「古い」が払拭できない

いくら機能的にフィットする面がある
と言っても、スタートアップの経験者
は、JJaavvaaの世界にはあまり多くない。

((なので、先ほどのマッチ感もあまり理
解されない。経験者だけがわかる))

スタートアップで重要な「人集め」に
支障が出てくる。
38
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
確かに辛いところも
確かに「改�善されていかない」というの
は、ハマりポイントも改�善されていかな
いということなので、つらいことも。



((ああ、ここ直ってくれないかなぁ......))

((若者たちが、毎年同じことでハマる......))
39
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
もやもや
40
SSAAFFlluuttee  ++  DDBBFFlluuttee  を前面に売り出した
いが、なんかそういうこともあって、も
やもやしてた。
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
そこでFFeessss登場!
41
Fess
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFeessssとは?
オープンソース全文検索サーバー

FFeessss  ((フェス))

hhttttpp::////ffeessss..ccooddeelliibbss..oorrgg//jjaa//



※FFeessss99までは、

「SSeeaassaarr  ++  SSAASSttrruuttss  ++  DDBBFFlluuttee」

で作られている
42
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
ssuuggaayyaaさんと立ち話
FFeessssの作者、ssuuggaayyaaさん

「SSttrruuttss11依存つらいし、今後の海外展開のた
めにも、FFeessss  を  SSeeaassaarr  から  SSpprriinngg  に移行し
ようとしてるけど、なかなか道のりが険しい......


jjfflluuttee「うーむー、まあ仕方ないですよねぇ......

そういえば、SSAAFFlluutteeなんてのありますよぅ笑

SSeeaassaarrもJJaavvaa88でフォークしちゃったりしてー」
((完全にジョーク!))
43
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
ぼくはDDBB屋さんです、はい
jjfflluutteeは、いつも通り、

リレーショナルデータベースのお風呂に
つかりながら......

「いやー、やっぱり画面はなくていいよー
会員登録とか、会員にiinnsseerrtt文書かせりゃ
いいじゃん!DDBBだけあればしあわせだ
よー、あーいいデータ((湯))だなー」




※ほんの少しだけ、デフォルメしております
44
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
メールチェック
((ほかほか......))

「ふー、RRDDBBのハーブティーでも

飲みながら、メール見るかー」

※ほんのわずかだけ、デフォルメしております
45
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
いつ頃って何語?
ssuuggaayyaaさん




「SSeeaassaarr//SSAASSttrruuttssを

JJaavvaa88フォークしたSSAAFFlluuttee、

いつ頃  作ります?




FFeessss  そっちにしようかと」
46
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
そのあのことば
あっ、いや…




あの、そのあの。。。
47
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
言っちゃった
jjfflluuttee




「い、いまから作りますよー」
48
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
井戸端会議
jjfflluuttee「こんなことやることになってさー、ハッハッハ」

友人AA  ((@@pp11uuss22eerr00::  aawwaaaawwaa))

「ああ、じゃあ来月から始まるサービス開発で

使いますよー。いつ頃初版でます?」


友人BB  ((@@CCrreeaattiivvee__GGeeaarr::  mmiiyyaassaammaa))

「いま運用してるサービス、

それに移行しますね。いつ頃使えます?」


jjfflluuttee「ふげー(><」
49
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
深夜に盛り上がるSSllaacckk…


土日が来たぞ、がっつり実装だ!
50
リーン・スタートアップだ!
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
じゃーん
LLaassttaaFFlluuttee  ||  GGiitthhuubb

hhttttppss::////ggiitthhuubb..ccoomm//llaassttaafflluuttee//llaassttaafflluuttee

LLaassttaaFFlluuttee日本語ページ

  ((英語のページも少しずつ))

hhttttpp::////ddbbfflluuttee..sseeaassaarr..oorrgg//jjaa//llaassttaafflluuttee//
51
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
三つの特徴、その一
リズム&スピードプログラミング

スタートアップは、Trial & Error の繰り返しのため、

身軽な開発環境が求められる。

ホットデプロイ:再起動せずに、AAccttiioonnクラスを


  修正してすぐに確認できる


起動が速い:再起動が必要になっても、


ハイスピードの再起動




思考のリズムを止めない!は、スピード  になる
52
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
三つの特徴、その二
53
変化できるプログラミング


スタートアップは、要求の変化  の繰り返しのため、


安全な仕組みが求められる。

徹底したタイプセーフ:タイプセーフなAAccttiioonn実装、


                          そして、CCoonnddiittiioonnBBeeaann


    攻めのDDBB変更:DDBBFFlluutteeフルパワー、


            そして、  FFrreeeeGGeenn


化け物のようなログ:困ったときに              


                        見たくなるようなログ


† 


安全!は、スピード  になる
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
三つの特徴、その三
54
自然とそうなるプログラミング


スタートアップは、人的リソースも変化  の繰り返しの
ため、自然の力が求められる。


規約ベースAAccttiioonn:UURRLL  ==  クラス名  ++  メソッド名


                            UURRLLからクラスが探しやすい


少ない選択肢:不要な選択肢を省き、


                                できる限り実装のブレを少なく


デフォルトセット:一通り揃っている開発環境、


                                        コンフィグの仕組みからメールまで


† 


迷わない!は、スピード  になる
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
LLaassttaaFFlluutteeのキャスト
55
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
JJaavvaaならではの
コンパイルセーフを最大限活かした、



リーン・スタートアップに

チャレンジしてみたい
56
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
SSeeaassaarr  を  JJaavvaa88  でフォーク
57
徹底した


スリム化
使わない機能削減、依存ライブラリ削減

((依存jjaarrを少なくシンプルに))
デバック


しやすいように
コンテナ内で発生したエラーメッセージを
DDBBFFlluuttee風に  ((いわゆるド派手エラー))
OOGGNNLL改�めJJSS
OOGGNNLLの代わりにJJaavvaa同梱のNNaasshhoorrnnの
JJaavvaaSSccrriippttエンジンを利用
ホットデプロイ
はそのまま
欠かせないホットデプロイは変わらず


利用できるように
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
SSAASSttrruuttss  を  JJaavvaa88  でフォーク
58
SSttrruuttss11外し
一番のネックだった  SSttrruuttss11  への


依存のない  SSAASSttrruuttss  を
ccoommmmoonnssへの


依存最小限
古いccoommmmoonnssへの依存を外し、


アプリで最新版使えるように
内部フォワード


しない
フォワードせずとも綺麗なUURRLLを実現
設定ファイル


削減
定型化された設定を組み込んで、


アプリで管理する設定をシンプルに
シンプルな


コード
RReeqquueessttからAAccttiioonnが呼ばれるまでの


道のりできるだけシンプルに
HHiibbeerrnnaattee  VVaalliiddaattoorr
バリデーションに


HHiibbeerrnnaattee  VVaalliiddaattoorr  を使う
規約ベースは


そのまま


欠かせない規約ベースUURRLLマッピングは


変わらず利用できるように


LLAASSTTAA  LLaassttaaFFlluutteeの誕生
LLaassttaaFFlluutteeのコード
SSeeaaLLiissttAAccttiioonn  ::  //sseeaa//lliisstt//33??iikkss==bboonnvvoo























59
  @@EExxeeccuuttee

ppuubblliicc  HHttmmllRReessppoonnssee  iinnddeexx((iinntt  ppaaggeeNNuummbbeerr,,


             SSeeaaSSeeaarrcchhFFoorrmm  ffoorrmm))  {{


          vvaalliiddaattee((ffoorrmm,,  mmeessssaaggeess  -->>  {{}},,  (())  -->>  {{

                rreettuurrnn  aassHHttmmll((ppaatthh__SSeeaa__SSeeaaLLiissttJJsspp));;

        }}));;

        PPaaggiinnggRReessuullttBBeeaann<<SSeeaa>>  sseeaaLLiisstt  ==  sseeaaBBhhvv..sseelleeccttPPaaggee((ccbb  -->>  ......));;

        LLiisstt<<RRoowwBBeeaann>>  bbeeaannss  ==  sseeaaLLiisstt..mmaappppiinnggLLiisstt((sseeaa  -->>  ......));;

        rreettuurrnn  aassHHttmmll((ppaatthh__SSeeaa__SSeeaaLLiissttJJsspp))..rreennddeerrWWiitthh((ddaattaa  -->>  {{

                ddaattaa..rreeggiisstteerr((""bbeeaannss"",,  bbeeaannss));;

        }}));;

}}
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
LLaassttaaFFlluutteeのUURRLLマッピング
AAccttiioonnクラス名  ++  EExxeeccuutteeメソッド名
60
  SSeeaaLLaannddAAccttiioonn##iinnddeexx(())  ==>>  //sseeaa//llaanndd//

IIkkssAAccttiioonn##bboonnvvoo(())  ==>>  //iikkss//bboonnvvoo//
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
UURRLLパラメータ、


FFoorrmmパラメータの定義
61
////  //sseeaa//llaanndd//  ((GGEETT  oorr  PPOOSSTT))


SSeeaaLLaannddAAccttiioonn##iinnddeexx((BBoonnvvooFFoorrmm  ffoorrmm))


////  //sseeaa//llaanndd//33  ((GGEETT  oorr  PPOOSSTT))


SSeeaaLLaannddAAccttiioonn##iinnddeexx((iinntt  iikkss,,  BBoonnvvooFFoorrmm  ffoorrmm))
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
戻りレスポンス
HHTTMMLLテンプレートのパスは自動生成





ランドに移動  ((リダイレクト先は  ..ccllaassssで指定))



JJSSOONNで戻す  ((JJSSOONN  AAPPII方式::  bbeeaannを渡せばJJSSOONNに))





62
rreettuurrnn  aassHHttmmll((ppaatthh__SSeeaa__SSeeaaLLiissttJJsspp))..rreennddeerrWWiitthh((ddaattaa  -->>  {{

        ddaattaa..rreeggiisstteerr((""bbeeaannss"",,  bbeeaannss));;

}}));;
rreettuurrnn  rreeddiirreeccttBByyIIdd((LLaannddAAccttiioonn..ccllaassss,,  33));;  ////  //llaanndd//33
rreettuurrnn  aassJJssoonn((bbeeaann));;
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
AAccttiioonnのポイント
徹底してタイプセーフに


  要は  DDBBFFlluuttee  っぽく


SSAASSttrruuttssでよくハマってたとこ修正


IInnddeexxだらけ問題を回避  ((クラス名検索をしやすいように))


リダイレクト//フォワード先コードにすぐにJJuummpp!


最小公倍数FFoorrmm//ppuubblliiccフィールドなし…などなど

「こう書いても動く」を極力やらない


不要な自由度は削除  ee..gg..  引数の順序とか、戻り値の表現とか


必要な自由度は担保  ee..gg..  vvaalliiddaattoorr  ccaallllタイミング、エラー処理
63
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
SSAAFFlluutteeの機能はある
そもそも、SSAAFFlluutteeでがっつりリーン・スタート
アップにフィットさせていた機能たち、それら
はすべて、LLaassttaaFFlluutteeで継承、かつ、さら
なる改�善


気軽な前後処理の仕組み  ((AAccttiioonnHHooookk))


タイプセーフで継承できるPPrrooppeerrttiieess


国際化対応  ((LLooccaalleeやTTiimmeezzoonnee))


組み込みログイン処理

…などなど


そもそも  SSAAFFlluuttee  とは?

hhttttpp::////ddbbfflluuttee..sseeaassaarr..oorrgg//jjaa//mmaannuuaall//ffuunnccttiioonn//hheellppeerr//ssaafflluuttee//
64
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
そして、いちどフォークしてしまっ
たら......いろいろと
bbeeffoorree::  ((フラットなddiiccoonn起動ログ))
65
  --  SS22CCoonnttaaiinneerrを作成します。ppaatthh==aapppp..ddiiccoonn


  --  SS22CCoonnttaaiinneerrを作成します。ppaatthh==ccoonnvveennttiioonn..ddiiccoonn


  --  SS22CCoonnttaaiinneerrを作成しました。ppaatthh==ccoonnvveennttiioonn..ddiiccoonn


  --  SS22CCoonnttaaiinneerrを作成します。ppaatthh==ssaafflluuttee..ddiiccoonn


  --  SS22CCoonnttaaiinneerrを作成します。ppaatthh==ssaafflluuttee__ccoorree..ddiiccoonn


  --  SS22CCoonnttaaiinneerrを作成します。ppaatthh==ssaafflluuttee__aassssiisstt..ddiiccoonn


  --  SS22CCoonnttaaiinneerrを作成しました。ppaatthh==ssaafflluuttee__aassssiisstt..ddiiccoonn


  --  SS22CCoonnttaaiinneerrを作成しました。ppaatthh==ssaafflluuttee__ccoorree..ddiiccoonn


  --  SS22CCoonnttaaiinneerrを作成します。ppaatthh==ssaafflluuttee__ddbb..ddiiccoonn


  --  SS22CCoonnttaaiinneerrを作成します。ppaatthh==ddbbfflluuttee..ddiiccoonn


  --  SS22CCoonnttaaiinneerrを作成します。ppaatthh==jj22eeee..ddiiccoonn


  --  ......
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
止ーまらっなーい♪
aafftteerr::  ((iinncclluuddeeの階層構造がわかるように))
66
  --  ......RReeaaddiinngg  aapppp..xxmmll


  --  ......RReeaaddiinngg      ccoonnvveennttiioonn..xxmmll


  --  ......RReeaaddiinngg          eemmbbeeddddeedd__ccoonnvveennttiioonn..xxmmll


  --  ......RReeaaddiinngg      ddbbfflluuttee..xxmmll


  --  ......RReeaaddiinngg          rrddbb..xxmmll


  --  ......RReeaaddiinngg              jjttaa..xxmmll


  --  ......RReeaaddiinngg                  jjttaa++uusseerrTTrraannssaaccttiioonn..xxmmll


  --  ......RReeaaddiinngg                  jjttaa++ttrraannssaaccttiioonnMMaannaaggeerr..xxmmll


  --  ......RReeaaddiinngg              jjddbbcc..xxmmll


  --  ......RReeaaddiinngg                  jjttaa..xxmmll  ((rreeccyyccllee))


  --  ......RReeaaddiinngg                  llaassttaafflluuttee__aassssiisstt..xxmmll


  --  ......
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
まだやりたいことあり
もっとタイプセーフに


FFoorrmmやメソッド定義の自動生成など

AAccttiioonnクラスから、

ドキュメントを自動生成


AAccttiioonnのUURRLL一覧


JJSSOONN  AAPPIIのインターフェース定義書

★フロント側とのやり取りで実は非常に重要

サーバーサイドテンプレートに

TThhyymmeelleeaaff


((とまあ発想だけはいくらでもある......))
67
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
すでに今日でも実績あり  その一
アットパーティー

||  宴会・パーティー予約サイト

         ((株式会社リブゲート))


hhttttppss::////aattppaarrttyy..jjpp//

LLaassttaaFFlluuttee  ++  DDBBFFlluuttee  ++  aanngguullaarrJJSS


※公開の許可を頂いています。  
68
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
すでに今日でも実績あり  その二
UU--NNEEXXTT<ユーネクスト>

||  日本最大級のビデオ・オンデマンド

          ((株式会社UU--NNEEXXTT))

hhttttpp::////pp..uunneexxtt..jjpp//


基幹サービス  ((220000テーブル超え))  にて  
SSAAFFlluuttee++DDBBFFlluuttee  を採用


新規プロジェクトで  LLaassttaaFFlluuttee  を採用

==>>  すでに一つはローンチ済み、

==>>  もう一つ  ((330000テーブル近く))  は開発中


※公開の許可を頂いています。  
69
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
すでに今日でも実績あり  その三
CClloocckk  IItt

||  タスク管理&タイムマネジメントサービス


hhttttppss::////cclloocckk--iitt..ccoomm//


SSAAFFlluutteeでスタートアップ、

すでにLLaassttaaFFlluutteeに移行

個人でのWWeebbサービスの作り方

--  SSAAFFlluutteeでスタートダッシュを決める

hhttttpp::////wwwwww..sslliiddeesshhaarree..nneett//TTaakkeesshhiiKKaattoo//wweebb--ssaafflluuttee

※公開の許可を頂いています。  
70
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
すでに今日でも実績あり  その四
FFeessss  バージョン1100

((リリースまであともうちょい))


hhttttppss::////ggiitthhuubb..ccoomm//ccooddeelliibbss//ffeessss

FFeessss99    ::  SSeeaassaarr  ++  SSAASSttrruuttss  ++  DDBBFFlluuttee


FFeessss1100  ::  LLaassttaa  DDii  ++  LLaassttaaFFlluuttee

    ++  EESSFFlluuttee  ++  EEllaassttiiccsseeaarrcchh


※公開の許可を頂いています。  
71
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
前身のSSAAFFlluutteeも実績いろいろ
SSAAFFlluuttee  は、LLaassttaaFFlluuttee  の前身となった
フレームワーク。コンセプトは同じ。


      ↓↓↓



SSAAFFlluutteeの実績は、

LLaassttaaのコンセプト実績

とも言える。


なので、すでに紹介した

「SSAAFFlluuttee  から  LLaassttaa」の実績に加え......
72
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
前身のSSAAFFlluutteeも実績いろいろ
ニクリーチ

||  お腹を空かせた学生のための、

    肉食就活サイト


         ((株式会社ビズリーチ))


hhttttppss::////2299rreeaacchh..ccoomm//

※厳密には、SSAAFFlluutteeをベースにさらに

カスタマイズ


※公開の許可を頂いています。
73
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
前身のSSAAFFlluutteeも実績いろいろ
zzuukknnooww((ズノウ))

||  友達とクイズで競える学習アプリ


         ((株式会社ビズリーチ))


hhttttppss::////wwwwww..zzuukknnooww..nneett//



RReeggiioonnUUpp  

||  SSeeaarrcchh  SSiinnggaappoorree  JJoobbss--HHoonngg  KKoonngg  jjoobbss


       ((株式会社ビズリーチ))


hhttttppss::////wwwwww..rreeggiioonnuupp..ccoomm//


※どの現場からも非常に高い評判を頂いています


※公開の許可を頂いています。
74
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
前身のSSAAFFlluutteeも実績いろいろ
LLUUXXAA  RREESSEERRVVEE

||  会員制レストラン予約サイト


         ((株式会社ルクサ))


hhttttpp::////rreesseerrvvee..lluuxxaa..jjpp//

※公開の許可を頂いています。
75
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
LLaassttaa  DDii  だけでも、すでに実績
EEllaassttiiccsseeaarrcchh  RRiivveerr  WWeebb

hhttttppss::////ggiitthhuubb..ccoomm//ccooddeelliibbss//eellaassttiiccsseeaarrcchh--rriivveerr--wweebb

SS22RRoobboott

hhttttppss::////ggiitthhuubb..ccoomm//ccooddeelliibbss//ss22rroobboott


※LLaassttaa  DDii  は、DDBBFFlluutteeにも依存していないので、

単独で使うことができます。
76
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
余談ですが......
EESSFFlluuttee  ((ssuuggaayyaaさん作))


EEllaassttiiccsseeaarrcchhのJJSSOONNのスキーマ構造から、

DDBBFFlluuttee  の  CCoonnddiittiioonnBBeeaann  に「うりふたつ」のクラスを
自動生成する機能、新しい  FFeessss1100  で利用されています

パッと見、どう見ても  CCoonnddiittiioonnBBeeaann  なのに、

検索してるのは  EEllaassttiiccsseeaarrcchh。なんとも不思議
77
LLiisstt<<FFaaiilluurreeUUrrll>>  uurrllLLiisstt  ==  ffaaiilluurreeUUrrllBBhhvv..sseelleeccttLLiisstt((ccbb  -->>  {{

        ccbb..qquueerryy(())..sseettCCoonnffiiggIIdd__EEqquuaall((ccoonnffiiggIIdd));;

        ccbb..qquueerryy(())..sseettEErrrroorrCCoouunntt__GGrreeaatteerrEEqquuaall((ccoouunntt));;

}}));;
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
余談ですが…22
MMaaiillFFlluuttee

hhttttppss::////ggiitthhuubb..ccoomm//ddbbfflluuttee--sseessssiioonn//mmaaiillfflluuttee

メールテンプレートから対応クラスを自動生成して、
タイプセーフにメール送信!


スタートアップで作るシステムは、

大抵メール機能が必須。

なので、LLaassttaaFFlluutteeにデフォルト装備。


すでに実運用でバンバンメール飛んでます。
78
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
余談ですが…33
組み込みJJeettttyy,,  組み込みTToommccaattで運用。

  ee..gg..  jjaavvaa  --jjaarr  hhaannggaarr..wwaarr


JJeettttyyBBoooott

hhttttppss::////ggiitthhuubb..ccoomm//ddbbfflluuttee--sseessssiioonn//jjeettttyy--bboooott


TToommccaattBBoooott

hhttttppss::////ggiitthhuubb..ccoomm//ddbbfflluuttee--sseessssiioonn//ttoommccaatt--bboooott

あまり使わない機能  ((jjaarrの中のアノテーションとか))  は、

オプションにして、起動スピードを速めています。


依存はしていませんが、LLaassttaaFFlluutteeの基本構成です。
79
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
続々と若者たちが…
「((プライベートで))

BBttooCCのサービスを作りたい!

よし、LLaassttaa使おう」




なーんてムードに。


((すでに、実装中の若者もいます))
80
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
ならば、jjfflluutteeも
DDBBだけじゃなく、

WWeebb側でも、

  スタートアップを支援したい


…RRDDBBのお風呂はどこいった!!??
81
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
82
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ11::  QQ
SSpprriinngg  FFrraammeewwoorrkk  は


ライバルですか?
83
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ11::  AA
いいえ


そもそも全然敵いませんし、

SSpprriinnggが積極的に選択されないような場
面での選択肢の一つになればいいなと思っ
ています。


それゆえに、リーン・スタートアップ

などの、少人数から始める変化の激しい
システム開発に特化しています。
84
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ11::  AA
それどころか、LLaassttaaFFlluutteeは、

SSpprriinngg  FFrraammeewwoorrkk,,  SSpprriinngg  MMVVCC  にも、

大きな影響を受けていて、

尊敬するフレームワークの一つです。


また、最近のDDBBFFlluutteeは、SSpprriinnggとの組
み合わせが多く、jjfflluutteeとしても非常に
身近なフレームワークです。
85
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ22::  QQ
RRuubbyy  oonn  RRaaiillss  は

ライバルですか?
86
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ22::  AA
いいえ


そもそもまったく敵いませんし、

RRuubbyyが得意な人がLLaassttaaを使う必要性は
あまりないです。


JJaavvaaが得意で、JJaavvaaの特徴を活かしてやっ
ていきたいんだけど、フレームワークど
うしようかなぁと迷っている人の選択肢
の一つになればいいなと。
87
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ22::  AA
でも、こういろいろと考えると、

スタートアップの現場で、なかなかJJaavvaa
が使われない理由がよくわかるなぁと

しみじみ。。。((SSccrriipptt言語強い))

なおさら、「JJaavvaaならでは」の

リーン・スタートアップというのに、

チャレンジしたいと。
88
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ22::  AA
コンパイルが凶ではなく、

吉と出るような

アーキテクチャを!
89
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ33::  QQ
DDBBFFlluuttee以外のOO//RRマッパーは
使えますか?
90
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ33::  AA
ほぼ、いいえ。厳密には、はい。


例えば、

FFeessss1100は、EEllaassttiiccsseeaarrcchhなので、

DDBBFFlluutteeのRRDDBB機能は使っていません。

((代わりに、EESSFFlluutteeを使っています))

ddbbfflluuttee--rruunnttiimmeeのjjaarrは入�りますが、別のOO//
RRマッパーを使うことはできます。
91
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ33::  AA
ですが、そもそも  LLaassttaa  は、

DDBBFFlluutteeに強く依存をすることで、スムーズ
にDDBB側と連携することに重きを置いています

そして、LLaassttaa  で作るようなサービスであれ
ば、DDBB変更への耐性がキーポイントになると
想定されるので、やはり  CCoonnddiittiioonnBBeeaann  は外
せない......とまでいかなくても、
RReeppllaacceeSScchheemmaa  や  AAlltteerrCChheecckk  などのDDBB管理
支援機能は使うことを強くおススメします。

((どのみち、FFrreeeeGGeennは必ず使います))
92
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ44::  QQ
SSIIでも使えますか?
93
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ44::  AA
はい


別にSSIIでも、



「特徴がスタートアップに近い開発」



であれば、フィットすると考えます。
94
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ55::  QQ
逆に向�かない現場は?
95
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ55::  AA
RR&&DD,,  oorr  RR&&DD要素を含んだ開発


jjfflluuttee自身そういった現場を経験していないので、
そこの都合はあまり気にせず作っています


ウォーターフォール


変化がなければ、変化への耐性もスピードもあま
り役に立たないでしょう


お金も人((スキル))も潤沢にある


別の方法で問題を解決できるかもしれません
96
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ55::  AA
LLaassttaaでもいいかもしれないけど、

LLaassttaaじゃなくてもいいんじゃない?



ってニュアンス
97
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ66::  QQ
流行りますか?
98
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ66::  AA
いいえ


そもそもJJaavvaaでスタートアップを行うケー
ス、要はJJaavvaaを使う事業会社が少ないと感
じるので、そんな大流行りは期待できませ
ん。

ただ、LLaassttaaFFlluutteeがそこを支える選択肢と
なって、「コンパイルセーフを活かした

スピードプログラミング」という手法が、
少しでも一目置かれて、そういう事業会社
が増えたら嬉しいなと。
99
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ66::  AA
流行らせるというよりかは、LLaassttaaが
フィットする現場、LLaassttaaなら問題解決
しやすい現場で、適切に採用されて適切
に使われて、役に立ったら嬉しいです。
100
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ77::  QQ
LLaassttaa  って何の略ですか?
101
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ77::  AA
ククク
102
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ77::  AA
それはさておき…


LLaassttaaFFlluuttee自身が

「リーン・スタートアップした」

と言えるでしょう。


すでに利用者の方々がいらっしゃったの
で、実際に使って貰いながら開発してき
ました。さらにこのあと、インクリメン
タルに成長させていかないとですね。
103
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ77::  AA
ちなみに、


LLaassttaaFFlluutteeは、こないだ7月26日に

誕生しました。((初の正式版リリース日))

DDBBFFlluutteeは…

ちょうど9年前の9月26日です。

実は今日は、DDBBFFlluutteeの9周�年の誕生日
です。((00..11..0011  から9年、11..11..00--sspp99  に))
104
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ88::  QQ
さっそく使いたいんですけど......
105
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ88::  AA
まずは、LLaassttaaFFlluutteeを知る上で、
EExxaammpplleeがオススメです。そこから新し
いプロジェクトを作成できます。


11..  EExxaammpplleeをggiitt  cclloonnee  ((LLaassttaaのページにUURRLLあり))


22..  SSttaarrttuuppTTeessttで、

ドメインとサービス名を修正・実行


33..  できた。

あとは自分用にカスタマイズ
106
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ88::  AA
シングルプロジェクトか、

マルチプロジェクトか?


HHTTMMLLスタイルか、JJSSOONN  AAPPIIスタイルか?


hhaarrbboorr::  シングルプロジェクト


HHTTMMLL,,  JJSSOONN  AAPPII  混じり


mmaaiihhaammaa::  マルチプロジェクト


ddoocckkssiiddee  --  HHTTMMLLスタイル  ((AAjjaaxxは使えるよ))


hhaannggaarr  --  JJSSOONN  AAPPIIスタイル
107
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ88::  AA
例えば、マルチプロジェクトで

HHTTMMLLスタイルなら  ddoocckkssiiddee

mmaaiihhaammaa--bbaassee::  ベースのppoomm..xxmmllなど


mmaaiihhaammaa--ccoommmmoonn::  共通クラス用、DDBBFFlluutteeここ


mmaaiihhaammaa--ddoocckkssiiddee::  WWEEBBアプリ


DDoocckkssiiddeeBBoooottのmmaaiinn(())で起動  ((ブラウザからアクセス))


SSttaarrttuuppTTeessttをJJUUnniittで実行すれば、

これをベース新規プロジェクトが作成される
108
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
EExxaammpplleeマップ
109
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
FFAAQQ88::  AA
まだドキュメントも少ないので、

jjfflluutteeに聞いてください。

hhttttppss::////ttwwiitttteerr..ccoomm//jjfflluuttee


作者にサクッと聞いて問題を解決、

これもスタートアップの極意です。
110
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
さいごに
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
フォークして、

あらためて思ったこと
「SSeeaassaarrってすごいなぁ」

としみじみ。

これは自分では0から絶対に作れない



※コミッタの方々に、22001155年にして、

尊敬と感謝の念をたくさん感じてます。



素晴らしいコードを、ありがとうございます。
112
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
オープンソースのいいところ
プロダクトは静かになっても、



ソースは旅立ち、

      進化できる。
113
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
LLaassttaa  DDii  tthhaannkkss…
TThhaannkkss,,  FFrraammeewwookkss


LLaassttaa  DDii  ffoorrkkss  SSeeaassaarr,,

AAOOPP  aalllliiaannccee  aanndd  eexxtteennddss  iitt,,

tthhaannkkffuull  wwoonnddeerrffuull  ffuunnccttiioonnss..

AAnndd  aallssoo  ffoorrkkss  SS22CCllaassssBBuuiillddeerr

((ccaalllleedd  RReeddeeffiinneerr  iinn  LLaassttaa  DDii)),,  pprroovviiddeess  fflleexxiibbllee  DDii  xxmmll..


IIff  tthhee  ffrraammeewwoorrkkss  wweerree  nnoott  tthheerree,,

nnoo  LLaassttaa  DDii  hheerree..


II  aapppprreecciiaattee  eevveerryy  ffrraammeewwoorrkk..



 **ffrroomm  GGiitthhuubb  ppaaggee  ooff  LLaassttaa  DDii
114
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
LLaassttaaFFlluuttee  tthhaannkkss…
TThhaannkkss,,  FFrraammeewwookkss


LLaassttaaFFlluuttee  ffoorrkkss  SSAASSttrruuttss,,  

SSttrruuttss  aanndd  CCoommmmoonnss  uuttiilliittiieess

aanndd  ((hheeaavviillyy))  eexxtteennddss  iitt..


AAnndd  iiss  iinnfflluueenncceedd  bbyy  SSpprriinnggBBoooott,,  PPllaayy22..


IIff  tthhee  ffrraammeewwoorrkkss  wweerree  nnoott  tthheerree,,

nnoo  LLaassttaaFFlluuttee  hheerree..


II  aapppprreecciiaattee  eevveerryy  ffrraammeewwoorrkk..



 **ffrroomm  GGiitthhuubb  ppaaggee  ooff  LLaassttaaFFlluuttee
115
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
BBiigg  TThhaannkk  yyoouu
わらちゃん、ぺろった、らいと、きっとさん、
ddoocckkssiiddeeのEExxaammppllee作りありがとう。


ssaawwくん、mmoorriizzoonnee、でこちゃん、

hhaannggaarrのEExxaammppllee作りありがとう。


じゅんぺー、モデル作成ありがとう。

yyaappppyy、特徴のレビューありがとう。
116
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
CCrraazzyy  TThhaannkk  yyoouu
ssuuggaayyaaさん、aawwaaaawwaaさん、mmiiyyaassaammaa、

まだ一行もコードがない状態から「使
う!」と言ってくれて、そして、実際に
使ってくれて、ありがとうございます。


UU--NNEEXXTTの友人エンジニアのみなさん、

LLaassttaaFFlluuttee採用ありがとうございます。
117
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
GGrreeaatt  TThhaannkk  yyoouu
レイハウオリ、ビズリーチ、ルクサに

大きな感謝を。ここでの支援経験が、

すべて  LLaassttaaFFlluuttee  につながります。


ビズリーチのスタートアップで  DDBBFFlluuttee  を
選んでくれた  ssttaakkeeuucchhii  さんに大感謝。

それがなければ  LLaassttaa  はありませんでした。
118
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
SSuuppeerr  TThhaannkk  yyoouu
DDIIOO様、スライド作成ありがとう。

あとでお菓子あげるね。
119
LLAASSTTAA  LLaassttaaFFlluutteeの誕生
おしまい
ごせいちょう

ありがとうございました。
LLAASSTTAA  LLaassttaaFFlluutteeの誕生

More Related Content

Recently uploaded

受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
ooishi1
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
fisuda
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
Yoshitaka Kawashima
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 

Recently uploaded (7)

受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
Marius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Lasta seasar 2015