知ってるようでしらない!.NETとは

こんにちは、ITプロパートナーズ編集部です。

弊社では、数多くのエンジニアの方にフリーランス案件を獲得していただいています。

経験とスキルさえあれば、週2日から高収入案件をご紹介できます。

まずは無料登録をして色々な案件をみて見てください。

弊社からおすすめの案件をご紹介することも可能です。



それではここからは、日々の現場でサポートさせていただいている中でのプロの目線で、フリーランスに役立つお話をしてまいります。

今回は、.NETについて見ていきたいと思います!

freelance

.NETとは?

shutterstock_649490179

Windows系のシステム開発では.Netが使用されていることは皆さんご存知だと思いますが、非Windows系エンジニア(Linux上などで開発する方)にとっては具体的に何なのか知らない方も多いかもしれません。

人によっては.NETと言う開発言語のことだと誤解されているケースあるようです。

そこで今回は非Windows系エンジニア向けに.NETとはどのようなものか、何ができるのかをご紹介できればと考えています。

まずは.NETの歴史をおさらいしましょう。マイクロソフトは2000年に「Microsoft .NET」という構想を発表しました。

これは現在の.NETとは多少異なり21世紀のWebの基盤となる技術要素をマイクロソフトが提唱したものです。

具体的には現在のIoTに概念は近く、様々な情報デバイスがインターネットを介してつながる世界をイメージしています。

それを支える技術としての通信仕様(SAOP/XML)を提唱しておりました。そしてこの通信仕様に対応したソフトウェア開発環境として「Visual Studio .NET」が発表され、これが今の.NETの原型となっています。

しかし、XMLをベースにした通信仕様に関してはマイクロソフトの思惑通りには普及することなく、現状もHTTP通信を基本としつつAPI間の通信においてはRESTなどが普及してしまいました。

SOAP通信などは今でも使われることはありますがそれがすべての基盤技術になることはなく、マイクロソフトが考えていたMicrosoft .NETという構想はあやふやになってしまいました。

ただVisual Studio .NETについてはWindows系アプリケーションの開発環境としてそのまま使われ続けましたので、結局はいままでマイクロソフトが提供していたソフトウェア開発環境であるVisual Studioの後継版のような形となっています。

但し、Visual Studio .NETは単なる開発環境というわけではないことは強調しておいた方がよいでしょう。

各種のライブラリや基盤となるフレームワークなどもあわせて提供されており、それらをすべて含めた統合開発環境が.NETなのです。

.NETの構造と要素技術

shutterstock_526821523

先にVisual Studio .NETは単なる開発環境というわけではないと書きましたが、では具体的にどのようなライブラリやフレームワークから構成されているのでしょうか?

この章では.NETを構成する要素についてご説明させていただきます。

.NET FrameWork

現状の.NETを特徴づける最大の要素が.NET FrameWorkです。

あるいはVisual Studioは単なる開発ツールであり、.NET FrameWorkこそが.NETそのものであると言ってもいいかもしれません。

何故ならばアプリを利用するエンドユーザ側でもアプリを動作させるためには.NET FrameWorkをインストールする必要があるためです。(普通はアプリインストール時に勝手にインストールされます)

ともあれ、このフレームワークはWindowsOSと各アプリケーションとの間に挟まるフレームワークとなります。

非Windows系エンジニアにとってはJavaの仮想マシン環境に似たものであると考えればイメージしやすいかもしれません。

この.NET FrameWorkによってハードウェアやOS自体を意識することなく上位アプリケーションの開発に専念することができます。

但し、Javaの仮想マシンのようにLinuxでもWindowsでも動くというものではなく、あくまでWindows系OSでしか動作しない点は注意が必要です。(Linux向けに.NET Coreというものが公開されていますが実務ではほとんど使われていません。)

ASP.NET

ASP.NETは.NET FrameWorkの上で動作するフレームワークでWebアプリケーションを開発するしくみを提供します。

通常、Webのフォームを作るにはHTMLコードを書いて作成する必要があるのですが、この機能を用いればVisualBasicのようにGUIベースでのページ作成が可能です。

