tekitoumemo’s diary

C#、.NET系の技術ブログを書いています

【C# + ASP.NET MVC】HTMLヘルパーのメリット、デメリット

久しぶりに技術ネタ。

HTMLヘルパーは非常に便利でスマートに書けるのですが、実際に運用していてデメリットも多いので、そこらを書いていきます。

HTMLヘルパーとは?

ASP.NET MVCのフォームレンダリングです。簡単に言うと冗長になっちゃうビューに記述するフォームロジックを簡単にかけまっせ!というやつです。

メリット

簡潔にプログラムっぽく書ける。テストを書ける。独自ヘルパーを作れる。書き方例を以下に記載する。

// リスト作成
model.SelectListItem = model.Select(m => new SelectListItem
 {
    Text = m.Name,
    Value = m.Id.ToString()
 });
// View側 model.Idと一致した行がデフォルト値となる
@Html.DropDownListFor(model => Model.Id, Model.SelectListItem, "選択してください")

model.SelectListItemを生成してView側にレンダリングしたいモデルをラムダで指定するとselect、optionタグを生成してくれるから簡潔に書ける。最高。

デメリット

デザイナーとのやりとりが難しい。HTMLヘルパーの記述方法はデザイナーさんは知らないので「触らぬ神に祟りなし」ばりに弄ってくれない。

  @Html.TextBoxFor(model => model.name, new { size = 100, maxlength = 255})

上記の例でmaxlengthを300にしたいときに依頼される。クラス指定するとき依頼される。この程度はほんと小さなことなんですが、チマチマ依頼されると結構な工数になる。デザイナーの手も止まってしまうし、非常に良くないです。bootstrapを使うとき、HTMLヘルパーに直すのがめんどくさい!

まとめ

HTMLヘルパーは非常に良く、僕も大好きなのですが、運用していく上で工数が掛かったりスピード感が思うように出なかったりなど本末転倒になりかねないので、デザイナーとやっていくならあまりオススメは出来ないです。ただし、経験者や暇なデザイナー(学習に時間割けれる)がいる現場であれば使うべきだと思うので、そこは臨機応変に対応していければと思います。

最後に

Dapperのときも書いたのですが

開発者にとって使いやすい、簡単っていうのは非常に重要だと思います。最近思うのはプログラムが好きでないエンジニアの方が非常に多いということ。使ってもらうことに喜びを感じるエンジニア、仕様を決めて作ってもらうことにやりがいを感じるエンジニアが多く、多少冗長になっても簡単でわかりやすい仕様のライブラリを使うことはチームで開発する上ではかなり重要だと思いました。