Copyright © DeNA Co.,Ltd. All Rights Reserved.
November 22, 2016
Makoto HARUYAMA
DeNA Co., Ltd.
マイクロサービスっぽい感じの話
Copyright © DeNA Co.,Ltd. All Rights Reserved.
少し自己紹介
2
● 2008年 DeNA入社(みんなのウェディング)
● 2010年 エンジニアになる
● 2011年 DeNA退社 -> 福岡へ
● 2013年 DeNAに出戻り
● 2016年 ゲーム事業本部
Makoto HARUYAMA
● GitHub https://github.com/SpringMT
● Twitter https://twitter.com/Spring_MT
春山 誠
Copyright © DeNA Co.,Ltd. All Rights Reserved.
3
DeNAのゲーム開発について
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA for GAME CREATORS
4参照元 : http://recruit-games.dena.jp/technology/
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA for GAME CREATORS
5参照元 : http://recruit-games.dena.jp/technology/
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA for GAME CREATORS
6参照元 : http://recruit-games.dena.jp/technology/
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA for GAME CREATORS
7参照元 : http://recruit-games.dena.jp/technology/
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
1. Sakashoとは(軽く)
2. マイクロサービスぽい?
3. 最近の取り組み
4. まとめ
8
Copyright © DeNA Co.,Ltd. All Rights Reserved.
9
Sakashoとは
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA for GAME CREATORS
ネイティブゲーム用プラットフォーム
Sakasho
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoとは
ネイティブアプリゲーム開発に
必要とされるサーバー機能を
提供するゲームプラットフォーム
ゲーム開発におけるサーバーサイドで
やるべき事をSakashoが一括で受け持
つことで、各開発チームはクライアント側
の開発に専念できる
運用のしやすさも見据えたゲームの
作り方のルールもある程度強いる
11
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ゲーム開発・運用に必要なAPIの提供
● ユーザー情報API
● マスターデータ配信API
● ログインボーナスAPI など
12
Sakashoが提供している機能
● 課金API
● アセット配信API
● CS対応のための機能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
SDK
● 課金やPush通知など、OSに依存している機能について
簡単に使えるインターフェースの提供
● Unity、C++のゲームエンジンに対応
13
Sakashoが提供している機能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
WebView用インターフェースの提供
● お知らせの配信
● 掲示板
● 利用規約など
14
Sakashoが提供している機能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ゲーム専用サーバーとの連携機能
● ゲーム専用サーバーからSakashoにアクセスできるWeb APIを提供
● ゲーム専用サーバーを介してのユーザー情報の取得などに対応
15
Sakashoが提供している機能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの機能一覧(一部抜粋)
● マスターデータ配信
● アセット配信
● プレイヤー管理
● お知らせ管理
● アイテム管理
● ログインボーナス
● お問合せ機能
● 課金
● ログ管理
16
● ランキング
● 掲示板
● 補填機能
● メンテナンス
● Push通知
● プレイヤー検索機能
● ギルド
● アプリのバージョン管理
● CS運用ツール
Sakashoが提供している機能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
主なリリースタイトル
17
Copyright © DeNA Co.,Ltd. All Rights Reserved.
18
マイクロサービスぽい?
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの構成について
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの構成について
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの構成について(Web View)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マイクロサービス?
役割毎に10の独立したAPIコード群がある
○ メリット
■ 他のAPIへの影響を考えずにデプロイできる
■ リソースを細かく調整できる
○ デメリット
■ 運用工数がかかる(gemの更新とか)
■ 結局サービス毎に人を専用にアサインとかしなかったので、全員
全部見る状態
コード量も少ない(API全部ファイル数が700程度、行数3万行)のでこの規模
だと管理工数のほうが大きい
Sakashoの構成について
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マイクロサービスの利点
Sakashoの構成について
● 各サービスは比較的小さくなる
○ コンテナの起動が早くなり、開発のイテレーションが高速になる
● 各サービスのデプロイは独 して える
○ 各サービスを独 して開発していけるので複数のチームが独立して
動く事が出来る
○ 各サービスが独立しているので開発の規模拡大が容易である
● 障害耐性を向上させる
○ 各サービスが完全に独立してるので、影響が他に及ばない
出典 : http://microservices.io/patterns/microservices.html
http://www.slideshare.net/zigorou/microservices-57643957
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マイクロサービスの構成で必要なこと
Sakashoの構成について
● 独立性の確保
○ 開発、デプロイの独立
○ 各サービスは夫々独立したデータベースを持っている
● 各サービスのインターフェース
○ HTTP/RESTのような同期的なプロトコル
○ AMQPのような非同期的なプロトコル
出典 : http://microservices.io/patterns/microservices.html
http://www.slideshare.net/zigorou/microservices-57643957
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの構成を考える上で
Sakashoの構成について
■ Sakashoはプラットフォームなので、サービスが落ちることは避けたい。
● 障害の影響を最小限に押さえ込みたい
○ workerの枯渇等で一気にサービスダウンになるのを防ぐ
■ 仕様が固まったサービスには極力触らない
● 仕様が固まりリリースされたサービスには手をつけたくない
○ QAもしない(影響範囲に加えない)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Sakashoの構成について
Copyright © DeNA Co.,Ltd. All Rights Reserved.
27
マイクロサービスがよいのでは?
Copyright © DeNA Co.,Ltd. All Rights Reserved.
実際は
マイクロサービスぽい?
● サービス毎にデータは隔離されていない
○ データベースが別れてもいないので、どれか1つのサービスでTMC
がでたら、他のサービスも影響を受ける
● サービス毎にロジックが独立になっていない
○ あるサービスのロジックを他のサービスでもつかえるようなgemが
あったりする(本来は各サービスのインターフェースを通して行うは
ず)
○ 共通のgemのアップデート問題
● チーム体制は一チーム(8人〜10人)で開発・運用が続いていて、そこまで
独立性が高くはない
Copyright © DeNA Co.,Ltd. All Rights Reserved.
実際は
マイクロサービスぽい?
● サービスが別れすぎていて、結局全部触るチームなのに、チームにjoinし
てからのキャッチアップが時間がかかる
● 共通化している部分がわからん
Copyright © DeNA Co.,Ltd. All Rights Reserved.
30
1番の問題は?
Copyright © DeNA Co.,Ltd. All Rights Reserved.
あるサービスのロジックを他のサービスでもつ
かえるようなgemがあったりする
マイクロサービスぽい?
● プレイヤーのデータを保存しながら同時にほげほげしたい
例)
● アチーブメント
○ プレイヤーデータの保存とアチーブメント報酬の受け取りを1トラン
ザクションで実行したい
○ ClaimAchievementPrizesAndSave()
Copyright © DeNA Co.,Ltd. All Rights Reserved.
結果生まれたのが
マイクロサービスぽい?
● sakasho-common_models
Copyright © DeNA Co.,Ltd. All Rights Reserved.
なぜ?
マイクロサービスぽい?
● 一貫性を重要視し、不整合が起きない仕組みにする
○ 同一トランザクションでなんとかできないか?
■ プレイヤーの仮想通貨の管理
■ プレイヤーのデータの保存
■ プレイヤーのアイテム管理
● チートはさせたくない
○ ロジックはサーバーによせる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
現在、コードベース整理中
マイクロサービスぽい?
● 管理
○ サービスが別れてて逆に分かりにくくなっている
○ チーム規模は小さい
● サーバーリソースの状況
○ 省メモリのサービス
● サービスを跨いだコードベース・データの共有
○ 影響範囲が読めなくなりつつある
● データベース
○ ほぼ共通になっている
Copyright © DeNA Co.,Ltd. All Rights Reserved.
現在、コードベース整理中
マイクロサービスぽい?
● 今まででも良かった部分もある
○ workerの枯渇等でとあるサービスが止まっても他のサービスに影響
はない状態(DBが詰まるとだめなのはそのまま)
○ APIのコードがそこまで膨れ上がっておらず、省メモリで運用できて
いる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
現在、コードベース整理中
マイクロサービスぽい?
● 一旦コードを1つにまとめる
○ 管理のしやすさ
■ 共通のモジュールはgemではなく、1つのサービスに取り込む
○ サーバーリソースには余裕がある
■ 1つにまとめても問題ない
○ 独立性
■ そもそも1チームしかないので、独立性を持たせることは今は重
要じゃない(将来的に必要になるかもしれないが)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
スケジュール
マイクロサービスぽい?
● コードベースを整理する前に、仕様が変わっていないことを保証するため
に結合テストを準備
○ 2016年上期に集中的に対応
● 2016年下期
○ コードベースの統合に着手
○ deployの整理も合わせてしている
Copyright © DeNA Co.,Ltd. All Rights Reserved.
SDKのテストと自動化
Copyright © DeNA Co.,Ltd. All Rights Reserved.
39
結合テストの整備
● google製のC++テスティングFW
○ https://github.com/google/googletest
○ ライブラリのインストールはいらず、ccファイルをテストコードと一緒
にビルドすればテストの実行ファイルができる
● Xcode(XCTest)と一緒に動かせる
● テスト結果を出力しやすいこと(JUnit形式)
● Native Sakasho SDKが対象
googletestの採用
39
Copyright © DeNA Co.,Ltd. All Rights Reserved.
結合テストの整備
SDK
✔テスト結果を
通知
テストを実行
Slackプラグインで通知も
GitHub pull request builder plugin
で結果を表示
PP
Junit XML
Copyright © DeNA Co.,Ltd. All Rights Reserved.
41
結合テストの整備
SDKのテスト(iOS)
41
Copyright © DeNA Co.,Ltd. All Rights Reserved.
現在、コードベース整理中
マイクロサービスぽい?
● 自動テストも整備が終わって
○ 粛々とAPIを一緒にしている
■ 全部ロードさせる
■ 最初は統合のみ、改善は後で
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ゲーム開発を支えるプラットフォームSakasho
○ Sakashoがサーバー側の運用を一括で受け持つことで
各ゲームタイトルはゲーム開発に集中できる
マイクロサービスぽい構成からモノリシックな構成に直してる
○ 管理コストの削減が狙い
○ まだ途中なので、後日談も発表したいですね
まとめ
Copyright © DeNA Co.,Ltd. All Rights Reserved.
44
最近の取り組み
44
2017/2/10 FRI 13:00-20:30
SHIBUYA HIKARIE HALL A/B
Copyright © DeNA Co.,Ltd. All Rights Reserved.
45
最近の取り組み
SDKのテスト
45
● SWETチームとの共同作業
参照元 : https://career.dena.jp/job.phtml?job_code=476

