デベロップメントオンラインゲーム開発に最適なプログラミング言語は何か?最近のゲーム開発者は、ゲームをより分かりやすく、魅力的なものにすることに注力しています。そのためには、最適なプログラミング言語を選択するという問題が生じます。すべての要件を満足する言語を選ぶのは簡単ではありませんが、JavaScriptのようなリーダに頼ることは可能です。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。2.0のリリースによって、Microsoftは、2016年にリリースした汎用目的、モジュール構造、プラットフォーム不問のオープンソースのプラットフォームの次期メジャーバージョンを手にしました。Frameworkで利用可能なAPIの大部分を持つように設計されています。元々はASP.NETソリューションの次世代版を実現するために開発されましたが、現在ではIoTやクラウド、次世代モバイルソリューションなど、まったく違うシナリオを担う、基盤的な存在となっています。Coreのさらなるメリットと、既存の.NET開発者のみならず、堅牢性、パフォーマンス、経済性を兼ね備えたソリューションを市場に投入する必要のあるすべての技術者にとっての価値を探ります。1.0がベータ版の頃から、長くソフトウェア開発に携わってきました。当時は.NETを使っていて、何かだまされているように思ったのを覚えています。“こんなに簡単で大丈夫なのだろうか?”と私は思いました。Libraryというのは何なんだ?”最初の6ヶ月間は、何か巧妙なトリックがあるに違いない、と思いながら過ごしました。Frameworkで快適にコーディングしています。メモリ割り当てに気を使う必要はありません。スレッドはSystemが面倒を見てくれます。Thread、BackgroundWorker、現在はTaskです。FCLクラスはスレッドセーフか、あるいはそうでないか、事前に定義されています。Webアプリケーションを書きたい?完全なフレームワークがあって、道具立ても整っています。私たちが手作りしなければならなかったものは、ほとんど、.NETがお膳立てしてくれています。その結果、私たち開発者は、ビジネス価値を提供するコードを書くために、ますます長い時間働くことになるのです(何てこった!)。アセンブリ/C/C++のヒップスター連中は非難の声を上げて、凡庸な開発者がハードコアなシステムプログラミングに必要な知識を持たなくなった現状を嘆くかも知れません。私個人としては、不満はありませんが。最初のベータ版リリース以来、.NETは、4つのメジャーバージョンを含む多くのイテレーションをくぐり抜けてきました。Coreは、最も重要なものでもあります。Coreは、真のクロスプラットフォームを目標として、現代的なCLIとビルドシステム、オープンソースライブラリを備えています。これらはほんの一部に過ぎません。Coreの目指すものはさらに先にあって、ソフトウェアの開発やデリバリの方法にまで至っているのです。私は20年以上ソフトウェアを書いているので、ソース管理が“大規模”チームのためのものであった時代も知っています。“自動化”という言葉は、ユーザ向けのビジネスプロセス自動化に関するものを除けば、私たちの用語集にはありませんでした。ソフトウェアの構築やコンパイルは、皮肉なことに、人手で行う仕事だったのです。“ビルドマネージャ”が、自身のコンピュータを使ってバイナリ(そのマシン上では動作する、というのが常でした)を生成していました。実行環境へのソフトウェアのデプロイメントは(多くの場合は今でもそうですが)、共有ドライブやFTP、あるいは手作業によるファイルのコピー/ペーストに頼った、危なっかしく複雑なプロセスでした。開発チームの成果を統合する作業は悲惨なデスマーチとなり、リグレッションに次ぐリグレッションのモグラ叩きゲームでした。ソフトウェアが運用レベルに達したかって?やってみなければ分からないよ!ソフトウェアはあっという間に世界が求める存在になりましたが、TuringやHopperの時代にはまだ、ソフトウェアベースシステムの開発やデプロイ、運用といったプロセスには大きな進歩がありませんでした。そのような中で革命が息吹き、2008年頃に形をなし始めました。それがDevOpsです。ひとつの運動として盛り上がりました。DevOpsは、それ以前に起きたAgileのムーブメントを包含し、おそらくは取って代わる大きなものです。Projectを受け取った時です。数ページを読んだだけで、私は即座に、それまでの自分の人生を一転させるような、運命的な決断をしました。その日のカンファレンスでの計画は投げ出して、その本を貪るように読みました。その本は、多くのことを私に語りかけてくれました。IT業界に短期間でも身を置いた経験があれば、同じような経験があるのではないでしょうか。分かって頂けると思います。その瞬間からDevOpsは、私のキャリアの中心になったのです。DevOpsは一般に、3つの大きな“足”を持つと言われます。文化、プロセス、そしてテクノロジです。この記事では、DevOpsのテクノロジを取り上げています。Coreが現代のDevOpsプラクティスにもたらすテクノロジについてです。CoreはDevOpsの黎明期に生まれました。CoreをDevOps時代のプラットフォームにしようという明確な目標があります。CoreとDevOpsの主要な3つのトピックについて説明します。FrameworkとSDKDevOpsはそれだけで存在しているのではありません。ソフトウェアベースのシステムを作成し提供するテクノロジは、DevOpsプラクティスを支援する場合もあれば、妨げる場合もあります。テクノロジスタックが何であるかに関わらず、DevOpsは追求する価値があります。言うものの、スタックとして何を選択するのかが、DevOpsプラクティスに大きな影響を与えることは事実です。クローズドソースでプロプライエタリなビルドシステムは、DevOpsフレンドリではありません。Coreは完全なオープンソースで、プロジェクトとソリューションの表現に使用されるファイルフォーマットは完全に文書化されています。Node/JavaScript、Ruby、Pythonといった最新の言語やフレームワークは、いくつかの共通的な機能を持って開発されています。コンパクトなオープンソースのフレームワークコマンドラインインターフェイス(CLI)文書化されたオープンビルドシステム主要なオペレーティングシステムをすべてサポートこれらの機能や他の機能は、適用や自動化が容易なことから、DevOpsの時代にポピュラーになったものです。Coreアプリケーションのすべてのビルドプロセスに対する唯一のエントリポイントです。CLIは開発者のワークステーション上で動作し、プラットフォームに依存しないエージェント的な環境を構築します。Pro上で実行しています。Coreの最初のステップは、それをダウンロードすることです。手順に従う場合は、こちらからSDKをダウンロードしてください。サイズは小さく、MBP上で171MBに過ぎません。インストールが終わったら、好みのターミナルウィンドウを開きます(私はWindowsではPowershellをよく使っていますが、MacなのでiTerms2を使用します)。.NET開発の経験をお持ちならば、大規模なフレームワークのインストールには慣れていると思います。Studioを使って作業することにも慣れているでしょう。Coreを初めて使う場合は、よい意味で、ちょっと奇妙に感じるかも知れません。IDEに触れる前に、この171メガバイトを使ってたくさんのことを行います。SDKとのインタラクションを可能にする、新しいCLIコマンドです。ここでの出力は、使用可能なCLIオプションが羅列されるだけです。詳しく見ていきましょう。helpこれはCLIがサポートするすべてのコマンドのリストです。長くはありませんし、その必要もありません。Coreフレームワークで作業する上で必要なすべてのものです。最初のステップはアプリケーションの新規作成です。オプションを確認しましょう。new出力は使用可能なテンプレートのリストです。StudioでFile-New-Projectをクリックした時の一部で、ここではそれをコマンドラインから実行しているだけです。選択可能なテンプレートはたくさんありますが、私はAngularが好きなので、それから始めることにしましょう。dotnet-angular新しいディレクトリdotnet-angularに、新たなAngularプロジェクトが作られます。newを実行する時に、そのディレクトリに移動することを忘れないでください。ないと、カレントディレクトリにプロジェクトが生成されます(私はこれで失敗しました)。Angular開発を行っているのであれば、Nodeはインストール済だと思います。なければ、ダウンロードとインストールを行ってください。Nodeのインストールが必要な場合は、インストール後にターミナルを閉じて開き直します。buildで、アプリケーションを実行せずにコンパイルすることも可能です)。数分かかった後、URLを含むアウトプットがあるはずです。**URLをWebブラウザにコピーして開いてみてください。Coreがバックエンド、Angularがフロントエンドで動作する、簡単なアプリケーションが見えるはずです。ここで一息ついて、このエクスペリエンスがこれまでの.NET開発エクスペリエンスとどう違うのか、説明しましょう。CoreやNodeのインストールが必要であっても!)ほんの数分であったはずです。ここで、いくつかの疑問が浮かぶかもしれません。IDEはどこ?ここまでは必要ありませんでした、そうですよね?当然ですが、このコードを編集したければ、何らかの手段が必要になります。できれば.NETやAngularをある程度理解してくれるツールがよいでしょう。“問題ないさ、”と思うかも知れません。Professionalを立ち上げて使えばいい。Codeをダウンロードするかも知れません。Communityを使うという手もあります。Coreで開発を始めるにあたって、もはや何百ドルも投資する必要はない、ということです。小さく始めて、組織的に拡張すればよいのです。Coreの大きな違いはここにあります。CoreアプリケーションをIISで実行することは可能ですが、必須ではありません。CoreをIISから分離する必要があるのは明白です。Piで実行可能なARMビルドさえあります!)。Anywhere”なアプリケーションのひとつなのです。.NETアプリケーションをIISなしでホストすることは、しばらく前から可能でした。.NET(OWN)では何年も前から、ASP.NETアプリケーションの“セルフホスト”がサポートされていたのです。Katana”と呼ばれるコードとインフラストラクチャです。CoreではKestrelというHTTPSサーバを使用します。Kestrelは高速で高性能な、.NETアプリケーション用のオープンソースHTTPSサーバです。WebサイトとRESTfulサービスに対してHTTPを提供します。Coreアプリケーションを完全に自己完結させます。DevOpsとの関係は?オートメーションはDevOpsの基本的な理念でありプラクティスです。Coreによる可搬性、CLI、オープンソースのビルドシステムは、DevOpsプラクティスには欠かせないものです。重要なのは、それらがビルドやデプロイメントのプロセスの自動化を容易にすることです。このような自動化は、CLIのスクリプティングや、プログラム的にビルドシステムを直接自動化することによって実現されます。Coreの備えるこうした機能は、複雑なビルドプロセスの自動化を可能にするだけでなく、比較的容易なものにしてくれます。ビルドの自動化と継続的インテグレーションが実現するのです。SourceSafeの時代(“そうさDave、君は時代遅れだよ”)には、チームがリポジトリにプッシュしたコードがそこにあって、いつでもコンパイル可能になっていました。“そちら側でもできるのに、なぜわざわざ、自分のシステムでビルドしなければならないのだろう?”そう思ったのは私だけではありませんでした。言え、私がそれを実現した数少ない人のひとりだと主張するつもりはありません。それを主張できるのは、継続的インテグレーション(CI)システムの開発に着手した、勇敢な心の持ち主たちです。CIの目的は、言葉にすれば単純ですが、実現は簡単ではありません。デプロイメント可能なビルドが常に用意されていること。ソフトウェア開発はチームスポーツです。平均的なアジャイル/スクラムのチームには、コード作成に積極的に貢献する開発者が3~5人います。彼らの仕事は、効率上の理由から分割されていますが、作成したコードは組み合わせてビルドし、ひとつのユニットとしてテストしなければなりません。このようなテストは、開発者がインストールする必要のないシステムを使って自動化されるべきです。ビルドとテストは、新しいコードが対象ブランチ(トランクベースの開発であればマスタ)にマージされる度に実行されるのが理想的です。CIシステムは一般的にソース管理システムに組み込まれていて、CIブランチが変更されると新たなビルドが起動されます。Roslynは、直接アクセス可能な充実したAPIを備えた、.オープンソースのNET用コンパイラです。CIシステムの開発者は.、NETのビルドプロセスを自動化するプラグインを開発するために、このコンパイラAPIを使用します。Coreビルドツールは、ビルドプロセスを詳細にコントロールするための機能を提供してくれます。それらを既存のCIシステム機能に適用して拡張することで、考えられるほぼすべてのビルドパイプラインのユースケースをカバーすることができます。ありがたいのは、プラグインを開発するためにCIシステム開発者になる必要がない、ということです。CIシステムのメンテナやベンダは、自分たちのシステムを容易に拡張可能にするために、多大な努力を払っているのです。現在は本当にたくさんのCIシステムがあります。挙げてみましたが、もちろんこれだけではありません。Coreの提供するフレキシビリティは、あらゆるCIシステムとの連携を可能にします。連携の方法は、CLIを使ったスクリプトのような単純なものから、コンパイラAPIを使用するようなプラグインまでさまざまです。現在すでにお気に入りのCIシステムを使っているのでしたら、サンプルプロジェクトで試してみてください。これは先程CLIで作成したものと同じプロジェクトに、少し追加をしたものです。リポジトリにはDockerfileが含まれています。RegistryにプッシュするVSTSビルドパイプラインを、10分で作成することができました。Cloud内でも動作します。文字通り、可能性はほぼ無限です。運用チームの同僚に聞いてみてください。この手のシステムは夜泣きする赤ちゃんのようなもので、常に何らかの手当てをしなければなりません。運用スタッフは困惑する若い親のように、システムがなぜ泣いているのか分からないことが多いのです。システムはなぜ泣くのでしょうか?それはあなたが構ってくれないからです!システムを監視する上で最悪の方法は、監視しないことです。監視をするかしないか、どちらにせよ、障害が発生すればそれを知ることになります。ユーザが激怒して電話してくるか、サービスの利用を完全に止めてしまえば、その時にはもう手遅れです。アプリケーション監視の目的は、顧客あるいはエンドユーザ(事実上の違いはありません)より先に問題を検知することです。多くの企業が、アプリケーション監視は高価過ぎる、あるいは“よくできたシステムには監視は不要”という、経済的に誤った判断をしています。ひとつの障害や変更で大惨事に陥ることがあります。DevOpsプラクティスは、安全と速度のバランスを取ろうというものです。することで企業は、迅速な行動による革新と安全を両立することが可能になります。このバランスは、システムの運用パラメータを注意深く監視することで維持されます。Coreのデザインとアーキテクチャは、アプリケーション監視に適しています。3.x/4.xアプリケーションの内部的な要求/応答動作をカスタマイズすることができます。Coreのこのミドルウェアによる機能拡張には、HTTPモジュールのコンセプトに近いものがありますが、実装は大きく違っていて、ミドルウェアのクラスはコード経由で統合されています。構成もずっと単純で、それらがモディファイアの要求/応答パイプラインチェーンを形成して、リクエストに対して応答しているのです。Coreアプリケーションに監視を行うミドルウェアを注入するのは簡単です。Insightを例に取って説明しましょう。Insightsによる監視を有効にします。Macを使用しているからです。詳細はこちらを参照してください)。Insightsの実装キーを追加します。Startup.csStartup.csはミドルウェアを構成する場所です。Insightsミドルウェアを追加します。Insightsから監視データを収集できるようになります。自分自身で試すことも、appsettings.jsonのサンプルキーを単に自分のキーに置き換えることも可能です。Insightsだけではありません。AppMetricsはオープンソースの監視ライブラリで、Grafanaなどの視覚化ツールと統合して使用します。エンタープライズ機能を備えた有償オプションもベンダから提供されています。これらの監視オプションはいずれも透過性、すなわちランタイム環境(特に運用環境!)におけるアプリケーションの挙動を確認する機能を提供します。この機能は、システムに実施した変更がパフォーマンスを低下させていないことを具体的な数値で検証可能にする、という意味において、DevOpsには不可欠なものです。その上で、迅速な変更が現行機能を棄損しないという確証を得るために、新たな機能を追加していけばよいのです。CoreはDevOpsプラクティスを想定して構想され、開発されたものです。そのCLIとオープンなビルドシステムとライブラリは、およそ考えられるすべての要件に対して、その自動化とソフトウェアデリバリシステムへの適用を可能にします。ビルドの自動化と継続的インテグレーションはCLIスクリプティングだけでなく、希望とあらば、より複雑なプログラム統合で実現することも可能です。オープンソースあるいは有償の企業向けツールによるアプリケーション監視は、システムをブラックボックスからガラス張りへの変えてくれます。Coreは、現行のソフトウェアシステムにとって、実に魅力的なプラットフォームなのです。Swersky氏はサポートエンジニアからソフトウェア開発者、エンタープライズアーキテクトへと、20年以上にわたってITに携わってきました。さまざまな言語に精通するとともに、DevOpsに関するすべてのものに熱意を持っています。DevOps”といったDevOpsに関する著書も持っています。Twitterの@dswerskyで氏の発言を見ることができます。2.0のリリースによって、Microsoftは、2016年にリリースした汎用目的、モジュール構造、プラットフォーム不問のオープンソースのプラットフォームの次期メジャーバージョンを手にしました。Frameworkで利用可能なAPIの大部分を持つように設計されています。元々はASP.NETソリューションの次世代版を実現するために開発されましたが、現在ではIoTやクラウド、次世代モバイルソリューションなど、まったく違うシナリオを担う、基盤的な存在となっています。Coreのさらなるメリットと、既存の.NET開発者のみならず、堅牢性、パフォーマンス、経済性を兼ね備えたソリューションを市場に投入する必要のあるすべての技術者にとっての価値を探ります。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員として、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。