SlideShare a Scribd company logo
1 of 42
Download to read offline
比較サイトの検索改善
(SPAからSSRに変換)
アウモ株式会社 サーバーサイドエンジニア 天野桂輔
• 名前
• 天野 桂輔
• 担当
• サーバーサイドエンジニア
• Ruby on Rails、Nuxt.js
• 経歴
• 2013- グリー株式会社
• GREE Platform 部に所属
• 2020- アウモ株式会社
• 比較サイト、aRM※の開発担当 ※CRMツール
自己紹介
2
aumoはご存知ですか?
ⓘ Start presenting to display the poll results on this slide.
4
aumoってどんなサービス?
国内最大級のおでかけ情報サービス
1300万 500万
月間ユーザー数 アプリDL数
50万
掲載記事数 総口コミ数
50万
掲載メディア数
500
5
aumoってどんなサービス?
Web記事
SEOに最適化された
コンテンツ制作
Web記事
Web記事 Web記事
位置情報、閲覧傾向を利用
レコメンドシステム
App
ユーザーの口コミを活用
おでかけCGM
Web施設
6
Web記事
カテゴリ 技術スタック
プログラム言語 / FW Ruby / Ruby on Rails
インフラ AWS
データベース
MySQL, Redis, Memcached,
DynamoDB
監視 Datadog, Papertrail, PagerDuty
分析 Bigquery, PoT ※社内分析ツール
検索エンジン ElasticSearch
コード管理 GitHub
Web記事
SEOに最適化された
コンテンツ制作
Web記事
7
App
Web記事
カテゴリ 技術スタック
プログラム言語 / FW
Ruby / Ruby on Rails, Swift, Kotlin,
Python
インフラ AWS
データベース
MySQL, Redis, Memcached,
DynamoDB, FireStore Database
監視
Datadog, Papertrail, PagerDuty,
Firebase
分析 Bigquery, PoT ※社内分析ツール
検索エンジン ElasticSearch
機械学習 SageMaker, fastText
コード管理 GitHub
位置情報、閲覧傾向を利用
レコメンドシステム
App
8
Web施設
Web記事
カテゴリ 技術スタック
プログラム言語 / FW Ruby / Ruby on Rails, Vue.js, Nuxt.js
インフラ AWS
データベース
MySQL, Redis, Memcached,
DynamoDB
監視
Datadog, Papertrail, PagerDuty,
Sentry
分析 Bigquery, PoT ※社内分析ツール
検索エンジン ElasticSearch
コード管理 GitHub
Web施設
ユーザーの口コミを活用
おでかけCGM
9
比較サイトとは?
Web記事 Web記事
位置情報、閲覧傾向を利用
レコメンドシステム
App
ユーザーの口コミを活用
おでかけCGM
Web施設
Web記事
SEOに最適化された
コンテンツ制作
Web記事
10
施設情報を提供するサービス
比較サイトとは?
• 施設
• 基本情報、写真、口コミ
• 検索
• ジャンル×エリア×カテゴリで施設を検索
ホテル グルメ レジャー・観光 チラシ・ショッピング
11
構成
フロントエンド バックエンド
ELB
同一インスタンスに搭載
サブドメイン
12
当初のフロントエンド設計
UXを優先したSPAという方法を採用
13
Single Page Application
SPA
ページ遷移することなく同一のページ内でコンテンツのみ切り替
え サーバー
ELB
クライアント
①リクエスト
③レスポンス
②コンテンツ生
成
④JSをブラウザで実行
※2回目以降は差分のみリクエスト
するため処理が早い
14
SPA
• メリット
• 2回目以降は差分のデータのみを要求するため早い
• デメリット
• 初回のページ読み込みが遅い
Single Page Application
15
比較サイトの成長に伴い、初回読み込みの遅延が顕著に。。。
16
特に、施設の検索が遅い
17
検索の課題
• コンテンツ表示までの速度
• 検索エンジン最適化(SEO)対策
18
検索の課題
• コンテンツ表示までの速度
• 検索エンジン最適化(SEO)対策
19
コンテンツ表示までの速度
検索の課題
• コンテンツ生成が非同期
• レンダリングに時間がかかる
20
検索の課題
• コンテンツ表示までの速度
• 検索エンジン最適化(SEO)対策
21
検索エンジン最適化(SEO)対策
検索の課題
• コンテンツ生成が非同期で評価できない
• Web記事はSEOに強い
• ノウハウを共有したい
Web記事
SEOに最適化された
コンテンツ制作
Web記事
22
検索の課題
• コンテンツ表示までの速度
• 検索エンジン最適化(SEO)対策
解決策:SPAからSSR(同期生成)に仕様変更
23
Server Side Rendering
SSR
Webページのレンダリングをブラウザの代わりにサーバ上で行う
サーバー
ELB
クライアント
①リクエスト
③レスポンス
②コンテンツ生
成
・HTML生成
・JS実行
※ Node.js必要
④コンテンツ表
示
※画面の表示において有用な
アプリケーションの機能
24
SSR
• メリット
• 画面の表示が早い
• デメリット
• サーバー側の負荷が高い
• Node.js サーバー環境が必要
Server Side Rendering
25
つまり
26
SPAからSSR(同期生成)に仕様を変更することで
• コンテンツ表示までの速度
• 検索エンジン最適化(SEO)対策
を改善できる
27
仕様変更
• 検索処理
• Vue components 内 mounted 時に実行
• しかも、ジャンル毎に似たような処理がある...
mounted () {
return this.search()
},
search () {
const page = this.$route.query.page || 1
:
検索パラメータ設定
:
this.searchGourmetAction({ searchQuery, page }) // store経由でAPIリクエスト
}
変更前
28
Life Cycle
NuxtJS nuxt
ServerInit
Route
Middleware
fetch()
asyncData()
created()
fetch()
mounted()
validate()
・初回アクセス時に実行される
・ストアに事前にデータを格納する
☆ page components のみ利用可能
★ 全ての Vue components で利用可能
・条件の設定やチェックを行う
・page リダイレクトに利用
☆ 動的ルーティングのパラメータを検証
Vuex store
component data
☆ page レンダリング前にデータを取得
★ Vue インスタンスが生成されたときに呼び出される
★ Vue インスタンスが生成された後に呼び出される
★ DOM がレンダリングされたときに呼び出される
29
Life Cycle
NuxtJS nuxt
ServerInit
Route
Middleware
fetch()
asyncData()
created()
fetch()
mounted()
validate()
DOM がレンダリングされた後に検索
30
Life Cycle
NuxtJS nuxt
ServerInit
Route
Middleware
fetch()
asyncData()
created()
fetch()
mounted()
validate()
page レンダリング前に検
索
31
① 検索処理の移行
仕様変更
• 検索処理
• page components 内 fetch 時に実行
• page 全てに同様の処理を置くのは微妙なので...
async fetch ({ app, route }) {
return await Promise.all([
app.$categorySearch({ route })
])
},
32
② 検索処理の共通化
仕様変更
• plugin 利用
• ジャンル毎の検索処理を共通化
export default ({ store, req }, inject) => {
inject('categorySearch', async ({ route }) => {
const page = route.query.page || 1
switch (process.host) {
case process.env.GOURMET_DOMAIN:
:
検索パラメータ設置
:
await store.dispatch('gourmetSearch/searchGourmetAction', { searchQuery, page })
break
:
}
})
}
※ ブラウザ環境に帰属するオブジェクト(window, document)にはアクセス不可
33
③ 検索ページ導線を変更
仕様変更
• 検索ページへの遷移処理を修正
• <NuxtLink>によるページ遷移はクライアント側で実行
• ブラウザをハード再読み込みしてサーバーへリクエスト
34
まとめ
35
改善項目
• コンテンツ表示までの速度
• 検索エンジン最適化(SEO)対策
36
改善項目
• コンテンツ表示までの速度
• リクエストからコンテンツ表示までの速度:55~62%⬇️
• 検索エンジン最適化(SEO)対策
37
改善項目
• コンテンツ表示までの速度
• 検索エンジン最適化(SEO)対策
• 初回読み込み時に全てのコンテンツを生成
38
改善項目
• コンテンツ表示までの速度
• リクエストからコンテンツ表示までの速度:55~62%⬇️
• 検索エンジン最適化(SEO)対策
• 初回読み込み時に全てのコンテンツを生成
39
学び
40
NuxtJS
• SSR導入は困難ではない
• Node.js サーバー環境を準備
• Nuxt Life Cycle 理解 ※クライアント、サーバーの処理
• 同様の課題があるサービスに有用
• ページ単位で導入も可能
41
引き続きより良いサービス作りを心掛けていきます
これからもaumoを宜しくお願いしますmm
42