それだけだとHTML作成ソフトと変わらないように見えますが、ASP.NETでは当然サーバサイド側の開発もサポートしておりSOAP通信対応や値のバリデーション面などもフレームワーク側で対応することが可能です。

共通言語ランタイム (CLR)

.NET Framework には共通言語ランタイムと呼ばれるランタイム環境が用意されています。

.NETは複数の開発言語に対応しているのですが、言語別に実行用のランタイムがあるわけではなく、共通中間言語 (CIL) と呼ばれるプログラミング言語や環境に依存しない共通の中間言語にいったん翻訳されて、それから共通のランタイムが実行される仕組みです。

そのほかCLRはメモリ管理(ガベージコレクション)、型とアセンブリの管理、スレッド管理、例外処理、セキュリティなどの部分も担当しています。

.NETでできることって?

shutterstock_159551774

.NETの最大の特徴は複数の開発言語に対応しているということでしょう。

Visual Studio 2015ではVisual C++、C#、VisualBasic、Visual F#、Python、Jscriptなどが対応していますし、これら複数言語対応を支えるために先ほど記載した共通言語ランタイムというものが.NET Frameworkでは提供されています。

VisualBasicしか書けない初心者エンジニアでも、ある程度高度なソフトウェアを開発できるようになった点は大きなメリットだと言えるでしょう。

とはいえJavaやPHPのような言語に対応しているわけでなく、あくまでマイクロソフトが推し進める開発言語が共通で利用可能であるという点にはご注意ください。

また今まではWindowsAPIを利用しなければ解決できないケースでも.NET Frameworkを利用することで解決できるケースが多くなったことも魅力の一つです。

これも開発者の敷居を大きく下げることになりつながります。

筆者は若いころにVisualBasicでアプリケーションを開発していたことがあるのですが、WindowsAPIの壁で実現できなかった機能があったことを思い出します。もし当時.NET Frameworkがあれば実現できていたのかもしれません。

とはいえこの考え方には賛否両論あるでしょう。

C++などで開発しているエンジニアからすればシステムをよくわかっていないエセ開発を増やすだけだという意見もあり、それはそれで一理あるのですが、一方でビジネスとして考えた場合は未熟なエンジニアの生産性が高くなるということは大変望ましいことだと言えます。

JAVAとの違いは?

shutterstock_349139363

例外はあるかもしれませんが、Javaはサーバサイドでの利用が多いと思います。

TomcatやJBossなどのJava対応のアプリケーションサーバ上で動的なWebサイトを構築するケースが多いのではないでしょうか。

またAndoridOSで動作する携帯アプリもJAVAで作成されておりサーバサイド以外での利用も行われるようになっています。

JAVAは動作環境を指定しないので様々な環境で動作することができるのが特徴です。

一方で.NETはWindowsOS以外では動作しません(例外あるが実用的ではない)。

また.NET以前のVisualBasicやVisualC++での開発の流れを引き継いでいますので、用途としてはWindowsOS上で動くユーザインターフェース重視のリッチコンテンツを作る際に利用するケースが多いと思います。

また開発コミュニティに関しても大きな違いがあります。

JavaはOracleがライセンスを持っていますが何でもかんでもOracleが提供するというスタンスは取っておらず、Java周辺のアプリケーションや開発環境、フレームワークなどはオープンソースコミュニティから提供されていたり、あるいはサードパーティが商用で販売していたりします。

またJavaはオープンソースと親和性が高い言語なので開発者が活発に活動をしています。

一方で.NETはマイクロソフトが一元的に管理する世界です。もちろん開発者コミュニティは存在しますがJavaとは比べ物になりません。

この関係はLinuxとWindowsOSの関係性とよく似ているところがあるでしょう。

いずれにしても両方の技術には今も需要があります、なのでどちらか一方の技術に特化するのではなく、互いの優れたところを引き出す使い方が必要です。