マイクロサービスっぽい感じの話

  • 1.
    Copyright © DeNACo.,Ltd. All Rights Reserved. November 22, 2016 Makoto HARUYAMA DeNA Co., Ltd. マイクロサービスっぽい感じの話
  • 2.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 少し自己紹介 2 ● 2008年 DeNA入社(みんなのウェディング) ● 2010年 エンジニアになる ● 2011年 DeNA退社 -> 福岡へ ● 2013年 DeNAに出戻り ● 2016年 ゲーム事業本部 Makoto HARUYAMA ● GitHub https://github.com/SpringMT ● Twitter https://twitter.com/Spring_MT 春山 誠
  • 3.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 3 DeNAのゲーム開発について
  • 4.
    Copyright © DeNACo.,Ltd. All Rights Reserved. DeNA for GAME CREATORS 4参照元 : http://recruit-games.dena.jp/technology/
  • 5.
    Copyright © DeNACo.,Ltd. All Rights Reserved. DeNA for GAME CREATORS 5参照元 : http://recruit-games.dena.jp/technology/
  • 6.
    Copyright © DeNACo.,Ltd. All Rights Reserved. DeNA for GAME CREATORS 6参照元 : http://recruit-games.dena.jp/technology/
  • 7.
    Copyright © DeNACo.,Ltd. All Rights Reserved. DeNA for GAME CREATORS 7参照元 : http://recruit-games.dena.jp/technology/
  • 8.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 今日お話すること 1. Sakashoとは(軽く) 2. マイクロサービスぽい? 3. 最近の取り組み 4. まとめ 8
  • 9.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 9 Sakashoとは
  • 10.
    Copyright © DeNACo.,Ltd. All Rights Reserved. DeNA for GAME CREATORS ネイティブゲーム用プラットフォーム Sakasho
  • 11.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Sakashoとは ネイティブアプリゲーム開発に 必要とされるサーバー機能を 提供するゲームプラットフォーム ゲーム開発におけるサーバーサイドで やるべき事をSakashoが一括で受け持 つことで、各開発チームはクライアント側 の開発に専念できる 運用のしやすさも見据えたゲームの 作り方のルールもある程度強いる 11
  • 12.
    Copyright © DeNACo.,Ltd. All Rights Reserved. ゲーム開発・運用に必要なAPIの提供 ● ユーザー情報API ● マスターデータ配信API ● ログインボーナスAPI など 12 Sakashoが提供している機能 ● 課金API ● アセット配信API ● CS対応のための機能
  • 13.
    Copyright © DeNACo.,Ltd. All Rights Reserved. SDK ● 課金やPush通知など、OSに依存している機能について 簡単に使えるインターフェースの提供 ● Unity、C++のゲームエンジンに対応 13 Sakashoが提供している機能
  • 14.
    Copyright © DeNACo.,Ltd. All Rights Reserved. WebView用インターフェースの提供 ● お知らせの配信 ● 掲示板 ● 利用規約など 14 Sakashoが提供している機能
  • 15.
    Copyright © DeNACo.,Ltd. All Rights Reserved. ゲーム専用サーバーとの連携機能 ● ゲーム専用サーバーからSakashoにアクセスできるWeb APIを提供 ● ゲーム専用サーバーを介してのユーザー情報の取得などに対応 15 Sakashoが提供している機能
  • 16.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Sakashoの機能一覧(一部抜粋) ● マスターデータ配信 ● アセット配信 ● プレイヤー管理 ● お知らせ管理 ● アイテム管理 ● ログインボーナス ● お問合せ機能 ● 課金 ● ログ管理 16 ● ランキング ● 掲示板 ● 補填機能 ● メンテナンス ● Push通知 ● プレイヤー検索機能 ● ギルド ● アプリのバージョン管理 ● CS運用ツール Sakashoが提供している機能
  • 17.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 主なリリースタイトル 17
  • 18.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 18 マイクロサービスぽい?
  • 19.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Sakashoの構成について
  • 20.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Sakashoの構成について
  • 21.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Sakashoの構成について(Web View)
  • 22.
    Copyright © DeNACo.,Ltd. All Rights Reserved. マイクロサービス? 役割毎に10の独立したAPIコード群がある ○ メリット ■ 他のAPIへの影響を考えずにデプロイできる ■ リソースを細かく調整できる ○ デメリット ■ 運用工数がかかる(gemの更新とか) ■ 結局サービス毎に人を専用にアサインとかしなかったので、全員 全部見る状態 コード量も少ない(API全部ファイル数が700程度、行数3万行)のでこの規模 だと管理工数のほうが大きい Sakashoの構成について
  • 23.
    Copyright © DeNACo.,Ltd. All Rights Reserved. マイクロサービスの利点 Sakashoの構成について ● 各サービスは比較的小さくなる ○ コンテナの起動が早くなり、開発のイテレーションが高速になる ● 各サービスのデプロイは独 して える ○ 各サービスを独 して開発していけるので複数のチームが独立して 動く事が出来る ○ 各サービスが独立しているので開発の規模拡大が容易である ● 障害耐性を向上させる ○ 各サービスが完全に独立してるので、影響が他に及ばない 出典 : http://microservices.io/patterns/microservices.html http://www.slideshare.net/zigorou/microservices-57643957
  • 24.
    Copyright © DeNACo.,Ltd. All Rights Reserved. マイクロサービスの構成で必要なこと Sakashoの構成について ● 独立性の確保 ○ 開発、デプロイの独立 ○ 各サービスは夫々独立したデータベースを持っている ● 各サービスのインターフェース ○ HTTP/RESTのような同期的なプロトコル ○ AMQPのような非同期的なプロトコル 出典 : http://microservices.io/patterns/microservices.html http://www.slideshare.net/zigorou/microservices-57643957
  • 25.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Sakashoの構成を考える上で Sakashoの構成について ■ Sakashoはプラットフォームなので、サービスが落ちることは避けたい。 ● 障害の影響を最小限に押さえ込みたい ○ workerの枯渇等で一気にサービスダウンになるのを防ぐ ■ 仕様が固まったサービスには極力触らない ● 仕様が固まりリリースされたサービスには手をつけたくない ○ QAもしない(影響範囲に加えない)
  • 26.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Sakashoの構成について
  • 27.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 27 マイクロサービスがよいのでは?
  • 28.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 実際は マイクロサービスぽい? ● サービス毎にデータは隔離されていない ○ データベースが別れてもいないので、どれか1つのサービスでTMC がでたら、他のサービスも影響を受ける ● サービス毎にロジックが独立になっていない ○ あるサービスのロジックを他のサービスでもつかえるようなgemが あったりする(本来は各サービスのインターフェースを通して行うは ず) ○ 共通のgemのアップデート問題 ● チーム体制は一チーム(8人〜10人)で開発・運用が続いていて、そこまで 独立性が高くはない
  • 29.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 実際は マイクロサービスぽい? ● サービスが別れすぎていて、結局全部触るチームなのに、チームにjoinし てからのキャッチアップが時間がかかる ● 共通化している部分がわからん
  • 30.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 30 1番の問題は?
  • 31.
    Copyright © DeNACo.,Ltd. All Rights Reserved. あるサービスのロジックを他のサービスでもつ かえるようなgemがあったりする マイクロサービスぽい? ● プレイヤーのデータを保存しながら同時にほげほげしたい 例) ● アチーブメント ○ プレイヤーデータの保存とアチーブメント報酬の受け取りを1トラン ザクションで実行したい ○ ClaimAchievementPrizesAndSave()
  • 32.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 結果生まれたのが マイクロサービスぽい? ● sakasho-common_models
  • 33.
    Copyright © DeNACo.,Ltd. All Rights Reserved. なぜ? マイクロサービスぽい? ● 一貫性を重要視し、不整合が起きない仕組みにする ○ 同一トランザクションでなんとかできないか? ■ プレイヤーの仮想通貨の管理 ■ プレイヤーのデータの保存 ■ プレイヤーのアイテム管理 ● チートはさせたくない ○ ロジックはサーバーによせる
  • 34.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 現在、コードベース整理中 マイクロサービスぽい? ● 管理 ○ サービスが別れてて逆に分かりにくくなっている ○ チーム規模は小さい ● サーバーリソースの状況 ○ 省メモリのサービス ● サービスを跨いだコードベース・データの共有 ○ 影響範囲が読めなくなりつつある ● データベース ○ ほぼ共通になっている
  • 35.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 現在、コードベース整理中 マイクロサービスぽい? ● 今まででも良かった部分もある ○ workerの枯渇等でとあるサービスが止まっても他のサービスに影響 はない状態(DBが詰まるとだめなのはそのまま) ○ APIのコードがそこまで膨れ上がっておらず、省メモリで運用できて いる
  • 36.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 現在、コードベース整理中 マイクロサービスぽい? ● 一旦コードを1つにまとめる ○ 管理のしやすさ ■ 共通のモジュールはgemではなく、1つのサービスに取り込む ○ サーバーリソースには余裕がある ■ 1つにまとめても問題ない ○ 独立性 ■ そもそも1チームしかないので、独立性を持たせることは今は重 要じゃない(将来的に必要になるかもしれないが)
  • 37.
    Copyright © DeNACo.,Ltd. All Rights Reserved. スケジュール マイクロサービスぽい? ● コードベースを整理する前に、仕様が変わっていないことを保証するため に結合テストを準備 ○ 2016年上期に集中的に対応 ● 2016年下期 ○ コードベースの統合に着手 ○ deployの整理も合わせてしている
  • 38.
    Copyright © DeNACo.,Ltd. All Rights Reserved. SDKのテストと自動化
  • 39.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 39 結合テストの整備 ● google製のC++テスティングFW ○ https://github.com/google/googletest ○ ライブラリのインストールはいらず、ccファイルをテストコードと一緒 にビルドすればテストの実行ファイルができる ● Xcode(XCTest)と一緒に動かせる ● テスト結果を出力しやすいこと(JUnit形式) ● Native Sakasho SDKが対象 googletestの採用 39
  • 40.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 結合テストの整備 SDK ✔テスト結果を 通知 テストを実行 Slackプラグインで通知も GitHub pull request builder plugin で結果を表示 PP Junit XML
  • 41.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 41 結合テストの整備 SDKのテスト(iOS) 41
  • 42.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 現在、コードベース整理中 マイクロサービスぽい? ● 自動テストも整備が終わって ○ 粛々とAPIを一緒にしている ■ 全部ロードさせる ■ 最初は統合のみ、改善は後で
  • 43.
    Copyright © DeNACo.,Ltd. All Rights Reserved. ゲーム開発を支えるプラットフォームSakasho ○ Sakashoがサーバー側の運用を一括で受け持つことで 各ゲームタイトルはゲーム開発に集中できる マイクロサービスぽい構成からモノリシックな構成に直してる ○ 管理コストの削減が狙い ○ まだ途中なので、後日談も発表したいですね まとめ
  • 44.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 44 最近の取り組み 44 2017/2/10 FRI 13:00-20:30 SHIBUYA HIKARIE HALL A/B
  • 45.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 45 最近の取り組み SDKのテスト 45 ● SWETチームとの共同作業 参照元 : https://career.dena.jp/job.phtml?job_code=476