コードの自動修正によって実現する、機能開発を止めないフレームワーク移行

gree_tech
gree_techgree_tech
コードの自動修正によって実現する
機能開発を止めないフレームワーク移行
グリーライフスタイル株式会社
木村洋太
木村洋太
● 所属
○ グリーライフスタイル株式会社 / プロダクト開発部 / メディア開発グ
ループ / エンジニアリングチーム
● 経歴
○ 2020年 グリーライフスタイル株式会社 入社
○ 主に「LIMIA」のサーバー・インフラ開発
自己紹介
2
2
LIMIAを知っていますか?
ⓘ Start presenting to display the poll results on this slide.
お手軽で、すぐ真似できるのに、ちゃんと暮らしやすい。
LIMIAは家事の工夫が大集合するライフスタイルメディアです。
お手軽工夫で家事上手
LIMIAの紹介
● 移行前
○ フレームワーク
■ FuelPHP
○ 言語
■ PHP7.0
○ インフラ
■ EC2
● 移行後
○ フレームワーク
■ Laravel
○ 言語
■ PHP7.4
○ インフラ
■ ECS Fargate
5
フレームワーク移行プロジェクト
https://aws.amazon.com/jp/architecture/icons/
6
移行プロジェクトのスケジュール
● 機能開発を止めずに移行して欲しいという要望
● 移行にかけられる工数は限られていた
○ 並行開発期間が長そうな見込みだった
方針
検討
コード自動修正ルールの作成 QA・バグ修正 インフラ検証
1月 2月 7月 9月 11月
実際の移行スケジュール
社内管理ツール
リリース
カナリヤ
リリース開始
0.5人 1人 2人
7
なぜ自動修正に踏み切ったか?
● 軽量なFuelPHP => 機能の多いLaravelへの移行
○ DB (Query Builder), Controllerあたりを置き換えれば良さそう
○ View周りはテンプレートエンジンを置き換えるだけで良さそう
● 手動修正の厳しさ
○ 50万行超えのコードベース
○ 人や時間が足りない
○ 機能開発を並行で行いたいが……
■ 移行元と移行後のコードの両方を変更する必要がある
■ 移行後のコードに変更を加えるとconflictが起こり得る
■ 機能開発を止めるしかないが、止めた場合は半年近く機能開発が進まないこと
が見込まれた
8
Rector (rectorphp/rector)
● 自動リファクタリング・マイグレーションツール
○ DeadCode, EarlyReturn... などのリファクタリングルール
○ PHPバージョンのupgrade, downgrade
● 特徴
○ nikic/php-ast をベースに抽象構文木(AST)を編集
○ 型情報をPHPStanから取得できる
○ テストが書きやすい
○ 開発が活発
9
フレームワーク移行におけるコードの修正例
● Query Builderの置き換え
○ where('col', 'in', $b) => whereIn($a, $b)
○ where('col', '=', $subQuery) => whereSub('col', $subQuery)
○ DB::select_array(['id', 'name']) => DB::select('id', 'name')
● Controllerの置き換え
○ Input, Request, Responseなどを対応するメソッドに置き換え
○ Controllerをpsr-4準拠にrename
○ psr-4のnamespaceに合わせたディレクトリへ移動
10
Rectorの変換例: EarlyReturn
ChangeNestedIfsToEarlyReturnRector
public function hoge($value) {
if ($value % 2 === 0) {
if ($value % 3 === 0) {
return 'yes';
}
}
return 'no';
}
public function hoge($value)
if ($value % 2 !== 0) {
return 'no';
}
if ($value % 3 === 0) {
return yes;
}
return 'no';
}
11
抽象構文木 (Abstract Syntax Tree: AST)
https://github.com/nikic/PHP-Parser
<?php
$var = "Hello World!";
Stmt_Expression
expr
Expression_Assign
var, expr
Expression_Variable
name: var
Scalar_String
value: Hello World!
expr
var
expr
12
Rectorの処理(抽象構文木の編集)
public function getNodeTypes(): array
{
return [String_::class];
}
public function refactor($node): ?Node
{
if ($node->value === "Hello World!") {
$node->value = "Hello GREE Tech Conf!";
return $node;
}
return null;
}
Scalar_String
value: Hello GREE Tech Conf!
Stmt_Expression
expr
Expression_Assign
var, expr
Expression_Variable
name: var
expr
var
Scalar_String
value: Hello World!
Scalar_String
value: Hello World!
13
Rectorの処理(抽象構文木からコードの構築)
Scalar_String
value: Hello GREE Tech Conf!
<?php
$var = "Hello GREE Tech
Conf!";
Stmt_Expression
expr
Expression_Assign
var, expr
Expression_Variable
name: var
expr
var
14
実際のコード自動修正の例
FuelPHP
¥DB::select_array(['id', 'name'])->from('user');
Laravel
¥DB::table('user')->select('id', 'name')
15
実際のRectorルール: select fromをtable select
¥DB::select_array(['id', 'name'])->from('user');
¥DB::table('user')->select_array(['id', 'name']);
select fromをtable selectに変更
16
実際のRectorルール: select_arrayをselect
¥DB::table('user')->select('id', 'name');
¥DB::select_array(['id', 'name'])->from('user');
¥DB::table('user')->select_array(['id', 'name']);
select fromをtable selectに変更
select_arrayの引数を展開
作成したRectorのルール数
ⓘ Start presenting to display the poll results on this slide.
18
答え
19
なぜ自動修正に踏み切ったか?(再掲)
● 軽量なFuelPHP => 機能の多いLaravelへの移行
○ DB (Query Builder), Controllerあたりを置き換えれば良さそう
○ View周りはテンプレートエンジンを置き換えるだけで良さそう
● 手動修正の厳しさ
○ 50万行超えのコードベース
○ 人や時間が足りない
○ 機能開発を並行で行いたいが……
■ 移行元と移行後のコードの両方を変更する必要がある
■ 移行後のコードに変更を加えるとconflictが起こり得る
■ 機能開発を止めるしかないが、止めた場合は半年近く機能開発が進まないこと
が見込まれた
20
コードの自動修正による機能開発と移行の並行開発
開発ブランチ
○ 機能開発、バグ修正
○ PHP7.0 => 7.4に伴うコード修正
移行用ブランチ
○ Rectorのルールの作成
○ Laravel関連ファイルの追加
今まで通りのフローで
QA・リリース
CIによる
自動修正
移行環境でのテスト
アプリケーションのコードは
移行用ブランチでは編集しない
21
どれくらい自動修正で移行できたか
● PHPファイルは2000ファイルくらい
● 変更量
● 手動で移行したファイル(〜10ファイル)
○ 認証周り
○ ルーティング
○ Formatter, AgentなどFuelPHPにしかない機能
22
コードの自動修正をやる上で……
● テスト
○ あるととても良い
○ LIMIAではテストはあまり動いていなかった
● Rectorルールのテスト
○ ルールによる変換をある程度保証できる
○ Rectorはbreaking changeが多いので結構役に立った
● 静的解析ツール
○ PHPStanの導入
■ 一番役にたった
■ 機能開発の方のバグも検出してくれた
23
自動修正で苦労したこと
● どうしても自動修正が難しそうなコード
○ めちゃくちゃ複雑なQuery Builder
○ 仕様からよくわからないコード
元のコード側をRectorで変換できるリファクタリングした
そもそもいらないコードが多かったので消しまくった(約10万行)
● ツール側のバグ
○ 正しそうなのに動かないと思ったらバージョンを変えると動いたり
○ RectorのCacheが壊れている
OSSなんだから自分で直す!!
24
自動修正による移行まとめ
● 良かったこと
○ 物量に対抗できる
○ ヒューマンエラーを減らせる
○ 新規追加されたファイルも自動で移行される
○ 機能開発とconflictすることがない
● 悪かったこと
○ Laravelの機能をフルに使えない
○ 抽象構文木の深い知識などが必要で属人化しやすい
25
移行プロジェクトを終えて
● 自動修正を決断して良かった
● Rectorというツールに出会えて良かった
○ PHP7.4 => PHP8.0でも活躍しそう!
○ リファクタリングツールとしてCIに入れたい
● インフラの移行も楽しかった
○ VPC Traffic Mirroringによる負荷テスト
○ EC2とFargateでのカナリヤリリースを行うための工夫
○ CI/CDも大幅に改善
○ エンジニアブログ書きたいと思っています……
26
1 of 26

