タナカのプログラミング

プログラミングについて

railsとJavaの比較

f:id:tanagram18:20200224151632j:plain

こんにちは!久しぶりの投稿です!
最近、あまり意味もわからないまま基本情報技術者の資格を取ろうと必死に勉強していて全然コーディング 出来ていません、、
railsをもっと触りたいところですが、最近Javaを触る機会が増えていて今のところのJavaに対する所感を書いておこうと思いパソコンを開けた次第であります。

ではこんな感じで話していきます!

勉強したこと

環境

内容

  • プロジェクトの作成手順
  • セッションを扱ったデータの受け渡し
  • クッキーを扱ったログイン機能の実装
  • 画像ファイルのアップロード機能の実装
  • MVC
  • DBの値を一覧ページに表示

を主に勉強しました。
今回は最後の演習として学習した「DBの値を一覧ページに表示」を自分の中で整理して通信の流れを中心に記述していこうと思います。


DBの値を一覧ページに表示

  1. クライアントのブラウザから一覧ページを見せてくれとリクエストを投げる
  2. コントローラーがリクエストを受け取りDAOにDBさんに値もらってこいと命令する
  3. DAOさんは嫌々頭を下げDBさんから値を受け取る
  4. BeansさんがいやいやこのままだとわかりづらいよDAOさんと言いながら扱いやすい形にデータを変えてくれる
  5. サンキューBeansさんと思いながらViewさんが扱いやすくしてくれたデータを使って一覧ページをクライアントのブラウザにレスポンスとして返す
  6. クライアントのブラウザに一覧ページが表示される

DBさんを昔からいる強面おじさんという設定で大体のデータの流れを説明しました。
これがいわゆるMVCデザインパターンです。
色んな用語が出てきましたがリンクを貼りまくって割愛します。

MVCとは
www.atmarkit.co.jp

sites.google.com


DAOとは
Java DaoとDtoでDBを検索するサンプル | ITSakura


Beansとは
irof.hateblo.jp



まあこんな感じで勉強しましたよと
いや待て待てこれからrailsの比較とか言ってるけど全然railsの時とやってる事と変わんないじゃん、何が違うの?

railsと比較して

Javaを勉強してrailsと同じMVCの流れでアプリケーションを作っていると知り、考え方の大部分は同じなんだと学びました。

しかし考え方は同じでも実装部分に関わることは大分違ってくるのだと感じました。なので、自分の知識は浅いものの間違ってるかもしれませんが、浅いなりに所感を記述していこうと思います。


記述量の違い
ここでは画像のファイルアップ機能を比較していこうと思います。
Javaでのファイルアップ機能の実装

  1. ライブラリのインストール(Commons FileUploadとCommons IO)
  2. コントローラーとなるサーブレットを作成
  3. ビューとなるJSPファイルの作成

railsでのファイルアップ機能の実装

  1. ライブラリであるgemをインストールする
  2. 画像をアップロードする時の設定ファイル、アップローダーを作成する
  3. モデルにカラムを追加し、マウントする(先ほど作成したアップローダーの情報を搭載する)
  4. コントローラーにアップロードされる画像の情報を受け渡しできるようパラメーターを追記
  5. ビューに画像が表示できるようアップローダー用のコードを追記


比較すると
記述量がJavaの方が多い(1.5倍くらい、、多分)のとライブラリの配置が面倒臭い混乱する
良いところはrailsのgemと違ってインストールしたライブラリが見れるところとかですかね


プロジェクトの作成が自由
プロジェクトを作成する時について比較していきます。
Javaのプロジェクトの作成(eclipse)は
新しくプロジェクトを作成

サーバーに追加

パッケージの作成

サーブレット(コントローラー)の作成

DAO、BEANS(モデル)の作成

JSP、HTML、CSS(View)の作成

DBの作成、つなげる

に対してrailsは簡単なものであればターミナルに1つのコマンドを打てばDBの作成、繋げる以外、全てできます。

scaffoldという仕組みによって、実際に動くテンプレートを提供して、開発者のコーディング量の軽減を図っています。
ただ、いらないファイルも作るし、記述が要らないものも書かれるので個人開発向けだと思います。
実際に、会社のプロジェクトで使ったことあるの一回しかないし、、、


最初のデバックに手こずる
デバックに関する比較です。
これは初学者あるあるかもしれませんが、railsのエラーは特にエラー時の記述をしてなくてもどこでエラーが起きてるか画面で教えてくれることに対して、

JavaJSPのエラー時は真っ白の画面が表示されデバックがしづらいように思いました。

ただデバックで良いなと思ったのはエクリプスが自動で誤字やメソッドを補完してくれることです。
railsにも補完してくれる機能(gem)をインスールすれば出来ないこともなさそうですが、最初から判別してくれるのは便利な気がしました。

感想

  • 記述量が多く、メソッドを覚えるのが大変
  • ドキュメントがrailsより少なく学習コストも高い
  • 最初、MVCの概念がわかりづらい

以上からJavaへの印象は

挫折しそう、、
railsから勉強しといて良かった、、
です

ただJavaを勉強してわかったことは

エラーハンドリングを意識しやすいこととrailsが便利すぎたと言うことです。
Javarailsと違い、エラー画面がでないケースがあるのでしっかりエラー処理を記述しようという意識が高まり自然と厳密なプログラムを書く素養が身に付くと思いました。
上記のことから
エラーに強い=重厚なシステム=大規模なシステムを受注しやすい?
のではとか思ったりしました。

そして、railsはコントローラーからViewへのデータの受け渡しなどを自動でやってくれるのでJavaエンジニアがrailsを始めると「こんなに楽にかけるんだ」と驚くんじゃないかということです。

以上がJavaを勉強して思ったことです。
まだまだJavaを学び始めて間もないですが
何年後かこの記事を自分で見てどう感じるのかが楽しみです。

それでは!!

rails 自動更新

f:id:tanagram18:20191126200543j:plain

こんちは!タナカです!

railsajaxを使って自動更新を実装したので記事を書こうと思います。

前回同様、Qiitaに書いたものをリンクとして貼ります。

気になった方がいたら是非!

 

 

qiita.com

 

 

 

以下参考にしたリンク

 

railsguides.jp

 

tsujimotter.hatenablog.com

  

www.sejuku.net

 

qiita.com

 

 JavaScript関連

 

www.htmq.com

  

kin29.info

 

freelance-jak.com

 

qiita.com  

techacademy.jp

 

teratail.com

 

ではまた! 

rails 非同期通信

f:id:tanagram18:20191016014523j:plain

こんちはタナカです!

今回はrailsによる非同期通信を実装しました。

しかし今回は前からやってみたかったQiitaで投稿をしてみました。

 

qiita.com

 

またQiitaのリンクに飛ばなきゃいけないです。

面倒かけてすいません。

気になった方はみてみてください

 

なのでここでは

参考にした記事を貼り付けておこうと思います。

 

 

qiita.com

 

qiita.com

 

これもいずれやりたいと思いながらみた

qiita.com

 

因みに今回Qiitaにあげた GIFはGyazo GIFであげたのですが、

最初あげ方がわからず手こずりました。

そして調べてもすぐに出てこなかったので書いておこうと思います。

 

f:id:tanagram18:20191016014155p:plain

対象のGIFをとったら

シェア

Markdown

Gif

Markdown形式でコードが出てくるのでそのまま編集中の記事に貼り付けるだけです

 

参考までに!!

それでは