B2C向けのコミュニティシステム(会員登録、掲示板投稿、マイページ、決済機能、商品のレコメンデ―ション機能、スケジュール調整機能等あり)を、PHP言語をバックエンドとして構築しています。サイトはWire Frameベースで合計200ページほどのそれなりに規模の大きなもので、フロントエンドからバックエンドまで一括で1000万円ほどかけて半年近く前から業者に委託しており、70%ほどが完成しています。
当初予定と比べて企画が色々と広がってしまい、英語化と海外エンジニアの活用を将来的に想定して、使用言語をPython(3.0)に丸ごと移行したいと考えています。まだサイトは完成前ですが、リリース前に丸ごとPythonに変換することは現実的でしょうか。リリースするとより予算がかかってしまうような気がするので、もしよければアドバイスを頂けると非常に助かります。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
PHP言語をバックエンドとして構築しています。
1000万円ほどかけて半年近く前から業者に委託しており、70%ほどが完成しています。
リリース前に丸ごとPythonに変換することは現実的でしょうか。
たしかに最近では、欧米を中心にPythonが国際的な主流になっています。
Java、JavaScript、C系言語の次くらいにメジャーな言語です。
機械学習系ライブラリの充実ぶりが、流行の要因のひとつです。
また、PHPはかなり行き当たりばったりに仕様拡張してきました。
たとえば、PHP5から(本格的な)オブジェクト指向の仕組みが追加されました。
しかし、最初から純粋オブジェクト指向で設計されている
RubyやPythonの方がOOPで自然に書ける、というのが実感です。
そこでは「すべてがオブジェクト」の世界です。元々はSmalltalkが元祖ですが。
関数型プログラミングにしても、Lispの流れを汲むので、やはり自然に書けます。
私自身も、(すでにC言語などは習得していましたが)
Webプログラミングは、まずはとっつきやすいPHPから入り、
OOPが得意なRubyに移り、最近ではPythonも触っている、という流れです。
ですから、質問者=発注者の方が、そのように考えるお気持ちも分かります。
しかし、7割完成時点から切り替えるのは非現実的だと思います。
もし私が発注者の立場だったら、PHPで完成させてしまいます。
変更のタイミングが遅過ぎで、ビジネス的に変更可能な時期を逸しています。
次の新サービスをPythonで書けば良いのではないでしょうか?
PHPも国際的な言語なので、海外の技術者はいます。
欧米中心のPythonと比較して、日本も含めたアジアに多いですが。
PHPのサービスで開発コストを回収しておき、
他と比較できる運用経験も残しておいた方が、
Pythonの新サービスにも良い影響を与えると思います。
中途半端に今変えてしまうと、単純に一千万円のコストだけが残ります。
もし、タダでパッと書き換えられる想定なら、それこそ非現実的です。
それに、開発効率、運用効率、実行速度、人件費、などの比較もできません。
技術面だけでなく営業面でも、収益を上げるノウハウを得てからでないと、
ムダな設計をしてしまう面があると思います。要は経験を次に活かせません。
ビジネスとしては、言語は手段であって目的ではありません。
ユーザにサービスを提供することで、利益を得るというのが最終的な目的です。
もしかしたら、レコメンド部分に最新技術を投入することで、
機械学習に強いPythonが生きる側面もあるかもしれません。
ただかりに最悪、今から作り直す場合でも、
マイクロサービスの考え方を取り入れた設計で、
PHPのメインシステムとは別にPythonで機械学習エンジンを作り、
データをやり取りする、といった方法も考えられます。
マイクロサービスは別言語のメンテがやや煩雑になりますが、
この場合、作ったPHPがムダにならないメリットが大きいです。
ただし、全面的な作り直しを回避できるだけで、ツギハギになるため、
仕様変更コストはやはり掛かるし、別に推奨したいわけでもありません。
どちらかというと、どうしても変更したい場合の苦肉の策です。
全面的な書き直しは、今のPHPでの開発が完全に頓挫していて、
どうにも進まないような失敗した状態でだけ検討します。
インターネットの初期には、「ネットスケープ」というブラウザもありましたよね。
それがMSのIEに負けたひとつの要因として、ソフトのバージョンアップ時に、
全面的な書き直しをしようとして、リリースが大幅に遅れたというのがあります。
今では「セカンドシステム症候群」と呼ばれるアンチパターン(失敗例)です。
まして、まだ始まってもいないサービスを書き換えるというのは、
意見の押しつけはしたくないものの、私はまったく推奨できません。
変更コストを上回る利益増の見込みがないなら、ビジネス的に悪手です。
ソフトの話だとピンと来ないかもしれないので、世間一般で通じる例で言えば、
料理が7割できた段階で、中華から洋風に変えようとか、
建物が7割建った段階で、木造からコンクリに変えようとか、
そんなの作り直しになりますし、確実に損しますよね。まずありえない感じです。
ただし、メインディッシュと別のデザートだけ洋風にできるし、
母屋とは別の離れの建物だけ木造、とかは現実にもありますよね。
マイクロサービスの話はこちらに相当します。これならまだしもアリかも。
以上、長文になりましたが、質問者の方や参考に見ている誰かに、
なるべく損をさせたくないという気持ちから、
仕様変更に慎重な立場からの意見を申し上げました。
投稿2016/10/28 21:00
総合スコア5592
0
自分も英語化と海外エンジニア活用を目的にPHPをPythonにするのは理由として正当だとは思いません。言語というよりなんのフレームワークを使っているのかが大事な可能性もあります。
なお、PHPをPythonに機械的に移行できるわけではないので、PHPで実装したときと、同じ程度の工数がかかるのではないかと予想します(フロントエンド部分が同じでいいならバックエンド部分の工数分)
確かに将来もっと機能が増えてからPythonに乗り換えるぐらいなら、今から作り変えたほうが安いのは間違いないと思いますが、作ったサービスが十分に収益を生むかどうかわからないのに、完璧なものにしてからリリースするという発想はあまりいいとは思いません。また、リリース時期も遅れることのリスクも考慮したほうがいいと思います。
あとは、お金と時間(リリース日)の政治的な問題だと思います...。
※自分は作り手側なので、あまりよくわかっていないで回答していますが、参考程度になれば幸いです。
投稿2016/10/28 04:12
編集2016/10/28 04:14総合スコア6586
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/28 07:39
2016/10/28 12:07
2016/10/28 12:35 編集
2016/10/28 12:50
2016/10/30 01:44
2016/10/30 02:48 編集
2016/10/30 04:11
0
読む限り開発言語の変更はユーザ都合ではなさそうですね。
ならば一番気にすべきはユーザ影響でしょう。
納期、費用、品質etcユーザに迷惑をかけないなら、これまでの開発費用を棄ててまでやるメリットが会社にあるかないか、ですね。
仮にユーザ都合だとしても、普通なら要件定義や設計の甘さは責められると思います。
ユーザが非常識な変更要求をしているなら、正々堂々納期後ろ倒しと追加費用を請求して話を進めましょう。
いずれにしてもこのケースでは技術論は二の次です。やってやれない事はないんですから。
まずはユーザ対応です。
あと、チームメンバーともきちんと意思疏通しておかないと、会社ないしは質問者さんの判断能力や意思決定プロセスを疑われますよ。
投稿2016/10/28 05:10
総合スコア1894
0
移行する場合の具体的な計画を立てましょう。
・今まで投資した1,000万円をどうするか
・移行にかかるコストをどう捻出するか
決済する人、場合によってはお金を出す人がOKであればいいのではないでしょうか。
現実的かどうかはあまり重要ではないです。
移行する前と移行する後でTCOでメリットがあればありなんじゃないでしょうか。
投稿2016/10/28 03:23
総合スコア6621
0
##言語選択の葛藤
astoria17さんのおっしゃりたい事は、非常によく解ります。
なぜかといえば、そっくりそのまま、私個人の中で起こっている葛藤だからです。
5、6年程前でしょうか。当時は「勉強会」なるものが急速に盛り上がっている時でした。
私は、業務でSymfony(PHPのフレームワーク)を使用しておりました。
「海外では、Python」と言われ、「NASAやGoogleでは、Python」が決まり文句でした。
勉強会では、やはり「Ruby on Rails」が、一番イケてました(この言い方…)。
積極的に業務でというより、「まさにこれから」という感じでした。
私は、Rubyより「Pythonの方がカッコいい」と思っていたので、Pythonの勉強会に積極的に参加しておりました。
それに引き換え、当時もやはり、PHPと言えば…
もちろん、当時は「FacebookはPHP」が決まり文句でしたので、PHPも世界で使われています。
CakePHP(PHPのフレームワーク)もi18n(多言語化対応)が使えますので、重量級(一通りの機能が揃ってるという意味です)のフレームワークであれば、機能という意味では大差ないでしょう。
##レガシーコスト
その後、私個人が、業務でPythonに切り替えられたかと言えば、結局踏ん切りがつきませんでした。
今も、CakePHPを使ったりしています。
ただし、今もやはり、PHPと言えば…
多分、私の中では、PHPは現在進行形で、レガシーコスト(負の遺産)になりつつある所だと思います。
ここに来て、機械学習などの盛り上がりにより、日本でも一気にPythonがイケてる言語にのし上がってきましたね。
「キャズムを超える」なんて言葉も、今は恥ずかしいですかね。
##かかるコストについて
ここまでは、私個人の話です。
以下、ご質問の内容について、いくつか伺いたい点がございます。
- astoria17さんご自身は、開発経験などはございますでしょうか?コンサル的な立場が長かったりするのでしょうか?
答えられる範囲で結構です。どういった知識をお持ちなのかが知りたくて。
-
そもそも、なぜPHPでスタートしたのか。astoria17さんの指定なのか。業者の指定なのか。
-
他の方の回答にもありました、「フレームワーク」については、どのようになっているのか。
標準的に使われているフレームワークを使っているのか。スクラッチ開発のようなものなのか。
-
Pythonに切り替えるとして、同じ業者を使えるのか。別の業者を使うのか。
-
仮に同じ業者を使うとして、その業者の規模はどの程度のものなのか。
ある程度、小さな規模の業者であれば、大部分を同じ担当者が引き継げる可能性があります。
一括で1000万円ほどかけて半年近く前から
この部分を見ると、大勢の担当者がいるようには見えない気もしますが。
極端な話、一人の担当者がいて、PHPとPythonの二刀流だとしましょう。
その一人の担当者が引き継げるとすれば、これまでの投資のうち、結構な部分は無駄になりません。
DB、フロント部分もそうですし、設計においても、自分が設計してるのですから。
仮に今使っているフレームワークがCakePHPとして、その担当者がDjango(Pythonのフレームワーク)に精通しているとすれば…
私自身の例を出した理由は、この部分です。
これまで、業務でCakePHPを利用してきました。イケてないなと思いながらも…
その傍ら、カッコいいと思っていたのでDjangoの勉強もしたりもしてました。
両者はともに、標準的かつ重量級のフレームワークですので、似ている所も多いです。
リリースするとより予算がかかってしまうような気がする
これは、間違いないと思います。
今現在、Ruby on Railsが、隆盛を極めたりもしていますね。エンジニアも多いですね。
「将来」を考えた時、イケてるイケてないは、本当に重要だと、私は思います。
なので、この質問を拝見した時、「応援したいな」と思った所が正直な所です。
自分自身への応援という意味も込めて。
##なぜ、Python3を選んだのか
私は、今現在の、海外の事情を調べた訳ではありませんので、詳しくは知りません。
astoria17さんが、Python3を候補として選んだ根拠などはありますでしょうか?
あまり難しく考えなくて結構です。
- ご自身の経験から
- 海外に知り合いがいて
- 誰か詳しい人に聞いて
など、理由があれば、伺いたいです。
「NASAやGoogleでは、Python」が「WEB系にPythonが強い」を表している訳ではありません。
「Pythonは、研究、データ分析に強い」などと、言われたりします。
こちらは、一年程前の記事ですが。
【プログラミングは義務教育化すべきなのか?】という問題を考えてみた
イスラエルでは他国に先駆け、2000年より高校でのプログラミング教育を必修化していました。現在では義務教育で10歳からプログラミング(C++、Python)の授業が始まり、15歳まで教育は続きます。
最近、日本でも「学校でPythonを」という記事を、見たような気がしたのですが。
「おっ!」と思った記憶があるのですが、すみません、うろ覚えで見つけられませんでした。
##PHPを捨てる企業
すでに、ご存知かもしれませんが。
こちらの例は、全社を挙げて徐々にという感じなので、もちろん人材育成から何から何まで、時間をかけてという事例です。
投稿2016/10/28 09:20
編集2016/10/28 10:35総合スコア256
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/28 12:05
2016/10/29 01:52 編集
2016/10/29 00:47 編集
2016/10/29 03:16
2016/10/30 01:55 編集
2016/11/02 02:14
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/30 01:55