C#のDynamicはどんな時に使う?有効な利用方法とは

C#というプログラミング言語は、国内のソフトウェア開発において第3位の人気があるというデータが存在するなど、幅広く利用されています。汎用性の高さ、統合開発環境を利用することで高い生産性が実現できること、Windowsアプリケーションへの親和性の高さ、スマホアプリやゲーム開発向けの環境も用意されるなど、人気と将来性が見込める言語です。このC#において、外部からのパラメタなどを柔軟性を持って扱える型がDynamic型です。本記事ではC#におけるDynamic型の利用について記載します。※注1※注2

この記事を読むと以下3つのことがわかります。

  • C#のプログラミング言語の特性
  • C#のDynamicの性質
  • C#でDynamicを有効に利用する用途

C#はどんなプログラミング言語?

C#はMicrosoft社によって開発されたマルチパラダイムのプログラミング言語です。名前の由来通り、C言語に構文の面で大きく影響を受けており、メジャーなプログラミング言語であるC言語のユーザーには親しみやすい記法となっています。Microsoftの.NetFrameworkの一部ではありますが、その仕様は積極的に公開されており、Microsoftの公開したプログラミング言語の中では非常にオープンな存在です。

C#の特徴

C#の特徴としては以下が挙げられます。

  • 汎用性が高い
  • オブジェクト指向にも対応したマルチパラダイムプログラミング言語
  • Visual Studio等の強力な統合開発環境が利用可能
  • C言語やJavaと構文が類似しており、学習コストが低く抑えられる
  • 強力なライブラリ、API、フレームワークが揃えられており、高い生産性を実現可能

C#で開発できるアプリケーション

C#は汎用性が高く、様々なアプリケーション開発がサポートされています。その例を見ていきましょう。

◆Windowsデスクトップアプリケーション開発

C#はWindowsと同じMicrosoftが開発元です。必然的にWindows環境向けのWindowsAPIのコールがサポートされており、ライブラリも充実しています。またoffice製品との親和性も高く、連携したアプリケーション作成にも最適です。Visual Studioなどを利用することによりGUIを用いたプログラミングにも対応しており、Windowsデスクトップアプリケーションを作成する際の第一候補となるプログラミング言語です。

◆Webアプリケーション開発

C#ではWebアプリケーション構築のためのフレームワークとしてASP.NETや.NET Coreなどが提供されています。Visual Studioを利用したGUIでのプログラミングにも対応しており、生産性の高い開発が可能です。※注3

◆Unityでのゲーム開発

ゲームエンジンUnityを利用することで、スマホ、Windowsやmac向けのPC、コンシューマー向けのゲーム開発が可能です。VR/ARにも対応しており、今後もゲーム開発での需要が見込まれています。そんなUnity向けの開発言語の一つとなっているのがC#です。サポートされている言語はC#とJavascriptのみとなっているため、Unityを利用したゲーム開発ではC#が重要視されています。

◆Xamarinでのスマホ開発

Xamarinというライブラリ、統合開発環境を利用することで、C#でiPhone、android向けのスマホアプリの作成も可能です。その他、Windows、mac向けのアプリにも対応しており、XamarinではC#で書いたソースコードから各プラットフォーム向けの実行ファイルを作ることができます。様々な環境向けのアプリケーションでソースが共有可能となり、クロスプラットフォームを実現することのできる技術です。※注4

Dynamicとは

Dynamicはプログラミングで利用される変数を格納する型の一つです。

プログラムでは変数というデータを格納する枠を用意して、そこに値を入れて利用します。通常は事前に宣言を行い、型を指定してどんな値を格納するかを決めておきます。例えば、整数型、小数型、文字列型などが代表的な型です。型に合わない値を格納しようとすると、プログラム実行時に型の不一致でエラーが発生し、処理が正しく行えません。

しかし、場合によってはプログラムを実行するタイミングまでどのような型の値が変数に入るかわからないことがあります。そこで利用されるのがDynamic型です。Dynamic型の変数には、特別に様々な型の値を格納することができるようになっています。このDynamic型の変数に型の不明な値を格納することで、値を読み込んだり、メソッドと呼ばれる処理を呼び出すことが可能となります。

Dynamicを利用するメリット

Dynamic型を利用するメリットとして、実行するまでどのような値が格納されるかわからないプログラムを作成することができます。

実際には、外部のプログラムと連携する場合、外部のデータを取り込む場合などで、どのような値が格納されるか不明な場合があります。Dynamicを利用しない場合には、外部のプログラムが返し得るだけのパターン、外部データが入ってくるだけのパターンをプログラムとして記述しなければなりません。

Dynamic型を利用することで、どのような型の値が入ってきても動作するプログラムが作成可能となります。

Dynamic型の活用方法

Dynamic型の有効な活用方法の一つにDLR連携があります。DLRとはDynamic Language Runtime、日本語では動的言語ランタイムとなります。動的言語(動的プログラミング言語)とはJavaScript、PHP、Ruby、Pythonなどの事前のコンパイルは不要で、実行時にその評価が行われるプログラミング言語です。スクリプト言語とも呼ばれます。DLRは.NetFramework上で動的言語を動かすことで.NETのプログラムとの相互作用をもたらします。同じ環境上で処理を呼び出せることで、.NETのプログラムから動的言語のプログラムの簡単な呼び出しが可能です。開発者は動的言語の既存プログラムなどのリソースを有効に活用できるようになります。この動的言語のC#プログラムからの呼び出しにおいて、帰ってくる値の型はプログラム実行までは不明です。この受け皿としてDynamic型は活用されます。
この他にもDynamicは、遅延バインド、ダックタイピングなどにも利用可能です。

まとめ

C#はMicrosoftによって作られた汎用的なプログラミング言語です。マルチパラダイムで、Windowsアプリケーション、Webアプリケーション、スマホアプリ、ゲーム開発等の様々な用途に利用されています。Visual Studio、Xamarinなどの統合開発環境、ASP.NET、.NET CoreなどのWebライブラリ、Unityでのサポートなど、高い生産性を実現できるプログラミング言語です。

C#にはDynamic型という柔軟性の高い変数の型が用意されいます。DLR等のどのような型の値が返されるかわからない、外部の動的プログラミング言語の呼び出しなどに利用されます。




新卒エンジニア募集中

株式会社キャパでは21卒、22卒新卒募集をしています。
私たちと一緒に働きませんか?
募集概要について詳しくは


◆参考URL

注1 IPA独立行政法人情報処理推進機構 ソフトウェア開発データ白書2018-2019
https://www.ipa.go.jp/ikc/reports/20181011.html

注2 Microsoft dynamic 型の使用 (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/using-type-dynamic

注3 Microsoft クイック スタート: Visual Studio を使用して初めての ASP.NET Core Web アプリを作成する
https://docs.microsoft.com/ja-jp/visualstudio/ide/quickstart-aspnet-core?view=vs-2019

注4 Microsoft Xamarinとは
https://docs.microsoft.com/ja-jp/xamarin/get-started/what-is-xamarin

注5Microsoft 動的言語ランタイムの概要
https://docs.microsoft.com/ja-jp/dotnet/framework/reflection-and-codedom/dynamic-language-runtime-overview

関連記事一覧