More Related Content

What's hot

オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところY Watanabe
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いota42y
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテストTakuto Wada
 
App013 ここはあえて紙と
App013 ここはあえて紙とApp013 ここはあえて紙と
App013 ここはあえて紙とTech Summit 2016
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
Spring Boot + Netflix Eureka
Spring Boot + Netflix EurekaSpring Boot + Netflix Eureka
Spring Boot + Netflix Eureka心 谷本
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールdcubeio
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知るShuhei Fujita
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
人は一ヶ月でエンジニアになれるのか - 詳細解説
人は一ヶ月でエンジニアになれるのか - 詳細解説人は一ヶ月でエンジニアになれるのか - 詳細解説
人は一ヶ月でエンジニアになれるのか - 詳細解説Livesense Inc.
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
ウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_wsウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_wsYusuke Suzuki
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018Yusuke Suzuki
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 

What's hot (20)

オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテスト
 
App013 ここはあえて紙と
App013 ここはあえて紙とApp013 ここはあえて紙と
App013 ここはあえて紙と
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
Spring Boot + Netflix Eureka
Spring Boot + Netflix EurekaSpring Boot + Netflix Eureka
Spring Boot + Netflix Eureka
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知る
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
人は一ヶ月でエンジニアになれるのか - 詳細解説
人は一ヶ月でエンジニアになれるのか - 詳細解説人は一ヶ月でエンジニアになれるのか - 詳細解説
人は一ヶ月でエンジニアになれるのか - 詳細解説
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
ウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_wsウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_ws
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 