Recommended

エンジニアの個人ブランディングと技術組織 by
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
23.3K views40 slides
オーバーエンジニアリングって何? #devsumi #devsumiA by
オーバーエンジニアリングって何? #devsumi #devsumiAオーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiAOre Product
5K views69 slides
イベント・ソーシングを知る by
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知るShuhei Fujita
30.9K views33 slides
分散トレーシング技術について(Open tracingやjaeger) by
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)NTT Communications Technology Development
23.3K views25 slides
シリコンバレーの「何が」凄いのか by
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
183.9K views77 slides
開発速度が速い #とは(LayerX社内資料) by
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
61.4K views18 slides

More Related Content

What's hot

フロー効率性とリソース効率性について #xpjug by
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugItsuki Kuroda
106.1K views62 slides
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive by
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveTokoroten Nakayama
122.2K views99 slides
マイクロにしすぎた結果がこれだよ! by
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
132.6K views32 slides
それはYAGNIか? それとも思考停止か? by
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
29.3K views41 slides
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料) by
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
3.8K views68 slides
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ by
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチYoshiki Hayama
54.7K views243 slides

What's hot(20)

フロー効率性とリソース効率性について #xpjug by Itsuki Kuroda
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda106.1K views
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive by Tokoroten Nakayama
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama122.2K views
マイクロにしすぎた結果がこれだよ! by mosa siru
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru132.6K views
それはYAGNIか? それとも思考停止か? by Yoshitaka Kawashima
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima29.3K views
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料) by NTT DATA Technology & Innovation
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ by Yoshiki Hayama
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama54.7K views
ユーザーストーリー駆動開発で行こう。 by toshihiro ichitani
ユーザーストーリー駆動開発で行こう。ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani120.9K views
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 - by Tier_IV
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier_IV11.6K views
DockerコンテナでGitを使う by Kazuhiro Suga
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga18.8K views
イミュータブルデータモデル(入門編) by Yoshitaka Kawashima
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima185.8K views
3分でわかるAzureでのService Principal by Toru Makabe
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
Toru Makabe30.5K views
本当は恐ろしい分散システムの話 by Kumazaki Hiroki
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki686K views
IT系エンジニアのためのプレゼンテーション入門 by Masahito Zembutsu
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
Masahito Zembutsu289.8K views
Test Yourself - テストを書くと何がどう変わるか by Takuto Wada
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada38.3K views
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~ by Masahito Zembutsu
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Masahito Zembutsu60.9K views
私にとってのテスト by Takuto Wada
私にとってのテスト私にとってのテスト
私にとってのテスト
Takuto Wada16.8K views
サービス開発における フロントエンド・ドメイン駆動設計の実践 by TakefumiYoshii
サービス開発における フロントエンド・ドメイン駆動設計の実践サービス開発における フロントエンド・ドメイン駆動設計の実践
サービス開発における フロントエンド・ドメイン駆動設計の実践
TakefumiYoshii41.4K views
テスト文字列に「うんこ」と入れるな by Kentaro Matsui
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui177.9K views
コンテナの作り方「Dockerは裏方で何をしているのか?」 by Masahito Zembutsu
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu30.8K views
組織にテストを書く文化を根付かせる戦略と戦術 by Takuto Wada
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada76.4K views

