黎明期から使ってきたC#の将来性について考える。キャリアを広げるために意識すること

リリースから18年が経ち、アプリ開発やゲーム開発など幅広いジャンルに対応できるよう進化してきたC#。今回は、Microsoft MVPとして6年観表彰された実績を持つ大田さん(@okazuki)に、C#の将来性や今学ぶ意味についてお話しを伺いました。

C#の特徴と将来性

はじめまして、大田一希(@okazuki)です。普段は外資系のIT企業でサポート系のエンジニアをしています。

C#は、2002年の最初のバージョンが出たときから18年間使い続けています。業務でも使用する一方、プライベートではいくつかのOSSのメンテナンスを担当しています。

▲運営中のブログ 

今回は、私の今までのキャリアをふりかえりつつ、一番好きな言語であるC#についてお話したいと思います。

最新アップデートでより直感的なコーディングが可能に

C#は、バージョン9が2020年の11月に発表されます。この18年間の間に着実に進化を重ねている言語です。GitHubやStack Overflowの言語ランキングでも毎年10位以内をキープし続けています。

C#9.0ではトップレベルステートメントやレコード型などにも対応していて、データを格納するためのイミュータブルな型を定義したり、コンソールアプリなどを書くときにエントリーポイントのクラスとメソッドの定義が省略できるようになって非常にすっきりかけるようになりました。

以下のようなコードを書いてdotnet runと叩くだけでNameプロパティを持ったPerson型を定義して、それを使ってコンソールに文字を表示プログラムが書けます。


using System;

var p = new Person(“Kazuki Ota”);

Console.WriteLine($”Hello, {p.Name}!!”); // Hello, Kazuki Ota!! と出力されます

record Person(string Name); // Name プロパティを持った Person 型

WebアプリケーションでHello worldを返すアプリも20行以下で書けたりします。


using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Hosting;

await Host.ConfigureDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.Configure(app =>
{
app.UseRouting();
app.UseEndpoints(endpoints =>
endpoints.MapGet(“/”,
context => context.Response.WriteAsync(“Hello world”)));
};
})
.Build().RunAsync();

必要なコードが少なくなり、使いこなせば書きたいことを直感的に書けるようになるという点はC#9.0の強化点で個人的に好きなポイントです。

C#は様々な言語の機能を取り込み進化中

その他にも、非同期処理を同期処理と同じように書けるasync / awaitの構文も2012年に追加されていて、この機能は今では多くの言語で取り込まれています。もちろんC#もジェネリクスやラムダ式・型推論・パターンマッチなど他の言語から機能を取り込んで進化していってます。

そういう意味では近い将来において言語面は、どの言語で書いても似たような書き味になっていくのかなとは思ってます。

クライアント・サーバー・ゲームなどあらゆるアプリケーションに対応

C#の特徴の一つに色々な形態のアプリケーションを作ることができるという特徴があります。Webアプリケーションはもちろん、Windows・Android・iOSなどのネイティブアプリケーションやUnityを使うことでゲームやAR・VR・MRなどのXRに対応したアプリケーションも作ることができます。

さらに、最近登場したASP.NET Core Blazorというフレームワークを使うことでSingle Page Applicationも作ることができます。

また、最近主流の.NET Coreや.NET 5においては、dockerイメージ化して動かすことも意識されていて、C#でWebアプリケーションを作るためのASP.NET CoreのベースイメージなどもDocker Hubで公開されています。

昔からある.NET Framework向けのベースイメージもありますが、イメージサイズなどの点から.NET Coreや.NET 5のイメージのほうがKubernatesなどのdockerイメージを動かすプラットフォームには向いているといえます。

今、C#を学ぶ意味

C#は今後もトレンドを取り入れ進化し続ける

やりたい分野に応じて学ぶ言語は選ぶといいと思っているのですが、特にやりたい言語がない人は是非C#も選択肢に入れてもらえたらなと思ってます。最近の多くの言語や製品がそうであるようにC#もGitHub上でOSSで開発されています。