Similar to 比較サイトの検索改善(SPA から SSR に変換)

Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所Tetsuya Odashima
 
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方理弘 山崎
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要Akira Inoue
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから真吾 吉田
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #EShuji Watanabe
 
CSP パートナー向け向け Azure マネージド サービス プレイブック
CSP パートナー向け向け Azure マネージド サービス プレイブックCSP パートナー向け向け Azure マネージド サービス プレイブック
CSP パートナー向け向け Azure マネージド サービス プレイブックMPN Japan
 
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影gree_tech
 
開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリングAmazon Web Services Japan
 
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows AzureKeiichi Hashimoto
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説Akira Inoue
 
タグ管理のススメ
タグ管理のススメタグ管理のススメ
タグ管理のススメMakoto Shimizu
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Shotaro Suzuki
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューションHiromasa Oka
 
Interoperability of webassembly with javascript
Interoperability of webassembly with javascriptInteroperability of webassembly with javascript
Interoperability of webassembly with javascriptTakao Tetsuro
 
検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築sato165 @delab
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Shotaro Suzuki
 
Azure Search クックブック
Azure Search クックブックAzure Search クックブック
Azure Search クックブックKazuyuki Miyake
 
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう! Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう! Yoichi Kawasaki
 
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!Yoichi Kawasaki
 

Similar to 比較サイトの検索改善(SPA から SSR に変換) (20)

Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所
 
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
CSP パートナー向け向け Azure マネージド サービス プレイブック
CSP パートナー向け向け Azure マネージド サービス プレイブックCSP パートナー向け向け Azure マネージド サービス プレイブック
CSP パートナー向け向け Azure マネージド サービス プレイブック
 
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング
 
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
タグ管理のススメ
タグ管理のススメタグ管理のススメ
タグ管理のススメ
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューション
 
Interoperability of webassembly with javascript
Interoperability of webassembly with javascriptInteroperability of webassembly with javascript
Interoperability of webassembly with javascript
 
検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Azure Search クックブック
Azure Search クックブックAzure Search クックブック
Azure Search クックブック
 
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう! Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
 
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
 

More from gree_tech

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

More from gree_tech (20)

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

比較サイトの検索改善(SPA から SSR に変換)