千代田 まどか(ちよだ まどか)さん。
通称「ちょまど」さん。マイクロソフト社員。IT エンジニア兼漫画家として活動中。2017年に行われたデベロッパーズサミットでベストスピーカー賞 総合1位受賞。Twitter(@chomado)Instagram(chomado)ホームページ(千代田まどかのブログ『ちょまど帳』)
*ちょまどさんの発言は個人の見解であり所属する組織の公式見解ではありません。
以前にもインタビューを受けてくれたちょまどさんにプログラミング言語の「C#(シーシャープ)」についてお聞きしました。C# が好きすぎてマイクロソフトに入社を決めたというエピソードもあるちょまどさんに、非エンジニアでも分かるように C# について語っていただきました。
C# は大体なんでもできるプログラミング言語
ーー早速ですが、非エンジニアからすると C# ってどんなことができるのかすら良く分かっていないのですが、C# でどんなことができるのでしょうか?
C# はマイクロソフトがオープンソースで開発しているプログラミング言語で、 OS 開発以外は大体なんでもできます! 逆に C# にできないことをあげるほうが難しいです。
例えば、
・Webアプリ
・スマホアプリ
・Webサイト
・IoT
・ゲーム
などが C# で開発できます。
身近なアプリで何が C# で書かれているかというと、
ゲームエンジン Unity で作られているゲームは C# が使われています。例えば任天堂のスマホアプリ「どうぶつの森 ポケットキャンプ」の権利表記を見たら Unity が使われていることが書いてあったので、これも C# が使われています。スマホ版の「ドラゴンクエストVIII」や、位置ゲーのPokémon GO (ポケGO) も Unity 製 (C#) ですね。
また、Unity 以外では、最近の私は任天堂から発売されている「あつまれ どうぶつの森」廃人なんですけど、任天堂公式スマホアプリ「Nintendo Switch Online」はXamarin(ザマリン)※で作られているので、C# を使っていますね。NHKの紅白アプリも Xamarin 製です。
(解説記事 https://chomado.com/note/tech/xamarin-case-studies/)
※ Xamarin(ザマリン)・・・ C# で、iOS、Androidなど向けのアプリをクロスプラットフォーム開発できるオープンソースのプラットフォーム
ーー大体なんでも作れるということで、C# の良いところは分かったのですが、悪いところはありますか?
正直、私は C# 信者なので、あまり客観的になれず悪いところが浮かびません(笑)。
でも、しいて言うなら、C# はできることが非常に多いので、それぞれ向き不向きがあると思います。特定の場面に最適化された言語と比べると、非効率になる場面もあると思います。また、ネットで調べものをしていて、違う環境での記事(Unity では使えない API など)が引っかかってしまい、自分の環境では使えない機能が出てくることもあったりしますね。
多彩な機能を持っている割には、勉強して習得するのもそんなに難しくないと思います。いろいろなプログラミング言語から良いところ(ラムダ式など)を柔軟に取り入れることもありますし、C# が先導となって他のプログラミング言語に広まっていったような機能もあります(非同期メソッドなど)。いまでも定期的にアップデートをしていますし、クールな言語です。
C# がきっかけでマイクロソフトに入社
ーー非エンジニアでも C 言語というプログラミング言語があるということは知っている方も多いと思うんですけど、C 言語と C# って何が違うんですか?
C 言語を書ける人から見ると読みやすいなと思える程度には、見た目が似た雰囲気の箇所もあります。(if や while などのキーワードや、{} や () などの記号の使い方のルールが似ているという程度のもの)
でも、コードをコピペしてきてそのまま動くようなものではなく、別物です。世代も違う、ポリシー(重要視している点)も違う、得意な分野も違う、色々違います。
例えば、C 言語ではメモリ管理をプログラマが自分でやらねばならず煩雑でしたが、C# にはガベージコレクションという仕組みでメモリ管理の手間から解放してくれる機能があります。
ちなみに、C# の名前の由来ですが、もともと C 言語の進化系として C++ (シープラスプラス)が生まれましたが、さらにその進化系というのを強調するために、もうひとつ “++” を足して “#”、つまり C# になりました。
【編集部記:C 言語と C# 開発者の違い】
C 言語は 1972 年にAT&Tベル研究所のデニス・リッチーさんが主体となって開発しました。VM(バーチャルマシン)や Runtime(プログラムの実行時に参照する共通基盤)なしで動くため、軽くて速いという特徴があります。
C# は、Delphi など他の言語も手掛けたことがあるアンダース・ヘルスバーグが主体となってマイクロソフトで開発した言語で、2002 年に正式リリースされました。現在 GitHub 上でオープンソースで開発されており、現在は 1 年に 1 度という頻度でメジャーアップデートがおこなわれています。
学生時代には独学で C 言語も勉強をしてたんですけど、社会人になって 2 社目でモバイルアプリを開発する仕事をしていました。そこで、C# に出会ったんです。 1 社目ではほとんどプログラミング言語に触れる機会がなかったので、実質社会人になって初めて触れたプログラミング言語が C# なんです。
それで「あ、最高!」ってなりました。なにが最高かというと、それまでは Vim (ヴィム)というテキストエディターを使ってたんですけど、当時はコード補完機能などを入れてなかったんです。
C# は開発環境として「Visual Studio」という最強の IDE(統合開発環境)があるんですけど、それがとても良くて。コード補完などがとても良くできているんです。この出会いがきっかけで「C# 最高!」ってなりました。
マイクロソフトに入社するきっかけも C# で、こんな素晴らしい言語とエコシステムを作っている会社は最高に違いない! と思ったんです。C# が好きだからマイクロソフトに入社した感じです。
エンジニアの皆さんそれぞれに入信しているプログラミング言語があると思うんですけど、私は C# 教に入信しています(笑)。
ーーそれぞれに好きなプログラミング言語があるんですね。これから C# を学びたい人は何から始めたらいいですか?
そうですね、まずはおすすめの記事が 2 つあるので読んでほしいです。
・こちらは同じマイクロソフト社員の大田一希さんが書いている記事です。 (https://qiita.com/okazuki/items/e3a8e23f9ac2a10d8fde)
・こちらはマイクロソフトMVPの岩永さんが書いている記事です。
本で勉強するのもすごくいいんですけど、C# は進化が速くて最近では 1 年ごと(かつてはだいたい 2 年半ごと)にアップデートされるので、最新の情報はインターネットで得たほうがいいと思います。
C#がなかったら、今の私はない
ーー最後に、 C# への愛を語ってもらいたいです。
C# がなかったら、今の私はないです。これは絶対にそうですね。 C# がなかったらマイクロソフトにも入っていないです。あと、C# のおかげでプログラミングで色々なものを作る楽しみを覚えました。
C# で特に好きな機能があるんです。「LINQ(Language-Integrated Query)」っていうんですけど、データのまとまりをすごく良い感じに操作できるんですよ。
新しいことを学ぶきっかけにもなりましたし、交友関係も C# になりました(笑)。
ーーえ、交友関係がC#になるってどういう意味ですか?
類は友を呼ぶというか、同じプロトコルで会話をしたいっていう感じで、C# 好きな人たちと集まるようになりました。友だちも仕事も C# になりましたね(笑)。
あと、大体なんでも C# でやりたがります。例えば、「Google Home」「Amazon Alexa」「LINE Clova」 といったスマートスピーカーのスキル開発があるんですけど、どこの会社も公式 SDK という公式のソフトウェア開発キットが用意してあるんですね。
ただ、公式 SDK に C#がないことも少なくないんですよ。そこをあえて C# で開発するようにしています(笑)。同じ志のコミュニティの方々が SDK の C# ラッパーを開発してくださっていたりするので、それを利用させていただいています。
#スマートスピーカーを遊びたおす会 で
先程 デモをした、
私の 滑舌スキル(「取捨選択」をユーザーが正しく言えないと軽く dis ってくるスキル)
のコードはこちらです!
C# で書きましたhttps://github.com/chomado/KatsuzetsuApp?files=1 …
ちょまどさんが C# で作った「滑舌チェックをしてくれる LINE Clova スキル」についてのツイート
C# で XR も開発できる
ーーすごい C# への愛ですね。「ちょまど C#」で検索したら、「セブンスイーツを選んでくれる HoloLens アプリ「セブンスイーツアシスタント」を作った」(https://chomado.com/programming/c-sharp/seven-sweets-assistant-for-hololens/)という記事が出てきたんですけど、C# でこんなこともできるんですね。
はい、そうなんです。HoloLens(ホロレンズ)っていうのは、マイクロソフトが開発している、頭につけるタイプのホログラフィックコンピュータ(ワイヤレスで単独で動く MR: Mixed Reality デバイス)です。要するに、かぶるとホログラムが見えます。
その HoloLens で動く、このアプリを C# で開発しました。
HoloLens をかぶってセブンスイーツのケーキを見たら、商品名が表示されて、今の気分を伝えるとおすすめのスイーツを教えてくれるんです。
こんな風に C# を使えばなんでもできます!
C# まとめ
塾講師のアルバイト経験もあるというちょまどさんはホワイトボードを使って分かりやすく C# について説明してくれました。最後に、非エンジニアでもわかるように C# についてまとめます。
・スマホアプリからゲーム、IoT、機械学習まで、大体のことはなんでもできちゃうマイクロソフトが開発しているプログラミング言語。
・他のプログラミング言語の良いところを柔軟に取り入れている。
・進化が速く、大体1-2年くらいでアップデートされる。
・オープンソースなので、だれでも開発に参加できます。
さくらのレンタルサーバ
3/10より、Webフォント機能のラインナップに”しまなみ” ”UDデジタル教科書体” ”ヒラギノ丸ゴ”が新たに追加。そのほか人気の書体含めた全33書体が利用可能。
→詳しくはこちら