例えばシステムの根幹部分であるデーターベースとそのロジック処理はサーバサイドに集約してJava+DBで実装、エンドユーザが使用するユーザーインターフェースの部分は.NETで構築し、通信はSOAPを使用するなどのような必要に応じた使い分けが必要なのだと思います。

ここまでお疲れ様です。次に.NETエンジニアの需要について見ていきましょう!

.NETエンジニアに需要はあるの?

shutterstock_646218664

私の古い友人に.NETエンジニアがいるのですが、今でも現役で.NETで開発を続けています。たまに話を聞くと仕事はたくさんあるようなので、.NETエンジニアに需要があることは間違いはありません。

ただし、その仕事の仕方にはかなり文化的な違いがあるように感じています。

私自身もVBの世界からWeb系へ移った経験があり感じたのですが、Web系は作ることを優先して仕様書の作成などはかなり簡易化されるケースが多くあります。

このあたりは、Webとインストールアプリの違いからくるもので、Web系であればバグがあってもすぐ直せばよいという考え方がとれるのです。

一方インストールアプリはユーザにパッチなりを追加でインストールしてもらう必要があるため、より慎重な開発姿勢が求められます。(もちろんネットバンクのようなWEBサイトでは直せばよいという考え方は通用しません。全体の傾向としてお考えください)

またWeb系であれば開発者コミュニティが活発に活動しており、毎年新技術が生まれては廃れています。

いい意味でも悪い意味でも変化が激しいのです。

一方で.NETは技術面ではマイクロソフト次第です。いい意味で言えば安定しているので技術自体よりも与えられた技術を使ってどのようにモノを作るのかという側面が強いように感じています。

エンジニア・プログラマの新しい働き方を模索してみませんか?今より年収がグッと上がる働き方をご提示できるかもしれません!弊社(ITプロパートナーズでは,週2日からこなせる仕事を紹介しております。まずはこちらより、弊社のサービスにご登録後、お仕事の詳細をごらんください!

以下の記事も合わせてご覧ください!

【週2〜3から始める!】フリーランスエンジニアの新しい働き方。

【エンジニア必読!】弊社ITプロパートナーズは、なぜ週2日からの案件紹介が可能なの?

まとめ

shutterstock_279711647

いかがでしたでしょうか?今回は.NETに関してご紹介させていただきました。

WEB系のエンジニアにとっては.NETは何かよくわからないものという方もいたかもしれませんが、この記事でその謎が解消されていれば幸いです。

また今回感じたのですが、WEB系エンジニアでも.NETを使えると、エンジニアとしての市場価値が高まるのではないと思います。

本文でも述べましたが両方の技術に対して需要があり、システムの構築ではそれぞれの特性を生かした使い分けが求められているのです。

なので両方の開発経験をアピールすることで高い報酬につながる可能性が高まりそうです。無償版のVisualStudioもあるようなので、興味があれば.NETをインストールして何か作ることから初めてみてはいかがでしょうか。

 

▼フリーランスノウハウについては下記にまとめています。
フリーランスの手引書【フリーランス支援のプロがまとめました】

bn04

もし、今あなたが

・フリーランスになるか悩んでる
・自分に合った案件があるのか不安
・そもそも何から始めればいいのか分からない

などお困りであれば、ぜひ弊社ITプロパートナーズのサポート内容を確認してみてください!

登録後、専属エージェントに無料相談もできますよ!

※週2日 / 30万〜のフリーランス案件を紹介中です
※ご経験やご希望によっては案件を紹介できない場合がございますのでご了承ください。


よく見られてる関連案件

b80c977483d024c14549510e194361fe 2_anken 3_anken
The following two tabs change content below.
株式会社ITプロパートナーズ

株式会社ITプロパートナーズ

「IT起業家・フリーランスの自立を支える」というビジョンの元、「週2日からの業務委託案件を紹介する、ITプロパートナーズ」を運営。 ■BestVenture100に創業初年度で選出 ■取材記事:自立する覚悟が、働き方を変える
株式会社ITプロパートナーズ

最新記事 by 株式会社ITプロパートナーズ (全て見る)

freelance