ソースが公開されているだけではなく、新機能の検討や問題点の修正方法などの開発プロセスもすべてGitHub上でオープンに進められています。Microsoftは、このようなオープンなプロセスの上でC#の開発を牽引してドンドン新機能を追加していっています。将来性という観点では今後も長期間にわたってC#は第一線に居続ける言語のポテンシャルを持っていると思います。

OSSに参加して言語開発に携わることも可能

さらに、C#で改善してほしい点やバグの修正などの要望を直接GitHub上で報告して自分の書いたコードやフィードバックした内容がC#コンパイラなどに取り込まれる可能性もあります。

なかなかここまでコミットする人は少ないとは思いますが、最終的に言語を極めると言語の開発にかかわることが出来るところまで道が続いているというのは良い点だと思います。

もちろん、アプリ開発が好きな人は色々なアプリ開発をして、ライブラリ開発が好きな人はライブラリを開発してといったような自分の好きな部分を突き詰めるのが良いと思います。突き詰める先もC#はカバー範囲が広いので色々なものにチャレンジすることが出来る言語です。

C#一つであらゆるアプリケーション開発への理解が深まる

C#は、1つで色々なアプリケーションを作ることが出来るのでやりたいことが出来たときに、新たな言語を学ばなくてもC#でできるという可能性が高いです。

もちろんAndroid・iOSアプリなどのようにOSの提供元が直接提供している言語による開発と比べると情報が少なかったり、環境構築に手間がかかる点は否めませんし、最終的には各プラットフォームの作法を学ばないといけないのですが、手になじんだ言語で取り組めるのは大きなアドバンテージになると思います。

アウトプットの積み重ねが次のキャリア・副業に繋がる

今までのキャリア

私は、新卒から国内のSIerに10年ちょっと勤めていましたが、業務ではJavaをメインに使用していました。ただ、学生のころからC#が好きだったので、前職に勤めている間もC#の技術ブログを継続的に書いていました。

そうしたブログでのアウトプットなどが評価され、Microsoft MVP(当時は自薦式)としての表彰につながります。Microsoft MVPになってからは、登壇・書籍執筆・OSSのライブラリのメンテナンスやサンプルコードのGitHub上での公開といった形で活動の幅を広げていきました。

※Microsoft MVPは日本で200人程度しかいない、名誉な表彰制度です。

結果的に6年連続で表彰を頂き、そうした受賞履歴などがまた評価されたこともあり、現在の会社に転職することができました。

OSSや執筆活動の積み重ねが評価される

自分のキャリアの幅を広げるためは、小さくてもいいから継続的に自分のやれる形でかつ、人の目にふれる形のアウトプットをし続けていくことが大切だと思っています。私の場合は技術ブログを書き続けるということがそれでした。最初は人に見てもらうようなレベルのものは書けなかったので、調べたことを将来の自分が見直すために書いていました。

人から見える形でアウトプットし続けることで、他のエンジニアから色々なフィードバックを頂けたり、その界隈で認知を獲得できたりします。

さらに「この人はこれが出来る人」と周囲に認識してもらうことで、登壇機会や執筆機会や仕事の機会が舞い込んできやすくなります。副業したい、仕事以外でも活躍の場を広げたいという方は、ぜひアウトプットをしましょう!

C#の学習におすすめの書籍・サイト

もし、この記事を読んでC#に興味を持っていただけた人がいましたら、是非以下のサイトや書籍で勉強してみてください。楽しいですよ C#!

Microsoft Learn(Microsoftが公式で公開している学習用サイト)のC#のコース

ほか、おすすめの書籍やサイト

まとめ

色々な言語のいいところを取り込んで進化しているC#は、歴史は長いが古臭い感じはない、というのが印象です。C#を使ってできることも広がり、自在に使えるようになればきっと楽しいはず。C#のコミュニティがもっと盛り上がっていけばいいなと思います。

この記事をシェア

関連記事


副業・フリーランス

プログラミング

インタビュー

デザイン

お金

採用・組織

転職

イベントレポート