新卒1年目から新規プロダクトのサーバーサイド開発を任され、様々な技術書を読んだり社内外のエンジニアに相談しながら開発を進めていった結果学ぶことが色々ありました。この勉強会では、そうした経験から私がバックエンド開発の際に考えていることや大事だと思っていることについてお話します。
Real World HTTPでも紹介したネタですが、お仕事で受けている技術コンサル中に質問をいただいた時に、微妙に本で紹介した内容では少し足りなかったので、改めて整理のためにブログ記事にしてみました。次回、本が改訂されることがあればこのブログエントリーの内容も入れて加筆したいと思います。 Real World HTTPだとGoを使っていましたが、フロントとサーバーを同時にいじるので、本エントリーではNext.jsをサンプルに使います。Next.jsでプロジェクトを作って(npx create-next-app@latest –ts)、適当なプロジェクト名を入れてアプリケーションの雛形を作っておいてください。 Next.jsでは、1つのスクリプトファイルを作成すると、それがサーバーAPI(/pages/api以下)と、フロントの画面(/pages/以下のapi以外)になります。Next.j
概要 自宅サーバのセキュリティチェックをして見た。 脆弱性診断ツール nikto niktoは、Web アプリケーションセキュリティスキャナー。 $ sudo apt install nikto -y $ nikto -h localhost - Nikto v2.1.5 --------------------------------------------------------------------------- + Target IP: 127.0.0.1 + Target Hostname: localhost + Target Port: 80 + Start Time: 2019-08-23 22:26:00 (GMT9) ---------------------------------------------------------------------------
これは、とある「エーペックス」のプロプレイヤーのネットワーク経路(レイテンシーを表示しています)です。彼のインターネットモデムから、私たちのサーバーへと到達しています。インターネット接続の本当の状態を判断するため、私たちは何度も調査を行います。最善の状態であれば、彼は31msのレイテンシーでゲームを楽しめていることが見て取れますね。ですが最悪の場合だと、522ms付近です。つまりこの場合だと、接続に500msもの振れ幅があるため、ゲームの遊び心地はかなり悪いということです。彼のローカルISPネットワークの接続は不安定ですが、平均を見てみると非常に稀なケースであることがわかります(平均が31mで、最低値が264ms。たまたま起きたのでしょう)。しかしその後、ローカルのISPとISP1の間でレイテンシーが急増しています。これはプレイヤーとゲームサーバーの間のノードの一つです。この二つの間でパケ
ネットワークゲーム作りたいけど何使えばいいの?という話。 歴史と現状 古代:Legacy network system 中世:UNet 現代:暗黒期 未来:Connected games つまり今は歴史の中間点であり、コレといったモノが存在しない。暗黒。 UNet 死亡確認!*1 Photon 現状選択一番手になるミドルウェア。Photon Cloud と呼ばれるクラウドにみんなで接続しにいく。幻走スカイドリフトでも採用。 メリット スクリプトの書き方が UNet と近く導入コストが安め。 基本的なマッチングのやり方など、サンプルが充実している。ドキュメントも日本語。 まあまあ枯れてるしまあまあ安定している。 デメリット ちょっと高い。 プラン次第で解消しない秒間通信量制限がある。対戦ゲームなら8人くらいが限界。 中国とサーバが分かれているし、中国サーバの値段が何故か日本の五倍する。 割と
はじめに 現在進行形でC#のみを使って個人でソシャゲ作りを試しているyoship1639です。 本記事はQiita夏祭り2020「〇〇(言語)のみを使って、今△△(アプリ)を作るとしたら」のテーマに沿った内容となっています。 近年のソーシャルゲーム界隈は多様化が進んでクライアントサイドだけではなくサーバーサイドもあらゆる言語やフレームワークが試みられていますが、クライアントもサーバーも統一の言語で構成されているのはほとんどないかと思われます。言語にはその言語の得意分野があると思うので。 しかし、今まさに私が開発中の環境が好きな言語で開発しやすいという理由でクライアントもサーバーもC#で構成した作りになっているので、どのような構成でどうすれば最低限のソシャゲの基盤が作れるかを、解説が長くなり過ぎないようにまとめることが出来ればと思います。 三部構成で、クライアント実装、サーバー実装、AWS
みなさんTypeScriptでサーバアプリケーション(Node.js)のロジックを書く時に、異常系の表現をどのようにされていますでしょうか?ここでいう異常系とは、仕様上想定される異常のことです。準正常系と言ったりもするかと思います。 私はJavaScriptの延長でTypeScriptをはじめたので、最初は null や undefined を返したり throw を用いるやり方をしていましたが、次第にTypeScriptが持つ型を生かし、できるだけ型安全に異常系を表現したいと考えるようになりました。そして試行錯誤した結果、いい感じの落とし所に落ち着いたので、その内容についてお伝えしたいと思います。 また記事の後半では、異常系の型を実装する中でハマった点についてもお伝えしたいと思います。 TypeScriptの異常系表現について 1. nullやundefinedを返す 冒頭でも述べたよう
2020年2月13日、『神姫PROJECT』などソーシャルゲームの企画・開発を手がける株式会社テクロスが主催するイベント「TECH x GAME COLLEGE」が開催されました。第32回となる今回のテーマは「ゼロからリアルタイムサーバーを作るまで」。ソーシャルゲームのリアルタイム性を実現する「リアルタイムサーバー」の仕組みと作り方について、株式会社gumiの清水佑吾氏が解説します。講演資料はこちら ゼロからリアルタイムサーバーを作るまで 清水佑吾氏(以下、清水):本日はお招きいただきありがとうございます。株式会社gumiの清水と申します。よろしくお願いします。今日は「ゼロからリアルタイムサーバーを作るまで」ということで発表します。 まずは会社の説明をさせてください。私は株式会社gumiというところで働いております。 2007年にできた会社で、主にモバイルゲームを作ったり、VR・AR
2019年7月6日、株式会社サイバーエージェントが主催するイベント「Battle Conference U30」が開催されました。30歳以下のエンジニアによる30歳以下のエンジニアのための技術カンファレンスである本イベントには、さまざまな領域で活躍する若手が登壇。企業の枠を超えて、自身の技術・事業・キャリアに関する知見を発表しました。「モンスターストライクのリアルタイム通信を支える技術 」に登壇したのは、株式会社ミクシィ・神谷元太氏。登壇資料はこちら モンストの大まかな構成と「STUN/TURN」 神谷元太氏:それでは「モンスターストライクのリアルタイム通信を支える技術」というタイトルで発表させていただきます。よろしくお願いします。 (会場拍手) まず最初に軽く自己紹介をさせていただきたいと思います。2018年に株式会社ミクシィに新卒入社をしました。開発本部CTO室SREグループの神谷と言
「ロマンシング サガ リ・ユニバース」( ㈱スクウェア・エニックスより配信)は、Elixir でサーバーを開発しました。アカツキとして Elixir でゲームをリリースするのは初めてでしたが、ETS を用いたオンメモリデータや、Dialyzer による型チェック、加えて Erlang VM の高い並列性…
とあるスマートフォン向けMMORPGのプロジェクトで、アプリケーションサーバをほぼすべてGKE(Google Kubernetes Engine)に乗っけて動かしていました。 このゲームは、モバイル向けながら、複数プレイヤ間でそこそこリアルタイム性の高い同時プレイができるものでした。同じフィールドを誰かが歩けば、自分が見ている画面でもほぼ同時にそいつが歩いて横切っていく、同じ敵と皆で一緒に戦えば、誰かが繰り出した攻撃が参加者全員の画面に即同期される、もちろんチャットもできる、そんな具合です。今ではさほど珍しくないのかもしれませんが、PCのオンラインゲームのような機能を搭載した、リアルタイム性の高いモバイルゲームでした。 さて、こうなってくると、オーソドックスなWebサーバのような、HTTP/1でリクエスト/リプライを捌く、というサーバだけでは要件を満たすことができません。 複数プレイヤ間で
先月投稿した2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャを学ぶ道のりと代表的な実装モデルの概要を紹介しました。 今回は、前回同様、主に新卒Webエンジニア向けに、Webアプリケーションサーバとデータベースサーバ間の接続管理モデルと運用事情について紹介します。 データベース接続の永続化やコネクションプーリングとは何なのか、なぜ必要なのかといったことが主な話題です。 背景 データベース接続の永続化とはなにか データベース接続のオーバヘッド データベース接続の永続化手法 コネクションプーリングとはなにか コネクションプーリング: ドライバ型 コネクションプーリング: プロキシ型 コネクションプーリング全体について PostgreSQLとMySQL 参考資料 まとめ 背景 2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャの話とWebアプリケーショ
2023年03月31日追記:この記事を基に、@sadnessOjisanさんより、コードレベルにより踏み込んだ、かつ、グリーンスレッドベースの新しいWebサーバアーキテクチャも含めて整理された記事 Webサーバーアーキテクチャ進化論2023 | blog.ojisan.io が公開されました。 主に新卒のWebエンジニア向けに、古典的なWebサーバアーキテクチャを学ぶ道のりと代表的な実装モデルの概要を紹介します。 この辺りの話題がWeb界隈で流行っていたのは数年以上前というイメージですが、Webサービスは相変わらずWebサーバの上で動いているので、流行り廃り関係なく学ぶべき内容だと思っています。 また、HTTP/2がいよいよRFC化し、既にh2oやtrusterdなどのHTTP/2のサーバ実装があり、今後Webサーバアーキテクチャを再訪することが増えるような気がしています。 ところが、We
C++のWEBフレームワークoat++を使って、REST風のAPIサーバーを試してみました。外部ライブラリの依存関係がなく手軽に試すことができました。 はじめに 福岡のyoshihitohです。先日 GitHubのTrending でC++のWebアプリケーションフレームワークの oat++ が紹介されていました。C++のフレームワークは珍しいなーと思い、どんな感じか試してみました。 oatpp-examples のリポジトリで色んなサンプルが紹介されています。今回は crud を参考にREST風のAPIサーバーを作ってみます。 検証環境 macOS: 10.13.6 Command Line Tools for Xcode: 10.0.0.0.1.1535735448 Premake: 5.0 alpha 13 CMake: 3.9.0 oat++? 特徴 公式サイトによると以下の特徴が
本講演で登壇したのは、株式会社ポケラボの覚張泰幸氏。覚張氏は2013年の入社から、エンジニアとして『戦乱の侍キングダム』や未リリースの新規アクションRPGなどに参画。今回の公演で扱うタイトルの『SINoALICE ―シノアリス―』(以下、『シノアリス』)にも、エンジニアリーダーとして携わっているという。 覚張氏はまず、大きな話題ともなった『シノアリス』リリース当時に発生した連続メンテナンスについて、対応に当たった当事者として説明を行った。 なお、連続メンテナンスの概要はつぎの通りである。『シノアリス』はリリース後間もなく緊急メンテナンスを開始。翌日には一時的にメンテナンスから脱するも、数時間後には再度メンテナンスに入るという状態が1週間も近く続いていた。 覚張氏はこうした当時の様子をより具体的に紹介するため、メンテナンスが行われたスケジュール表を公開。その内容はというと、ほとんどがメンテナ
リアルタイム将棋「ぬこしょうぎ」をリリース 先日こんなアプリをリリースさせて頂きました。 ぬこしょうぎ - ヤルキマントッキーズ株式会社 将棋をモチーフにコマの動きは将棋そのままで、将棋からターン制をバッサリと取り除いたゲームです。 ルールはシンプルなので将棋を知らない方でも楽しめる仕様になっています。 (不思議なことにターン制を取り除いてもやっぱり将棋を知っている人が若干有利になるようです!) 通信をどのような構成で、何を使ってやっているか ◆サーバサイド(コネクションサーバ) クライアントからの WebSocket 接続を受け付けるサーバ。 知人が作成した nginx-luajit-websocket-pubsuber を利用して WebSocket 接続を受け付けている。 github.com 簡単に説明すると、nginx で接続を受け付けて WebSocket コネクションを維持し
はじめに Webサーバをセキュアに保つ為、個人的に行っている設定をざっくりまとめてみました。 設定内容はApache 2.4での運用を想定していますので、他のHTTPdをお使いの方は適宜読み替えてください。 各設定項目は以下のオンラインテストサイトでA+相当を取ることを目指しています。 設定ファイル生成 Mozilla SSL Configuration Generator オンラインテスト Mozilla Observatory Qualys SSL Server Test 前提条件 以下で設定する項目は特にHTTPS接続や攻撃防止に関するものになります。 HTTPdそのものに関する基本設定については別記事をご参照ください。 SSLProtocol 危殆化した古いプロトコルを有効にしている場合、古いプロトコルを標的としたダウングレード攻撃等を受ける可能性がある為、新しいプロトコルのみを有
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く