2020-03-29に投稿

Webアプリフレームワークの比較

目的

大学の課題でWebアプリ製作の課題(環境は自由)が出たのでこれを機会に様々なフレームワークを試してみた。とりあえずRubyOnRails、Django、Flask(もうちょっと増えるかも)を少し触ってみた。これらのフレームワークで文字列を要素として持つモデルを作成し、データベースに保存、データベース内のモデルを閲覧できる、というWebアプリをローカル環境構築からやってみた。IDEは特に使っていない。エディタはVSCodeを使っている。筆者はWindowsで作ったがたぶんMacでも大きな違いはない。
評価基準として

  • 環境構築のやりやすさ
  • コードの書きやすさ
  • 応用性がどれほどある(と予想できる)か
  • 情報の豊富さ

を用いて評価した。それぞれがどのようなフレームワークかは紹介しているサイトがたくさんあるので割愛する。

RubyOnRails

image
具体的な製作過程はこちら
Ruby on Rails でHello, world

  • 環境構築のやりやすさ
    Rubyすらない状態からだと色々インストールがあり、しかも長かった。他に比べると少し面倒。
  • コードの書きやすさ
    scaffoldという魔法のコマンドでモデルの定義とモデルに必要なcontroller、viewのひな形を自動で作成してくれる。目標のアプリはほとんどこのコマンドで終了してしまった。おそらくこうした手間を省いてくれる機能性が人気の理由だろう。しかし、全自動ゆえに勝手に作られたファイルやメソッドが何をしているのかがわからず、改変する際難儀しそうである。筆者はRubyをほとんどやったことがないのでその点でもつらかった。
  • 応用性がどれほどある(と予想できる)か
    様々な企業で使われているトップクラスにメジャーなフレームワークであり、できないことはほとんどないだろう。
  • 情報の豊富さ
    有名フレームワークなのでちょっと検索すればたくさんの情報がでてくるが有名すぎるがゆえに中身のないサイトもたくさんでてきた。Rails Girlsというサイトはわかりやすかった。

Django

image
具体的な製作過程はこちら
DjangoでHello, World

  • 環境構築のやりやすさ
    Pythonをanacondaなどで入れさえすれば、pipの力で環境構築はものすごくやりやすい。しかもすぐ終わる。
  • コードの書きやすさ
    筆者が少なくともRubyよりはPythonに慣れていたというのもあるが、直感的で書きやすかった。プロジェクトのひな形を作るコマンドはあるがRubyOnRailsのscaffoldほどの強力なものはない。しかしそれでも十分だと感じた。
  • 応用性がどれほどある(と予想できる)か
    RubyOnRailsほどではないが有名なフレームワークなのでできないことはほとんどないと思う。またPythonなので複雑な数値計算には向いているだろう。
  • 情報の豊富さ
    検索すると色々な情報がしっかりでてきた。また公式ドキュメントのDjango ドキュメントがすごいわかりやすかった。

Flask

image
具体的な製作過程はこちら
FlaskでHello, world

  • 環境構築のやりやすさ
    Django同様Pythonを入れた後はpipですぐに環境構築ができた。
  • コードの書きやすさ
    RubyOnRails、Djangoとは違いフルスタックフレームワークではないのでディレクトリ構造がシンプルになる。頑張ればコントローラーとモデルを一つのファイルで記述できる。シンプルなので全体像を把握しつつ進めやすい。魔法のコマンドはなく、ひな形は作ってくれない。
  • 応用性がどれほどある(と予想できる)か
    シンプルなのが売りなので大規模だったり複雑な開発は厳しそうである
  • 情報の豊富さ
    検索してもほとんどでてこない。公式ドキュメントとしてFlaskはあるがデータベースをsql直打ちで処理していたりしていてちょっと難しかった。

まとめ

あとPHP系のCakePHPとLaravelも触ってみたいので後ほど追記する。3つ触った感じだと総合的にDjangoが一番やりやすかった。

Originally published at banatech.net
ツイッターでシェア
みんなに共有、忘れないようにメモ

bana118

https://banatech.net でもやっているブログをうつしてみました

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!
ボードとは?

関連記事

コメント