Similar to コードの自動修正によって実現する、機能開発を止めないフレームワーク移行

マイクロサービス時代の生存戦略 with HashiCorp by
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpMasahito Zembutsu
5.8K views121 slides
今、最もイケてるPHPフレームワークLaravel4 by
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4アシアル株式会社
12.8K views38 slides
Python におけるドメイン駆動設計(戦術面)の勘どころ by
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころJunya Hayashi
17.4K views33 slides
技術選択とアーキテクトの役割 by
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
42K views90 slides
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力 by
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
6.6K views98 slides
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例 by
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例Shigeru UCHIYAMA
2K views118 slides

Similar to コードの自動修正によって実現する、機能開発を止めないフレームワーク移行(20)

マイクロサービス時代の生存戦略 with HashiCorp by Masahito Zembutsu
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
Masahito Zembutsu5.8K views
Python におけるドメイン駆動設計(戦術面)の勘どころ by Junya Hayashi
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi17.4K views
技術選択とアーキテクトの役割 by Toru Yamaguchi
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi42K views
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力 by ThinReports
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports6.6K views
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例 by Shigeru UCHIYAMA
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
Shigeru UCHIYAMA2K views
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか? by Developers Summit
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit1.5K views
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D by Toshiyuki Ienaga
Next2Dで始めるゲーム開発  - Game Development Starting with Next2DNext2Dで始めるゲーム開発  - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Toshiyuki Ienaga85 views
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the... by Dai FUJIHARA
数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
Dai FUJIHARA17.3K views
数千人が利用する楽天Redmineの過去と未来 by Rakuten Group, Inc.
数千人が利用する楽天Redmineの過去と未来数千人が利用する楽天Redmineの過去と未来
数千人が利用する楽天Redmineの過去と未来
Rakuten Group, Inc.3.4K views
mbedではじめる組み込みHaskellプログラミング by Kiwamu Okabe
mbedではじめる組み込みHaskellプログラミングmbedではじめる組み込みHaskellプログラミング
mbedではじめる組み込みHaskellプログラミング
Kiwamu Okabe4K views
Smart Tennis Lesson Serverless Design by Ryuji TAKEHARA
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
Ryuji TAKEHARA1.3K views
ゼロからのプログラミングRails講座 Codeanywhere版 by DIVE INTO CODE Corp.
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.10.7K views
ゲームのインフラをAwsで実戦tips全て見せます by infinite_loop
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop6.1K views
【学習メモ#1st】12ステップで作る組込みOS自作入門 by sandai
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai10K views
デブサミ2013【15-D-4】Opsから挑むDevOps by Developers Summit
デブサミ2013【15-D-4】Opsから挑むDevOpsデブサミ2013【15-D-4】Opsから挑むDevOps
デブサミ2013【15-D-4】Opsから挑むDevOps
Developers Summit2.8K views
CodeIgniterによるPhwittr by kenjis
CodeIgniterによるPhwittrCodeIgniterによるPhwittr
CodeIgniterによるPhwittr
kenjis9.3K views
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか? by Takashi Sogabe
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe5K views

More from gree_tech

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
725 views36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介gree_tech
229 views13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表gree_tech
1K views18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
1.9K views84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化gree_tech
347 views116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介gree_tech
683 views31 slides

More from gree_tech(20)

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech725 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech229 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech1K views
アプリ起動時間高速化 ~推測するな、計測せよ~ by gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech1.9K views
長寿なゲーム事業におけるアプリビルドの効率化 by gree_tech
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech347 views
Cloud Spanner をより便利にする運用支援ツールの紹介 by gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech683 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech596 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について by gree_tech
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてSINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech626 views
海外展開と負荷試験 by gree_tech
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
gree_tech593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
gree_tech305 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
gree_tech573 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
gree_tech308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
gree_tech432 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech1K views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話 by gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech1.1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech693 views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech396 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech751 views
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方- by gree_tech
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
gree_tech445 views

Recently uploaded

onewedge_companyguide1 by
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1ONEWEDGE1
7 views22 slides
how query cost affects search behavior translated in JP by
how query cost affects search behavior translated in JPhow query cost affects search behavior translated in JP
how query cost affects search behavior translated in JPTobioka Ken
9 views16 slides
システム概要.pdf by
システム概要.pdfシステム概要.pdf
システム概要.pdfTaira Shimizu
36 views1 slide
SSH超入門 by
SSH超入門SSH超入門
SSH超入門Toru Miyahara
207 views21 slides
Najah Matsuo Self Introduction by
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self IntroductionNajahMatsuo
7 views29 slides
robotics42.pptx by
robotics42.pptxrobotics42.pptx
robotics42.pptxNatsutani Minoru
188 views18 slides

Recently uploaded(10)

onewedge_companyguide1 by ONEWEDGE1
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1
ONEWEDGE17 views
how query cost affects search behavior translated in JP by Tobioka Ken
how query cost affects search behavior translated in JPhow query cost affects search behavior translated in JP
how query cost affects search behavior translated in JP
Tobioka Ken9 views
Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self Introduction
NajahMatsuo7 views
図解で理解するvetKD by ryoo toku
図解で理解するvetKD図解で理解するvetKD
図解で理解するvetKD
ryoo toku85 views
3Dプリンタでロボット作るよ#1_黎明編 by Yoshihiro Shibata
3Dプリンタでロボット作るよ#1_黎明編3Dプリンタでロボット作るよ#1_黎明編
3Dプリンタでロボット作るよ#1_黎明編
AIで始めるRustプログラミング #SolDevHub by K Kinzal
AIで始めるRustプログラミング #SolDevHubAIで始めるRustプログラミング #SolDevHub
AIで始めるRustプログラミング #SolDevHub
K Kinzal21 views

コードの自動修正によって実現する、機能開発を止めないフレームワーク移行