見出し画像

第2セメスターでVisual C#を使ったウェブ開発をした所感

第2セメスターが終わった(本当はまだ試験週間で終わっていないけど試験は終わってるので実質このセメスター終了).ウェブ開発の授業ではASP.NET Web Formsを土台にあれこれやらされた感じで以前から緩く興味を持っていたWindowsを土台にしたウェブ開発についてある程度理解ができたと思う.このTL;DRはこのセメスターで感じたASP.NETを土台としたウェブ開発についての所感を書いてみようと思う.なんか似たようなTL;DRをしたような気がしないでもないけど気にしない(震

(ヘッダー画像はMicrosoftのWikiより)

ASP.NETで何をやったか

繰り返しになるが授業ではASP.NET Web Formsを習った.そこからの延長線上でASP.NET MVCを経由して最終的にASP.NET Core MVCとEntity Framework Coreを触った(以後面倒くさくなったらASP.NETは省いて書く).

(画像はMicrosoft Docsより)

まずWeb Formsを使った.これは2012年で実質的な新仕様の開発止まっている(セキュリティ修正とかはあるのかな?)ものという認識でWindowsデスクトップ開発を経験した人がウェブ開発をするという前提では非常に優れたフレームワークや開発環境だと感じた.HTTP何それとかあまり考えずに開発できるというのは本当にすごい!!でもわかった.もうそれ以上の情報私はお腹いっぱい.って正直思った.

(画像はMicrosoft Docsより)

次にMVC 5(6?)とEntity Frameworkを使った.授業で要求されたのはWeb Formsだけでそれ以降のものは興味本位で使ってみた.正直すぐに使うのをやめた.理由は2015年位で実質的な新仕様の開発止まっているようだからだ.しかしWeb FormsやCore MVCと比較し,実用性ではこれが一番マシらしいので悩んだ.が比較的すぐ使うのをやめてしまった.

(画像はMicrosoft Docsより)

最後にCore MVC 2.1とEntity Framework 2.1(面倒なので以後EF Core)を使った.2018年位に最新版が出たものとどこかに書いていた気がする.ちょっとだけワクワクしながら頑張った.しかしやればやるほど自分の現時点で実現できる開発スピードの限界がすぐに見えてしまった.簡単にいうと自分がPHPで開発をするよりこれらを使う方が10倍位速度が落ちるような感覚だった.その原因は大雑把に上げるとこういうものだ.

1. Linq
2. フレームワークの内部動作ログが取れない
3. コンパイル
4. Visual Studio (Visual Studio Enterprise 2017を使っていた)

しかしどれも慣れの問題の可能性,知識不足の可能性は否めないし4.は代替がすぐに入手できるはず…だと思うけどこのセメスター内ではどれも解決はできなかった.

1. Linq

(画像はMicrosoft Docsより)

LinqはEF Coreを使う上でSQLに相当する記述法だ.SQLと毛色はちょっと違うけどそれなりに読める.EF CoreはいわゆるORM.

Linqを使う上で調べてみると困っている人かかなりいそうだったけど,最も面倒くさいと思ったのは動的な条件を生成すること.例えばマスター管理画面があっていくつかの項目の設定次第で表示内容が変わる.みたいな基礎中の基礎を実装するだけでも投げ出したくなる感じだった.

2. フレームワークの内部動作ログが取れない

例外が出た時にバックトレースはとれるんだけど「なぜこの例外が出るのか」みたいなことを調べるのが難しかった.PHPだとフレームワークやシステムが吐くログ,例外やバックトレースからフレームワークの中を見て理由を明確に調べられたんだけどそういうのが全然できなかった.

3. コンパイル

何が面倒くさいかって「修正⇒確認」をしたいとき「修正⇒コンパイル⇒確認」が必要だったこと.PHPだとこの表現でいう次のフェーズに行く際に「何かを待たないといけない」ということがなかったので「保存してF5」で確認をはじめられる.何かを待つ必要がないわけだ.しかしVisual C#のコンパイルが終わったことを何らかの手段で確認してからF5をする必要があることが強烈にストレスだった.しかもコンパイルも10秒位かかる場合がある.それコンパイルしなくていいなら場合によっては2回位修正&F5を試せる.

4. Visual Studio

(画像はMicrosoft Docsより)

簡単にいうと複数のファイルを行ったり来たりして編集するのが非常に面倒くさかった.

a. MDI的なので大きく画面を占有する
b. [Ctrl][Tab]でのタブの遷移が標準と異なる.[Ctrl][F4]でタブを閉じる順番が違う
c. 目的のファイルを開くためにしっかり目視してツリーを開閉をして間違えずにダブルクリックしないといけない
e. 実行するとSolution Explorerが隠れる

a. はテキスト編集タブを動かして別ウィンドウにする.というブラウザーのようなことはできるん.しかし他のアプリ(例えばブラウザー)と並行して使おうとするとVisual Studioを全面にした際に全ウィンドウが前に出てくるのが強烈にストレスだった.

b. は通常[Ctrl][Tab]は左から右に移動,[Shift]を混ぜると逆方向.というのがWindows流儀だったはずだ(VS CodeもそうではないしWindows 10以降今までのWindowsではありえない作法が相当増えたので流儀って何それおいしいのというのはある).しかしVisual Studio 2017はそうではない.2つ位のファイルを比較しながら修正をするならいいんだけど4つ位になると肌感覚が全然合わないので何度も迷子になった.

c. はIDEだとある程度仕方がないのかもしれない.普段LinuxのCUIでBashの履歴などを使って必要なファイルを選んで編集するようなやり方をしていると「あ,あのファイルを見たい」みたいなのは100ファイルを超えるプロジェクトでも大体5秒もあれば十分見つけられる.しかしVisual Studioだとそうはいかない.タブの開閉具合で目的のファイルへの距離も変わるのでしっかり目で表示を追いかけて頑張ってクリックして開く必要がある.MVCで例えばCRUD的な画面を全体的に見ようとするとコントローラー,モデル,ビューを開こうとしたとき,ファイルを選ぶ順番が悪いと下手したら30秒位かかる.非常にこれがストレスだった.CUIなら頭に浮かんだら[Ctrl][R]で履歴を探して選ぶか "Vi[Tab][Us[Tab]Cre[Tab]"など~3秒もあれば大体ファイルが見つかり全部で10秒もあれば見つかるところをだ.

e. もVisual Studioの問題.[F5]でランタイムを実行すると実行用の表示に切り替わる.これをもってSolution Explorer(プロジェクトで必要なファイル軍をツリー表示しているもの)が小さな縦型タブに切り替わる.ただでさえファイルを探すのが面倒なのにまずこの小さなタブをクリックするところから始まる.そして何かあるたびに閉じてしまうそれ.

ASP.NETとこれからどうやって付き合うのか,もう付き合いをやめるのか

書いてみて思ったけど半分くらいはVisual Studioがつらかったんだな…でもほとんどはVisual Studio 2019になっても劇的に変わるってことはなさそうな気はする…アクセラレーターキーは相当探して頑張って覚えたんだけど,実は隠されたショートカットが沢山あってそれを覚えるだけで強烈に環境改善されるんだろうか…

前述のとおり,普段は(VirtualBox上の)Linuxサーバー上で各種コマンドをやりくりして開発をしている.Windows上でもCygwinをまだCygnusが開発していたころから現役で愛用している.もう20年近くその状況.そういうのを合わせて現時点では肌感覚で私の場合はPHPで開発するよりASP.NET Core MVC w/ Entity Framework Coreでの開発は進行が10倍位時間がかかる感じだった.

例えばVS Codeを使うようにしたりASP.NET Coreベースにして開発環境をLinux上にすべて移せばVisual Studioで苦労したある程度は改善される可能性はある.また,現在と同様の環境だとしてもこれからさらに半年位仕事で集中してやれば10倍程度時間がかかるところが2~3倍位時間がかかる程度には圧縮できそうな可能性は感じた.

(Cygwinはもう30年近く使っている.超余談だけど日本のDreamcast SDKのnmake環境は私が開発したがもともとはCygnus CygwinのGNU Makeで動くようにしていた.のをWnidows NT環境のnmakeに劣化移植し「Windows 95の人が困るんで」といわれてcommand.com上のnmakeで動くようにしたものがあれ)

ニュージーランドとMicrosoft

ニュージーランドで働くうえでMicrosoft環境での開発能力があるのは非常に有利だと思う(Microsoft環境の仕事多いので)のでそちらを頑張って伸ばすか,あるいはきれいさっぱりもう辞めてしまい今までの能力を高める方向に手を伸ばすか…今後どの道を目指し歩むか考えながら過ごすかを非常に悩む.


この記事が気に入ったらサポートをしてみませんか?