SlideShare a Scribd company logo
1 of 45
Download to read offline
Hatena::Letの式年遷宮
2021-11-25 Hatena Engineer Seminar #17
大仲 能史 a.k.a. id:onk
自己紹介
• 大仲 能史 a.k.a. id:onk
• 株式会社はてな チーフエンジニア
• ノベルチーム所属
• チームではWebアプリケーションエンジニア、


技術グループ全体ではマネージャ業をやっています
今日の話
式年遷宮
式年遷宮とは
• 伊勢神宮では、20年に一度、社殿と神宝を新調して大御神にお遷り
願う
• 土地が2倍用意されていて、20年おきに隣に建てて移す
• 社殿や御神宝を、変わることなく継承し続ける祭祀
• 建物そのものがレガシー (オリンピックで聞いた方) なのではなく、
維持する体制を維持する
ソフトウェアにおける


式年遷宮
ソフトウェア式年遷宮とは
• 2013年にid:kenjiskywalkerによって提唱された概念
• 2013年
• 伊勢神宮&出雲大社の式年遷宮の年
• インフラのB/Gデプロイメントを


式年遷宮に見立てた
https://blog.kenjiskywalker.org/2013/08/11/shikinen-sengoo-infrastracture/
ソフトウェア式年遷宮とは
• 2014-2016年に一般に広まる
• id:antipop
• JAWS DAYS 2014 Immutable Infrastructureトラックのパネルディスカッション
• id:ryotarai
• クックパッドのサーバプロビジョニング事情 - クックパッド開発者ブログ
• id:mirakui
• クックパッドの継続的な成長のために開発と運用が何をしてきたのか、その失敗と
成功について - Speaker Deck
ソフトウェア式年遷宮とは
• 2018年 id:edvakfによる拡大解釈
• 放置しがちな社内システムこそ式年遷宮していこう - pixiv inside
• インフラだけじゃなくソフトウェアも式年遷宮する
• 定期的に作り直すことで、メンテナビリティが向上し、新規開発
からの学びも得られる
ソフトウェア式年遷宮とは
• 2020年 id:daiksyにより更に意味が加えられる
• プロダクトを10年運用する チームをつくる / DevSumi2020 -
Speaker Deck
• 全てをフルスクラッチで作り直す前に、周期的に手を入れ続ける
• プロダクトを構成する要素単位で作り直すことでブラックボックスや
負債になりかけた要素をモダンにし、エンジニアの技術継承を行う
• 作り直した後、遷宮参加者はその要素に一番詳しい状態になる
今日の話
• ソフトウェア式年遷宮とは
• Hatena::Letの歴史
• 遷宮のリアル
• まとめ
Hatena::Letとは
• ブックマークレットをかんたんに作成・公開できるラボサービス
Hatena::Letの歴史
• 2009-11-07
• サービス開発合宿でid:secondlifeとid:cho45が開発
• 余談:同じ開発合宿で作られたのがHatena::Haiku
• 2010-05-15
• ラボサービスとして公開
Hatena::Letの歴史
• 2010-07
• id:secondlife退職
• 2011-12
• id:cho45退職
• id:sampleが引き継ぐ
• 2017-10
• id:sample退職
• 有志のオーナー不在に
• SPFチームがオーナーとしてメ
ンテナンス
※公開情報が見つからないので仮名。
Hatena::Letの歴史
• 2018-04
• id:onk入社
• 2018-08
• オーナー引き継ぎ
• 引き続きメンテナンスモード
• 2020-05
• さようならPerl、こんにちはRuby
遷宮した
遷宮という選択に至るまで
• リリース当時 (2009) の技術
• はてラボサーバ
• はてながAWSを使い出したのは2011年
• はてラボDB
• 共通DBモデル
• Hatenaフレームワーク (Perl)
• Ridge + MoCo
• ざっくり言うとRails 1.5ぐらいに相当
遷宮という選択に至るまで
• 2009年に作られたまま、細々とメンテナンスされている
• EC2移転や共通DB脱出は行われた
• DBのスキーマはベストではない
• Ridge+MoCoのままメンテナンスするのはコストが高い
• Ridge: last commit 2013-01-10
• MoCo: last commit 2012-04-10
• 失われた技術スタック
サービスを作るときの軸
• サービスを作るときは以下の 2 軸で考えることが多い。


