IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Ruby on Rails 海外事情コラム

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第11回 PHPプログラマーからの質問「Railsは自由度が低いように思えます。」 (野田貴子) 2016年5月

こんにちはー。野田貴子です。今月も海外のRailsブログで面白いものを意訳して紹介していきます。

今月の紹介コンテンツは以下です。

https://www.reddit.com/r/rails/comments/3rwhux/coming_from_php_ror_seems_less_flexible_for_what/

さて、以下が上記の意訳文章+所感です。特にPHPプログラマーでRuby on Railsを学ぼうとされている方はご参考ください。

 

先日、海外の投稿サイトにこのような質問が投稿されました。

『PHP経験者から見ると、Ruby on Railsは自分がやりたいことに対する自由度が低いように思えます。私は何か見落としているのでしょうか。(*1)』

本文を読んでみると、投稿者は既存のPHPのサイトと同様のものをRuby on Railsで作り始めてみたものの、PHPでは簡単だった下記のことがRuby on Railsではうまくいかなかったようです。

1. アプリをWEBricksではなくApacheで動かす
2. 1つのサーバー上で複数のアプリ(それぞれ別のデータベースに接続する)を動かす
3. データベース同士を接続する
4. セッション値をアプリケーション間で同期する
5. adminer.php のようなことをする
6. あるファイルをすべてのアプリからアクセスできるようにする
7. テーブル入力値の閲覧と編集を同一ページ上で行う

みなさんはどう思いますか?これらはPHPでは簡単なことなのに、Ruby on Railsでは難しい(または実現不可能な)ことなのでしょうか。

一番評価されたコメントでは、「すべての問題はRuby on Railsでも解決可能、もしくは問題ですらありません。おそらくあなたは、Ruby on Railsの実行モデルがPHPのものと異なることを理解しておらず、問題をRails流ではなく、PHP流に解決しようとしています。」と回答されてい ます。

他の回答者は、「あなたはPHPの実行モデルがとても快適だったのでしょうね。Ruby on Railsを使う際は、アプリケーションを「Apacheが実行するファイルの集合」ではなく、1つのモノリシックな実行ファイルだと見なしましょう。」とコメントしています。

Ruby on Railsは、「同じことを繰り返さない(DRY:Don't Repeat Yourself)と「設定より規約(CoC:Convention over Configuration)」という2つの哲学を持ち、開発者の手間をなるべく減らせるように設計されています。そのため、哲学が異なる別の言語やフ レームワークと同じように開発しようとしても、うまくいかないというのは当然のことかもしれませんね。なるべく多くのコードを見て、書いて、慣れていくこ とが一番の解決方法になるでしょう。そうすればきっと、Ruby on Railsの良さを最大限に生かすことができるはずです。

参考までに、コメントされている上記問題の解決方法の要約を載せておきます。

1. アプリをWEBricksではなくApacheで動かす
  • Googleで検索すれば、すぐに方法が見つかるはずですよ。
  • ○○を読めばApacheとWEBrickの違い、またWEBrickを開発環境で使ってよいかがわかりますよ。
  • ○○を読めば、 UbuntuサーバーのApache上でRuby on Railsをデプロイする方法がわかりますよ。
  • Apacheやnginxでアプリを動作させたければ、Phusion Passengerが使えますよ。
2. 一つのサーバー上で複数のアプリ(それぞれ別のデータベースに接続する)を動かす
  • アプリのデプロイ方法を一度学べばわかるはずですよ。
  • Passengerの設定で可能ですよ。
3. データベース同士を接続する
  • Googleで検索すればわかりますよ。
  • ○○の記事が明確に説明していますよ。
4. セッション値をアプリケーション間で同期する
  • 本当にアプリケーションを分割したいのでしょうか。1つのアプリケーション内でも、routeをnamespaceで分ける方法がありますよ。
  • セキュリティの問題が発生しますが、どう対応するのでしょうか。
5. adminer.php のようなことをする
  • 目的がわかりませんが、行レベルのDB操作を行いたければRailsコンソール、一括操作が行いたいのであればMySQLやPostgreSQLのコマンドラインでいいのではないでしょうか。pgAdminのようなGUIソフトもあります。
  • adminer.phpがどういうものかよくわかりません。
6. あるファイルをすべてのアプリからアクセスできるようにする
  • 複数のアプリに分ける必要があるのかが判断つきません。namespaceではいけませんか。
  • 共通事項をgemにして、プライベートに使用するのが簡単では?
  • 質問の主旨がよくわかりませんが、他のプログラミング言語と同じように、rubyのFileを使えばファイルアクセスは可能ですよ。
7. テーブル入力値の閲覧と編集を同一ページ上で行う
  • これはHTMLとJavaScriptのもんだいですね。
  • 普通に実装できますよ。

--

*1 https://www.reddit.com/r/rails/comments/3rwhux/coming_from_php_ror_seems_less_flexible_for_what/

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes