Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LastaFlute First Impact

jflute
September 26, 2015

LastaFlute First Impact

LastaFlute in Seasar Conference

jflute

September 26, 2015
Tweet

More Decks by jflute

Other Decks in Technology

Transcript

  1. 11..ビジネス 14 SSII ((受注)) 頼まれたものを作ることで
 お金が入�る バグは損失に直結 ((瑕疵担保、信頼)) バグの致命度に関わらず損失になりやすい スタート

    アップ 自分たちのビジネスが成功するこ とでお金が入�る バグよりもスピードが大切
 ((生き残り:: マーケットフィット)) 致命的でなければ直さない選択肢もあり ((バグのビジネスインパクトの見極めが大切)) LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  2. 22..リリースタイミング 15 SSII ((受注)) ファーストリリースでわりとた くさん作る それでおしまいのこともよくある 二次三次開発もそれなりのスパンがある スタート アップ

    ファーストリリースはわりとシ ンプルで期間短い その後、毎週リリース ((最初は毎日!!??)) LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  3. 33..バグの直しやすさ 16 SSII ((受注)) リリース後は直しづらい
 ((面倒な手続き、客先作業など) ちょっとしたバグでも手間がかかる バグ修正がお金にならないことも ((瑕疵担保))
 ==>>

    なので、最初からよい品質が求められる スタート アップ リリース後でも直しやすい
 ☆これ大きい 自分たちのシステム、自分たちの都合で再起動 そもそも、最初は使ってる人がまだ少なかったり
 ==>> バグ0よりも、速くビジネスを回したい
 ((超致命でなきゃ、今は直さないという選択肢も)) LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  4. 44..作る画面の必要性 17 SSII ((受注)) 作る画面は業務的に必要なもの である ((ことが前提)) 時々そうでもなくて泣くときあるけど… なので、コード品質に時間をかけてもOOKK 


    ((時間ないけど......)) スタート アップ その画面が必要がかどうか、ま だわからない 運用してみてダメだったら捨てることも あとでガラリと変えるのは日常茶飯事 なので、コード品質に時間をかけづらい LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  5. 55..画面作りの進み方 18 SSII ((受注)) その画面を作り切ってから、次の 画面へ 必要だとわかっている機能は一気に作る 細切れに作業するとテストし直しコストや 抜けのリスクができる スタート

    アップ その画面の一部機能だけ作って、 すぐ次の画面へ ある意味、一部機能だらけの画面たちで
 リリース((ジャブ、ローキックのようなもの)) 次の ((oorr もっと先の)) リリースでその続き LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  6. 66..DDBB変更しまくる 19 SSII ((受注)) 運用後のDDBB変更はおおごと できるだけ「やらない」って方向�に… スタート アップ 運用してからのDDBB変更は    息を吸うかのごとく

    毎週のようにDDBB変更 ((DDBB変更したい)) データもプログラムもどんどん修正 LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  7. 77..ドキュメント 20 SSII ((受注)) ドキュメント作るの基本 メンテナンスする会社が別かもしれない ((お客さんとか)) ドキュメント自体がお金になることもあ る ((納品物に含まれてる))

    スタート アップ まずドキュメントは作らない ドキュメント作ってもお金にならない ドキュメントが変化についていけないの で作れない((いつかは作らないといけな いけど......のジレンマ)) LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  8. 88..人員・規模 21 SSII ((受注)) 最初から人員の確保
 ((しようとする)) ある程度の規模感はあらかじめわかって いる ((はずだが…)) 人員確保できなかったら、その仕事断る

    ことも ((れないことも......)) スタート アップ 最初めちゃ少なく、五月雨増加 サービスの成長速度にプログラマーの数が追 いついかない 入�ってきても「いい感じで頼む!」 ゆえに、コードの統一性を保つのは難しい
 少人数のときと大人数のときの激ギャップ LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  9. 99..コーディングルール 22 SSII ((受注)) ルールを守ることが大切 メンテナンス別会社になるかもしれないし あとでリファクタリングとかしづらいし 規模がある程度わかっているので、ルール も作りやすい スタート

    アップ ルールは流行らない 最初は人が少ないのでそもそもルールがない そもそも作るものや体制が変動的なのでルー ル決めが難しい★これでかい ルールを守るという精神状態でもない
 ((動くことが最優先)) LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  10. 1100..役割分担 23 SSII ((受注)) 要件定義、DDBB設計、仕様策定、プ ログラミングと人が分かれやすい はずだが…いろいろあるけど 実装時点で仕様も決まっていることが多い ((はずだが......)) スタート

    アップ ひとりの人が一通りやる、少なく とも一つに専念はほぼない そもそも人が少ない ((エンジニアばかりじゃない)) ある意味「仕様が決まってない中での実装」に 実装しながら決める((仕様という言葉がない)) LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  11. その他、スタートアップあるある 24 作業時間 作る量のわりには期限が短い((生き残れる かどうかが見積もり基準)) 状況によっては、作業時間は深夜//土日 ((別の仕事しながらスタートアップも)) プログラ ミング スキル

    役割分担できない分、ひとりに求められ るスキルが多岐にわたる 技術だけに専念できない
 ((プログラマーもビジネスに参加)) 不安定な仕事なので、((優秀で成長著しい とはいえ…))発展途上の若者が多い 精神状態 とにかく速く作らなきゃ めちゃくちゃ眠い LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  12. だから欲しいもの 身軽な開発環境 ((ホットデプロイ,, 起動の速さ)) デバッグのための TTrriiaall && EErrrroorr 既存コード解析のための TTrriiaall

    && EErrrroorr ☆意外に重要 再起動が必要にしても、起動が速ければいい 再起動で何十秒も待つとかそういう精神状態じゃない ((深夜土日にやっているときは特に))
 安全な仕組み タイプセーフ、DDBB変更への耐性 現象を追跡できるしっかりとしたログ
 規約ベース 途中参加の人を入�れてルール無しでもわりと統一感が欲しい 実装する人がガラリと入�れ替わってもわりと統一感が欲しい その後の大規模化を見越して、そういった仕組み最初から欲しい 27 LLAASSTTAA リーンスタートアップ・インクリメンタル開発の特徴
  13. JJaavvaa88とSSeeaassaarr JJaavvaa88でもSSeeaassaarr使えます
 JJaavvaassssiissttを最新版にすればOOKK
 実際に、
  SSeeaassaarr ++ DDBBFFlluuttee の JJaavvaa88 版


    のサービスを幾つか知ってます。
 ((厳密には、SSAAFFlluuttee++DDBBFFlluuttee ですが......))
 安定して動いています。 35 LLAASSTTAA JJaavvaa88とSSeeaassaarr
  14. ssuuggaayyaaさんと立ち話 FFeessssの作者、ssuuggaayyaaさん
 「SSttrruuttss11依存つらいし、今後の海外展開のた めにも、FFeessss を SSeeaassaarr から SSpprriinngg に移行し ようとしてるけど、なかなか道のりが険しい......

    jjfflluuttee「うーむー、まあ仕方ないですよねぇ......
 そういえば、SSAAFFlluutteeなんてのありますよぅ笑
 SSeeaassaarrもJJaavvaa88でフォークしちゃったりしてー」 ((完全にジョーク!)) 43 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  15. 三つの特徴、その三 54 自然とそうなるプログラミング スタートアップは、人的リソースも変化 の繰り返しの ため、自然の力が求められる。 規約ベースAAccttiioonn:UURRLL == クラス名 ++

    メソッド名 UURRLLからクラスが探しやすい 少ない選択肢:不要な選択肢を省き、 できる限り実装のブレを少なく デフォルトセット:一通り揃っている開発環境、 コンフィグの仕組みからメールまで †  迷わない!は、スピード になる LLAASSTTAA LLaassttaaFFlluutteeの誕生
  16. SSeeaassaarr を JJaavvaa88 でフォーク 57 徹底した スリム化 使わない機能削減、依存ライブラリ削減
 ((依存jjaarrを少なくシンプルに)) デバック

    しやすいように コンテナ内で発生したエラーメッセージを DDBBFFlluuttee風に ((いわゆるド派手エラー)) OOGGNNLL改�めJJSS OOGGNNLLの代わりにJJaavvaa同梱のNNaasshhoorrnnの JJaavvaaSSccrriippttエンジンを利用 ホットデプロイ はそのまま 欠かせないホットデプロイは変わらず 利用できるように LLAASSTTAA LLaassttaaFFlluutteeの誕生
  17. SSAASSttrruuttss を JJaavvaa88 でフォーク 58 SSttrruuttss11外し 一番のネックだった SSttrruuttss11 への 依存のない

    SSAASSttrruuttss を ccoommmmoonnssへの 依存最小限 古いccoommmmoonnssへの依存を外し、 アプリで最新版使えるように 内部フォワード しない フォワードせずとも綺麗なUURRLLを実現 設定ファイル 削減 定型化された設定を組み込んで、 アプリで管理する設定をシンプルに シンプルな コード RReeqquueessttからAAccttiioonnが呼ばれるまでの 道のりできるだけシンプルに HHiibbeerrnnaattee VVaalliiddaattoorr バリデーションに HHiibbeerrnnaattee VVaalliiddaattoorr を使う 規約ベースは そのまま 欠かせない規約ベースUURRLLマッピングは 変わらず利用できるように LLAASSTTAA LLaassttaaFFlluutteeの誕生
  18. 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の誕生
  19. 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の誕生
  20. 戻りレスポンス 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の誕生
  21. AAccttiioonnのポイント 徹底してタイプセーフに 要は DDBBFFlluuttee っぽく SSAASSttrruuttssでよくハマってたとこ修正 IInnddeexxだらけ問題を回避 ((クラス名検索をしやすいように)) リダイレクト//フォワード先コードにすぐにJJuummpp! 最小公倍数FFoorrmm//ppuubblliiccフィールドなし…などなど


    「こう書いても動く」を極力やらない 不要な自由度は削除 ee..gg.. 引数の順序とか、戻り値の表現とか 必要な自由度は担保 ee..gg.. vvaalliiddaattoorr ccaallllタイミング、エラー処理 63 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  22. そして、いちどフォークしてしまっ たら......いろいろと 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の誕生
  23. 止ーまらっなーい♪ 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の誕生
  24. すでに今日でも実績あり その二 UU--NNEEXXTT<ユーネクスト>
 || 日本最大級のビデオ・オンデマンド
           ((株式会社UU--NNEEXXTT))
 hhttttpp::////pp..uunneexxtt..jjpp// 基幹サービス ((220000テーブル超え)) にて

    SSAAFFlluuttee++DDBBFFlluuttee を採用 新規プロジェクトで LLaassttaaFFlluuttee を採用
 ==>> すでに一つはローンチ済み、
 ==>> もう一つ ((330000テーブル近く)) は開発中 ※公開の許可を頂いています。 69 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  25. すでに今日でも実績あり その三 CClloocckk IItt
 || タスク管理&タイムマネジメントサービス hhttttppss::////cclloocckk--iitt..ccoomm// SSAAFFlluutteeでスタートアップ、
 すでにLLaassttaaFFlluutteeに移行
 個人でのWWeebbサービスの作り方


    -- SSAAFFlluutteeでスタートダッシュを決める
 hhttttpp::////wwwwww..sslliiddeesshhaarree..nneett//TTaakkeesshhiiKKaattoo//wweebb--ssaafflluuttee
 ※公開の許可を頂いています。 70 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  26. すでに今日でも実績あり その四 FFeessss バージョン1100
 ((リリースまであともうちょい)) hhttttppss::////ggiitthhuubb..ccoomm//ccooddeelliibbss//ffeessss
 FFeessss99 :: SSeeaassaarr ++

    SSAASSttrruuttss ++ DDBBFFlluuttee FFeessss1100 :: LLaassttaa DDii ++ LLaassttaaFFlluuttee
     ++ EESSFFlluuttee ++ EEllaassttiiccsseeaarrcchh ※公開の許可を頂いています。 71 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  27. 前身のSSAAFFlluutteeも実績いろいろ zzuukknnooww((ズノウ))
 || 友達とクイズで競える学習アプリ          ((株式会社ビズリーチ)) hhttttppss::////wwwwww..zzuukknnooww..nneett//
 
 RReeggiioonnUUpp 
 ||

    SSeeaarrcchh SSiinnggaappoorree JJoobbss--HHoonngg KKoonngg jjoobbss        ((株式会社ビズリーチ)) hhttttppss::////wwwwww..rreeggiioonnuupp..ccoomm// ※どの現場からも非常に高い評判を頂いています ※公開の許可を頂いています。 74 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  28. 余談ですが...... 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の誕生
  29. 余談ですが…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の誕生
  30. FFAAQQ11:: AA それどころか、LLaassttaaFFlluutteeは、
 SSpprriinngg FFrraammeewwoorrkk,, SSpprriinngg MMVVCC にも、
 大きな影響を受けていて、
 尊敬するフレームワークの一つです。

    また、最近のDDBBFFlluutteeは、SSpprriinnggとの組 み合わせが多く、jjfflluutteeとしても非常に 身近なフレームワークです。 85 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  31. FFAAQQ33:: AA ですが、そもそも LLaassttaa は、
 DDBBFFlluutteeに強く依存をすることで、スムーズ にDDBB側と連携することに重きを置いています
 そして、LLaassttaa で作るようなサービスであれ ば、DDBB変更への耐性がキーポイントになると

    想定されるので、やはり CCoonnddiittiioonnBBeeaann は外 せない......とまでいかなくても、 RReeppllaacceeSScchheemmaa や AAlltteerrCChheecckk などのDDBB管理 支援機能は使うことを強くおススメします。
 ((どのみち、FFrreeeeGGeennは必ず使います)) 92 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  32. FFAAQQ88:: AA まずは、LLaassttaaFFlluutteeを知る上で、 EExxaammpplleeがオススメです。そこから新し いプロジェクトを作成できます。 11.. EExxaammpplleeをggiitt cclloonnee ((LLaassttaaのページにUURRLLあり)) 22..

    SSttaarrttuuppTTeessttで、
 ドメインとサービス名を修正・実行 33.. できた。
 あとは自分用にカスタマイズ 106 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  33. FFAAQQ88:: AA シングルプロジェクトか、
 マルチプロジェクトか? HHTTMMLLスタイルか、JJSSOONN AAPPIIスタイルか? hhaarrbboorr:: シングルプロジェクト HHTTMMLL,, JJSSOONN

    AAPPII 混じり mmaaiihhaammaa:: マルチプロジェクト ddoocckkssiiddee -- HHTTMMLLスタイル ((AAjjaaxxは使えるよ)) hhaannggaarr -- JJSSOONN AAPPIIスタイル 107 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  34. FFAAQQ88:: AA 例えば、マルチプロジェクトで
 HHTTMMLLスタイルなら ddoocckkssiiddee
 mmaaiihhaammaa--bbaassee:: ベースのppoomm..xxmmllなど mmaaiihhaammaa--ccoommmmoonn:: 共通クラス用、DDBBFFlluutteeここ mmaaiihhaammaa--ddoocckkssiiddee::

    WWEEBBアプリ DDoocckkssiiddeeBBoooottのmmaaiinn(())で起動 ((ブラウザからアクセス)) SSttaarrttuuppTTeessttをJJUUnniittで実行すれば、
 これをベース新規プロジェクトが作成される 108 LLAASSTTAA LLaassttaaFFlluutteeの誕生
  35. 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の誕生
  36. 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の誕生
  37. GGrreeaatt TThhaannkk yyoouu レイハウオリ、ビズリーチ、ルクサに
 大きな感謝を。ここでの支援経験が、
 すべて LLaassttaaFFlluuttee につながります。 ビズリーチのスタートアップで DDBBFFlluuttee

    を 選んでくれた ssttaakkeeuucchhii さんに大感謝。
 それがなければ LLaassttaa はありませんでした。 118 LLAASSTTAA LLaassttaaFFlluutteeの誕生