届ける速度と、ユーザに価値があるかどうか
https://www.slideshare.net/takafumionaka/25-137790052
サービスを作るときの軸
• 第 1 象限は「やる」
• 第 3 象限は「やらない」
• 第 4 象限は「誘惑」
• すぐできるけど、そんなに価値はない
• 他の優先課題があるかもしれない
• 壺に石→砂→水を詰めるってコピペがあるよね?
https://www.slideshare.net/takafumionaka/25-137790052
サービスを作るときの軸
• 第 2 象限を一番考えなきゃいけなくて、


価値があるからぜひ作りたい。けど作るの
が難しい機能
• これを実現するのがプログラマとしての腕の
見せ所になる
https://www.slideshare.net/takafumionaka/25-137790052
サービスを作るときの軸
• フレームワークは「価値があることをすぐ作
れるようにする」のが役目
• 第 2 象限を第 1 象限に変える
• もしくは第 4 象限を魅力的品質まで高める
ことで第 1 象限に変える
• そこに寄与しないなら不要
https://www.slideshare.net/takafumionaka/25-137790052
遷宮という選択に至るまで
• 全てを掌握して、メンテしていきたい
• 特にDBリファクタリングをしたい
• 今のフレームワークは価値に寄与していない
• 簡単にDBを変更できるか? => 現在においてはNo
• 魅力的品質を生んでいるか? => 現在においてはNo
遷宮用の技術選定
• インフラはノータッチ
• Sinatra + ActiveRecord
• ERB
• static
fi
lesはノータッチ
やったこと
• MoCo => ActiveRecordに変換
• 10テーブル程度だったので、気合い
• そこそこARの中を知ってないと難しかったと思う
• PKが無いテーブルを、PK必須なORMで扱う
• ナチュラルキーPKな関連テーブルを、サロゲートキーを期待す
るORMで扱う
やったこと
• ActiveRecord投入は僕の常套手段
• 他のリポジトリでもやっている
• メンテ用のREPLやORMが欲しい
• データを理解するための最短手段


