新しい Web サービスのアイディアがいくつもあるのに、現在それを作成できていると言える状況ではありません。
php + CodeIgniter で幾つかの Web サービスを運用しているのですが、この組み合わせでサービスを作るのは、結構無駄な時間がかかってしまっているイメージです。
それほど目新しい機能を必要としているものはないので、ブロックを積み重ねるように、プログラミングできれば、もっとスピード感のある開発ができるのではないかと思っており、Ruby on Rails に興味を持っています。
現在のスキルセットで考えると、laravel が適しているようにも思い、学習を始ようとしたところですが、その前に、識者の方々の知恵をお借りできればと思い質問します。
前置きが長くなってしまいましたが、以下のような条件の場合、どのようなフレームワークを選択して開発を進めていらっしゃるでしょうか?
・プロトタイプの作成が容易であり、機能の追加/改善/修正を頻繁に行う
・機能の追加/改善/修正において、多くの箇所を考慮したくない(機能同士が疎な結合)
・サービス全体としてのセキュリティポリシーの実現は考えなくてはならないが、コードレベルでのセキュリティバグ対応はあまり考慮したくない
・テストがそれなりに楽
・1 サーバで 1 Web サービスを提供するイメージ
・まぁ、フロントもまとめて面倒みれると楽なんだろうなぁ。。。
・一人親方的開発なんで、グループ開発に対しての機能はチープで良い
概ね、上 4 つが望んでいる要件になります。
私のスキルセットはあってない程度のものなので、言語の縛りや既存のスキルセットは無視していただいてかまいません。
複雑なことをしたいというより、アイディア勝負のプロトタイプを量産していく感じで、オススメのフレームワークがあればよろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答9件
0
Ruby on Rails に興味を持っています
現在のスキルセットで考えると、laravel が適している
いつも、回答の視点が偏り過ぎないように気をつけていますが、
ご質問にもあるので、今回は正面からRuby(Rails)を推してみます。
現実的にLaravelを選ぶのが無難かもしれませんが、
RubyとRailsのメリットを一応紹介してみます。
アイディア勝負のプロトタイプを量産
これは、Railsというか、Rubyに向いている分野です。
メジャー言語の中では、プロトタイピングに一番向いてると思います。
(Rubyの源流のSmalltalkやLispも向いているが、習得が大変)
じっさい、まずRubyで出てきてから、静的言語で書き直す例は多いです。
TwitterがRubyからScala(JVM)に変えたとか。
静的ジェネレータのJekyllが出た後で、HugoやHexoが出てくるとか。
なぜ向いているのか。Rubyは動的言語ですが、
そもそもプロトタイプとは、動的に変更されるものだからです。
動的言語がプロトタイピングに向くといっても、
LLに分類される言語は、たいてい動的言語なので、
もう少し詳細を見てみましょう。
たとえば、Pythonというのは、Rubyに一番近い言語です。
兄弟言語みたいなものです。しかし、Rubyの方がより動的です。
どの辺がそうか、具体的に言うと、たとえば、
インデントが文法に組み込まれているのは、Pythonの特徴でしょう。
一方、Rubyではそうではなく、括弧を省略できるなど、
文法の自由度が高いので、内部DSLが作りやすい。
また、Rubyではオープンクラスによって、
言語組み込みクラスの挙動も変えられます。
クラスの定義を実行中に動的に変えられます。
Pythonが汎用性を重視しているのに対して、
Rubyは特化性を重視した言語仕様です。
そもそもDSLは特化言語なのだから、当然かもしれません。
つまり、Rubyを使うメリットのひとつが、
メタプログラミングにあります。
そもそもなぜ、Railsが「Ruby on」なのか、
なぜ、フレームワークが乱立しているPHPとかと違って、
RubyではRails一強なのか、と考えるとき、
このメタプログラミングの要素は大きいです。
じっさい、RailsはRubyの内部DSLですし、
実装でメタプログラミングを駆使しています。
Rubyと密接に結びついているので、簡単に追随できない。
しかし、Railsがそうだ、というだけではなく、
自分で書く部分にメタプログラミングの技法を使っても良いのです。
ただし、オープンクラスなどのメタプログラミングには、
保守が難しくなるデメリットもあります。
しかし、プロトタイピングやβ版が前提であれば、
保守するフェイズに入ってから、Twitterのように、
後でScalaなどの静的言語で書き直しても良いのです。
Webアプリは当たり外れが大きいので、
最初から静的言語で書くと、サービスが外れたときに、
ムダになってしまう実装コストが大きい。
ブロックを積み重ねるように、プログラミング
Rubyは純粋オブジェクト指向言語なので、
オブジェクトという形で差分を切り出し、
積み重ねていくことがやりやすいです。
この点で、PHPのOOPは後付けだし、
JavaScriptは数少ないプロトタイプベースなので、
OOPで組むのがRubyほどスムーズではないと感じています。
ただもちろん、PHPは安いレンタルサーバで使えるとか、
JSはHTML5の主役なので将来性がある、といったメリットはあります。
Rubyが活きるポイントは、
作るアプリに独自要素が、どれくらいあるかだと思います。
Rubyは言語に柔軟性があるので、内部DSLやオープンクラスなどで、
言語自体を作りたいものに合わせて、曲げることができます。
そして、独自要素をオブジェクトで整理していきます。
これが動的なオブジェクト指向が活きる場面です。
逆にもし、規格でガチガチに固まってる分野なら、
静的言語、関数型言語の方が向いてる場合も多いでしょう。
最後に少し補足すると、「Railsで15分でブログを作る!」みたいな記事が
たくさんあったので、何かインスタントなイメージがあるかもしれません。
しかし、それだけだったら、今ならフレームワークは他にもたくさんあります。
あと、動的で型付けのコストが低い代わりに、テストをモリモリ書くことが前提です。
テストとサーバの環境構築のコストを考慮すると、
たんに早いことだけ期待すると、肩透かしを喰らう部分もあるかもしれません。
だから、今となっては、決まり切ったものをたんに早く作れることよりも、
競合と差別化した独自のものを作りやすいことがメリットではないでしょうか。
考えてみれば、TwitterやJekyllも(出現した時には)独自性が高いですよね?
「スタートアップならRails」みたいな言われ方がよくされますが、
私としては、Railsを使うこと自体や、開発が多少早いことよりも、
差別化した独自性を持つサービスであることが、まず重要だと考えています。
投稿2017/11/23 01:23
編集2017/11/23 01:38総合スコア5592
0
無難にLaravelですかね
人気ありますし、情報も出揃ってきてますし、後述の開発速度面でも整っているのでオススメです。
以下は基礎的な所も雑多に混じりつつの高速化のネタです。
te2jiさんにとっては当然知ってる箇所も含まれてるのでチェックシートとでも思って眺めてください。
無駄な時間最優先で考える場合、
まずビュー部分のHTMLとCSSにテコ入れした方が良いでしょう。
ほぼ素のHTMLでぺこぺこ閉じタグ作って、修正するコストは馬鹿でかいです。
特に作る方はEmmet辺りでどうにかなるとしても、修正するコストがやばいんで素のHTMLとか見たくもありません。
CSSも同様、入れ子不可能の設計思想がネックでコピペだらけになり、
カーソル移動だけで1日の作業時間の大半を取られます。
この辺のジャンルはRubyやNode.jsが進んでいますので、PHPの世界に輸入してきてはどうでしょう?
HTMLはSlimやPug、CSSはSASSやStylusくらいの軽量言語が導入できれば相当捗ります。
Laravelでは、Laravel Pugなる手法で導入できるようですね。
他にも色んな楽になる代替言語が使えないか調査してみてください。
Laravel Pug で Pug ファイルを Laravel へ導入する
Ruby on Rails に興味を持っています。
Railsの強みの多くは、コマンドラインツールでの動的ModelやController生成にあるといっても過言ではないでしょう。
Codeigniterも当然ありますよね…えっ、手作業!?
(ざっと探しましたが見つかりませんでした、もしCodeigniterで出来るネタがあったらごめんなさい)
LaravelやCakePHPにあります。
初めてのLaravel 5.1 : (9) モデルの作成
【CakePHP】Bakeコマンドを利用したMVCファイルの作成
簡単なブログ程度なら1日で作れるぜーが現実的なのは、これらのCLIツールをフル活用しているから
後はタイプ速度だけの問題まで落とし込んでるわけですね。
最終的なゴールで言えば、
自分が手を動かさなくてもスケルトン○○を作れるようなネタを仕込む事をオススメします。
CodeigniterでもオレオレModelやController生成器のスクリプトを仕込んで、
コマンド一撃でスケルトンモデル、DBまでまるごと面倒みてくれるような感じのものでも良いとは思いますね。
おまけ
1 サーバで 1 Web サービスを提供するイメージ
DockerやVPSあたりでポコポコサーバを生やして殺してが出来ると楽そうですね。
もしところどころうろ覚えだったりして速度が出ない状況なら是非。
私は使用エディタがVimなので、Linuxサーバ立ち上げたら1コマンド叩けばDotfilesを一気に落として環境構築完了です。
VPS=開発環境=そのまま独自ドメイン設定すれば本番環境に変身というネタが使えます。
もちろんプロトタイプのフェイズを抜けたら正式なサーバを立ち上げます。
Vim、Emacs、Nano辺りは学習コスト高いですが、
メインエディタに出来ればゆくゆくはこういった所で融通がききますね。
このようにエディタやツールにも高速化のヒントが転がっているので、見直してみてください。
投稿2017/11/22 04:21
編集2018/12/21 05:07総合スコア21194
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/22 06:25
退会済みユーザー
2017/11/22 08:04
0
PHPから触って今はRailsを書いているのですが、Railsで開発をした時の感動は今でも忘れません。
これ以上のアーキテクチャはこの先出てくるのだろうか...と感じるほどです。
個人的にはRailsがいいと思うのですが、質問者さんがPHPが得意であれば、LaravelがPHPフレームワークの中では一番生産性が高いと感じました。
個人的な意見なので、参考程度にしてください!
投稿2017/11/22 03:43
総合スコア1036
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/22 05:47
0
Laravel使ったことのない人の回答ばかりですね…。
数年前から本気でLaravel使ってた人なんて数えるほどしかいないので仕方ないけど。
Twitter・Facebook認証はこれより簡単にできるものは見たことない。
https://readouble.com/laravel/5.5/ja/socialite.html
今のLaravelは他の言語のフレームワーク含めても全部追い抜いてるくらいの出来だけどその分バージョンアップのペースがものすごく早い。
プロトタイプ作る段階では楽でもその後半年ごとにバージョンアップ作業することになる。
その覚悟があるならLaravelの利便性は圧倒的。
投稿2017/11/28 02:21
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/28 02:34
0
質問の趣旨からは外れますが、アイデアをたくさん持っている人は外注を覚えたほうがいいと思います。自分で全部作っていては時間がたりません。アイデアはいかにスピードよく形にできるかです。
投稿2017/11/22 19:25
総合スコア44
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/23 00:22
0
サービス全体としてのセキュリティポリシーの実現は考えなくてはならないが、コードレベルでのセキュリティバグ対応はあまり考慮したくない
であればオンプレミスのファイアウォールを設置するとかWAFがおすすめです。SQLインジェクションといったコードレベルのセキュリティホールを防ぐことができます。
仕様が複雑でないSPA開発にはnode.jsがおすすめですが、それなりに大きなシステムを作ろうとすると人が大切になってくると思います。
PHPerが集めやすいからという理由でPHPにしている会社はたくさんありますが、それだとありふれた会社の中に埋もれてしまいますので、それだけの理由でPHP開発を続けるのはもったいない気もします。
投稿2017/12/24 19:00
総合スコア1161
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/25 15:11
0
プロトタイプでしたらNode.jsのExpressフレームワークを使って、データベースはMongoDBでmongooseというORMを使うとめちゃくちゃ爆速で作れます。
・テストがそれなりに楽
テストはmochaというものを使えば楽です。
・1 サーバで 1 Web サービスを提供するイメージ
Node.js自体がWEBサーバーの機能を持っているので、ApachやNginxのインストールも不要でNode.jsだけあればすぐなのでオススメです。
・まぁ、フロントもまとめて面倒みれると楽なんだろうなぁ。。。
フロントはhtmlっぽく書きたいならejs、タグとか書きたく無いならJadeですね
・一人親方的開発なんで、グループ開発に対しての機能はチープで良い
Expressはフレームワークとして優秀だと思っているので機能的には問題無いかと思います。
疑問点がありましたら質問お願いします。
投稿2017/11/23 00:59
総合スコア131
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/23 03:27
2017/11/23 03:33
退会済みユーザー
2017/11/23 09:43
2017/11/23 11:38
退会済みユーザー
2017/11/23 12:42
2017/11/23 13:56
退会済みユーザー
2017/11/23 16:04
2017/11/23 23:29
退会済みユーザー
2017/11/24 01:31
0
WordPressがプラグインも豊富でプロトタイプ作りにはお奨めです。
新しい Web サービスのアイディアがいくつもあるのに、現在それを作成できていると言える状況ではありません。
特に質問投稿日から4ヶ月ほど経った段階で、もしも仮に、この状況が変わらず未だに何も作成出来ていないようであれば、この先も状況はずっと変わらず時間だけ過ぎていくでしょうから、たかがプロトタイプごときでセキュリティがうんたらと言ってられる立場ではないと思います。クローズドなプロトタイプでセキュリティーなんて気にせずWordPressでやりましょう。
投稿2018/03/30 04:13
編集2018/03/30 04:14退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/30 04:32
0
何でもphpで再利用可能な設計にしておけば、乗っけるCMSはなんでもいいような気がしますが、
量産型サービスの場合は、フロントが代わって、バックエンドはあまりかわらない傾向にあると思います。
Wordpress + ACF Proで基本テンプレートを作るのがおすすめです。Wordpressとはいえども、結局PHPなので、機能開発はなんでもできる。プラグインも作り置きしておけば、必要な機能をアドオンできます。
dbにいれたいものは、適当にほりこめばいいし。postとpostmetaしかないから、dbの設計が不要って感じです。
デザインだって、管理画面で設定できるインターフェイス作っておけば、テンプレート1本で入力を外注するとかもありです。
もっと簡易なWebシステムなら、独自にSQLiteを使ったシステムを作るのもあり。コピーするだけで立ち上がるから。
テンプレートできあがれば、マルチドメインのレンタルサーバーに量産システムを開発してインストールおけば、
GUIでシステムを複製して量産体制を構築することもできる。
どこまで自動化すると生産性がMAXになるかを検討すると良いかと思いました。
投稿2018/03/19 11:36
総合スコア15
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/19 14:49
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/23 03:17