=> 空でER図が書けるようになるまで写経する
• 学問に王道なし
https://developer.hatenasta
ff
.com/entry/2018/11/21/120000
やったこと
• Ridge => Sinatraに変換
• RESTfulではないURLが使われているが全て維持した
• 掌握が先、変更は後
• 久々に sinatra app を作った - id:onk のはてなブログ
やったこと
• Xslate => ERBに変換
• 20ファイル程度だったので、そこまで手間じゃない
• XslateからERBならそのまま翻訳できる
• ここが簡単であって欲しいのでサーバ側でHTMLをレンダリング
する手段を選んだ
はじめからやり直したい症候群
https://www.hyuki.com/kokoro/#hajime
全部読むと分かった面白ポイント
• 「;」区切りのクエリパラメータが存在している
• https://onk.hatenablog.jp/entry/2020/12/18/202554
• Validではあるが、実際URL Escapeしてしまうクローラが存在し
ていた
• I18n対応していた
• メニューやボタンの文言が英語に
全部読むと分かった面白ポイント
• IE6SP2対応
• URL長の制限がキツい(488文字)ため、minifyしても
`javascript:(function(){...})()` 形式だと、よくあふれる
• 一定長以上だとscriptタグを挿入するブックマークレットになる仕
組みになっている
• Mixed contentsやContent Security Policyの影響を受ける
数値で見る遷宮
• $ git show xxx ̶stats
• Hello, Ruby!
• 55
fi
les changed, 2827 insertions(+), 32 deletions(-)
• Bye Perl
• 111
fi
les changed, 10478 deletions(-)
• だいたい 1/3 ぐらいのコード量に
遷宮後にやったこと
• ActiveRecordで良かった!
• ignore_columnsやcallbackを駆使して、本番DBリファクタリングを
実現可能だった
• レールから外れたデータベースを扱う - onk.ninja
• 主キーが無いテーブルや複合主キーはサロゲートキーを追加する
• timestampsを見慣れたxxx_atにリネーム
• ナチュラルキーを倒したり、テーブルごと作り直したりも
遷宮後にやったこと
• URLをリソース志向にシフト
• POST時にクエリパラメータとBodyが両方あったらどう扱われる
のか、みたいな悩みどころがあった。ので減らした
• ForkはGETではなくPOSTを使う
• クローラがGETリンクを見つけて、クリックしていた
• 毎日2000回ぐらい、クローラが(リダイレクトされて)ログイン
画面を表示して、諦めていた
遷宮後にやったこと
• インフラをマネージド化
• Perl時はEC2 + EC2(MySQL)
• 今はALB + ECS + Aurora + ElastiCache(Redis)
遷宮後にやったこと
• JSのminifyにはterserを使うように移行
• もともとの仕組み (JavaScript::Squish) だと、ES2015以降の書
き方をしたときに、例えばテンプレートリテラルが途中で消える
等の問題があった
コミュニケーションの喜び
• ユーザさんは問い合わせせずに、サービス上で不具合の動作確認を
してくれる
• 再現する最小コードを投稿してくれるの凄すぎる
• TOPページを眺めていたら見つけた
コミュニケーションの喜び
• 対応しておくと反応がある
コミュニケーションの喜び
• 更に対応しておくと反応がある
• 文通のような楽しみ
今後の展開
• Greasemonkeyにどこまで近づくか
• 例えばGreasy Forkという競合サービスがある
• インストール数とかを取得できるようになると公開する楽しさが
増える
• 検索したいって声にも上手に対応したい
今後の展開
• graphql-rubyを導入してフロントエンド刷新
• DB改善が終わったので、すごく扱いやすくなった
• Rubyなのはそのままでも良いかなぁ
• Hatena::Letを作ったid:secondlifeも、はてなでRubyを使い続
けていた人なので、意志を継いでいく(?)
• Perl の会社で使われる Ruby の利用法とは!? - 日本Rubyカン
ファレンス2006
今後の展開
• インフラ構成で遊ぶ
• 現在はALB + ECS + Aurora + ElastiCache(Redis)
• こうしてみる?
• CloudFront + API Gateway + Cloud Map + ECS + Aurora + DynamoDB
• CloudFront + API Gateway + Lambda + Aurora + DynamoDB
• 300req/min未満ならAPI GatewayはALBよりお得
• コストが低くなると持続可能性が高まる
• ちょっと面白い構成はどんどん試しておきたい
社の標準スタックの一歩隣を行く
• 正しいラボサービスの姿
• 最近のはてなの標準技術スタックは gqlgen + Next.js
• 似ているが少し違う技術を使うことで、知識の幅を広げる
• これは僕が18年選手&Hatena::Letがアプリケーションとして小さいから
選ぶ方法
• 慣れていないor複雑な要件があるなら、同じ技術を複数アプリケーショ
ンで使う方が予想外の要件で荒波に揉まれることになり、深みが出る
はてラボとは
はてラボは、はてなの実験的サービス置き場です。
2006年2月に「はてな社員の個人的アイデアに形を与え、未完成のサービスに改善
を重ねながら本サービスに育てる」という目的で開始しました。
現在では、本サービス化を目指すだけではなく
•稼働中の本サービスに導入することが難しい新規機能を先行して実装する
•本サービスとは異なるルールやポリシーに基づいてサービスを提供する
•本サービスとして継続提供することが難しくなったサービスを、規模を縮小した
形で提供し、ラボならではの挑戦的な施策を導入し再生を図る
といった、広義の実験的プロジェクトや実証実験の場としても使われています。
https://hatelabo.jp/ より抜粋  
「式年」遷宮の必要はあるか
• ヨシヨシできていれば問題無い、という話はある
• Webサービスはヨシヨシしないとスネる - pblog
• そこそこヨシヨシしていてもスネる(=負債は溜まっていく)
• 業務ですら全ての行に目を入れ続けるのは不可能で、知識が欠けていく
• 運営チームがドメイン知識を再獲得するための遷宮
• やる範囲を見極めつつ、コア機能こそ式年遷宮する必要があるのだろう
• 列車を走らせ続けながらパーツを交換するイメージ

More Related Content

What's hot

イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンスLivesense Inc.
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD概念モデリング再入門 + DDD
概念モデリング再入門 + DDDHiroshima JUG
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Takayuki Shimizukawa
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
RailsGirls から始める エンジニアリングはじめの一歩
RailsGirls から始める エンジニアリングはじめの一歩RailsGirls から始める エンジニアリングはじめの一歩
RailsGirls から始める エンジニアリングはじめの一歩Hiroshi SHIBATA
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発Takafumi ONAKA
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南Mikiya Okuno
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarrayRyosuke839
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?Teppei Sato
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術Takafumi ONAKA
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
 

What's hot (20)

イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD概念モデリング再入門 + DDD
概念モデリング再入門 + DDD
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
MLOps入門
MLOps入門MLOps入門
MLOps入門
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
RailsGirls から始める エンジニアリングはじめの一歩
RailsGirls から始める エンジニアリングはじめの一歩RailsGirls から始める エンジニアリングはじめの一歩
RailsGirls から始める エンジニアリングはじめの一歩
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
Oss貢献超入門
Oss貢献超入門Oss貢献超入門
Oss貢献超入門
 
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 

Similar to Hatena::Letの式年遷宮

Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01Yuta Shimizu
 
デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリングデザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリングkei takakuda
 
長野にある小水力発電所は Elixir & Nerves え動いているってご存知でしたか?
長野にある小水力発電所は Elixir & Nerves え動いているってご存知でしたか?長野にある小水力発電所は Elixir & Nerves え動いているってご存知でしたか?
長野にある小水力発電所は Elixir & Nerves え動いているってご存知でしたか?Yutaka Kikuchi
 
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Masakazu Muraoka
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたしRyunosuke SATO
 
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島  mongodbデータベース勉強会 In 広島  mongodb
データベース勉強会 In 広島 mongodbRyuji Tamagawa
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャota42y
 
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについてDaisuke Tamada
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾Ryutaro YOSHIBA
 
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみたYoshiki Shibukawa
 
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方Kentaro Yoshida
 
20190410 cnjp rancher-flexvolume
20190410 cnjp rancher-flexvolume20190410 cnjp rancher-flexvolume
20190410 cnjp rancher-flexvolumet8kobayashi
 
Fargate起動歴1日の男が語る運用の勘どころ
Fargate起動歴1日の男が語る運用の勘どころFargate起動歴1日の男が語る運用の勘どころ
Fargate起動歴1日の男が語る運用の勘どころYuto Komai
 
DB思い出話いろいろ(仮)
DB思い出話いろいろ(仮)DB思い出話いろいろ(仮)
DB思い出話いろいろ(仮)Takahiro Kitayama
 
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラインフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラsusumu tanaka
 
Dockerizeして
大変だった話、幸せになった話
Dockerizeして
大変だった話、幸せになった話Dockerizeして
大変だった話、幸せになった話
Dockerizeして
大変だった話、幸せになった話Akira Miki
 
そうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニアそうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニアrecotech
 

Similar to Hatena::Letの式年遷宮 (20)

Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
 
デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリングデザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリング
 
長野にある小水力発電所は Elixir & Nerves え動いているってご存知でしたか?
長野にある小水力発電所は Elixir & Nerves え動いているってご存知でしたか?長野にある小水力発電所は Elixir & Nerves え動いているってご存知でしたか?
長野にある小水力発電所は Elixir & Nerves え動いているってご存知でしたか?
 
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島  mongodbデータベース勉強会 In 広島  mongodb
データベース勉強会 In 広島 mongodb
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャ
 
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
 
Kotlin skeleton
Kotlin skeletonKotlin skeleton
Kotlin skeleton
 
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
 
Yapc2012ltthon
Yapc2012ltthonYapc2012ltthon
Yapc2012ltthon
 
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方
 
20190410 cnjp rancher-flexvolume
20190410 cnjp rancher-flexvolume20190410 cnjp rancher-flexvolume
20190410 cnjp rancher-flexvolume
 
Fargate起動歴1日の男が語る運用の勘どころ
Fargate起動歴1日の男が語る運用の勘どころFargate起動歴1日の男が語る運用の勘どころ
Fargate起動歴1日の男が語る運用の勘どころ
 
DB思い出話いろいろ(仮)
DB思い出話いろいろ(仮)DB思い出話いろいろ(仮)
DB思い出話いろいろ(仮)
 
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラインフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
 
Dockerizeして
大変だった話、幸せになった話
Dockerizeして
大変だった話、幸せになった話Dockerizeして
大変だった話、幸せになった話
Dockerizeして
大変だった話、幸せになった話
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
そうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニアそうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニア
 

More from Takafumi ONAKA

不正のトライアングルとコードベースの治安維持
不正のトライアングルとコードベースの治安維持不正のトライアングルとコードベースの治安維持
不正のトライアングルとコードベースの治安維持Takafumi ONAKA
 
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発Takafumi ONAKA
 
pt-query-digest は Perl!!
pt-query-digest は Perl!!pt-query-digest は Perl!!
pt-query-digest は Perl!!Takafumi ONAKA
 
アプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のことアプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のことTakafumi ONAKA
 
cpanfileがRubyでパースできることに気づいた俺たちは
cpanfileがRubyでパースできることに気づいた俺たちはcpanfileがRubyでパースできることに気づいた俺たちは
cpanfileがRubyでパースできることに気づいた俺たちはTakafumi ONAKA
 
Perl使いの国のRubyist
Perl使いの国のRubyistPerl使いの国のRubyist
Perl使いの国のRubyistTakafumi ONAKA
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメTakafumi ONAKA
 
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースクローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースTakafumi ONAKA
 
ドリコム×ピクシブ 社会人交換留学説明資料
ドリコム×ピクシブ 社会人交換留学説明資料ドリコム×ピクシブ 社会人交換留学説明資料
ドリコム×ピクシブ 社会人交換留学説明資料Takafumi ONAKA
 
マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgitTakafumi ONAKA
 
Github Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんGithub Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんTakafumi ONAKA
 
ターミナルで画像確認するヤツ作った
ターミナルで画像確認するヤツ作ったターミナルで画像確認するヤツ作った
ターミナルで画像確認するヤツ作ったTakafumi ONAKA
 
Webアプリケーションは難しい
Webアプリケーションは難しいWebアプリケーションは難しい
Webアプリケーションは難しいTakafumi ONAKA
 
Rails3.2ってどう変わるの?
Rails3.2ってどう変わるの?Rails3.2ってどう変わるの?
Rails3.2ってどう変わるの?Takafumi ONAKA
 
ドリコム的Railsアプリ開発流儀
ドリコム的Railsアプリ開発流儀ドリコム的Railsアプリ開発流儀
ドリコム的Railsアプリ開発流儀Takafumi ONAKA
 
とあるアプリの開発運用(トラブルシュート)
とあるアプリの開発運用(トラブルシュート)とあるアプリの開発運用(トラブルシュート)
とあるアプリの開発運用(トラブルシュート)Takafumi ONAKA
 

More from Takafumi ONAKA (19)

不正のトライアングルとコードベースの治安維持
不正のトライアングルとコードベースの治安維持不正のトライアングルとコードベースの治安維持
不正のトライアングルとコードベースの治安維持
 
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発
 
pt-query-digest は Perl!!
pt-query-digest は Perl!!pt-query-digest は Perl!!
pt-query-digest は Perl!!
 
アプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のことアプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のこと
 
cpanfileがRubyでパースできることに気づいた俺たちは
cpanfileがRubyでパースできることに気づいた俺たちはcpanfileがRubyでパースできることに気づいた俺たちは
cpanfileがRubyでパースできることに気づいた俺たちは
 
Perl使いの国のRubyist
Perl使いの国のRubyistPerl使いの国のRubyist
Perl使いの国のRubyist
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメ
 
RSpecしぐさ
RSpecしぐさRSpecしぐさ
RSpecしぐさ
 
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースクローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
 
Application Bootstrap
Application BootstrapApplication Bootstrap
Application Bootstrap
 
ドリコム×ピクシブ 社会人交換留学説明資料
ドリコム×ピクシブ 社会人交換留学説明資料ドリコム×ピクシブ 社会人交換留学説明資料
ドリコム×ピクシブ 社会人交換留学説明資料
 
すこやかRails
すこやかRailsすこやかRails
すこやかRails
 
マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgit
 
Github Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんGithub Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃん
 
ターミナルで画像確認するヤツ作った
ターミナルで画像確認するヤツ作ったターミナルで画像確認するヤツ作った
ターミナルで画像確認するヤツ作った
 
Webアプリケーションは難しい
Webアプリケーションは難しいWebアプリケーションは難しい
Webアプリケーションは難しい
 
Rails3.2ってどう変わるの?
Rails3.2ってどう変わるの?Rails3.2ってどう変わるの?
Rails3.2ってどう変わるの?
 
ドリコム的Railsアプリ開発流儀
ドリコム的Railsアプリ開発流儀ドリコム的Railsアプリ開発流儀
ドリコム的Railsアプリ開発流儀
 
とあるアプリの開発運用(トラブルシュート)
とあるアプリの開発運用(トラブルシュート)とあるアプリの開発運用(トラブルシュート)
とあるアプリの開発運用(トラブルシュート)
 

Recently uploaded

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (8)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

Hatena::Letの式年遷宮