前提・実現したいこと
一部の属性のユーザーにターゲットを絞ったSNSを作っています。
<機能>
基本はTwitterと同じ
・タイムライン
・フォロー/リムーブ
・いいね
・コメント
特殊な部分
・セグメントA/Bでプロフィールレイアウトを分けたい
・リツイートはセグメントBのつぶやきのみ
・検索機能にWordpressサイトの記事も表示させたい
発生している問題
現在、MONACAで開発をしているのですが、非常に時間がかかってしまっています。
そもそも、SNSをJSで作るのは中長期的にどうなのか?という気すらしています。
オープンソースのSNSはPHPで作られているものが多いようですが、
「スマホアプリをPHPで作るのはイマイチ」といった記事を多く目にしましたので迷っています。
###質問
1、このような機能のSNS(スマホアプリ)を作るならどんな言語がおすすめでしょうか?(学習コストが低いもの)
2、(1)の場合で、ノンプログラマーでも高速で開発できるような環境
3、その場合のDBはどのような環境が良いでしょうか?
(現在はニフクラを使用しています)
プログラミングはど素人の為苦戦に苦戦を重ねております。
どうぞご教授のほどよろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
SNS で必須なのはセキュアな環境です。
言語云々の前に、そこが一番学習コストが高いので、まず、セキュリティから学んでください。
ただ、セキュリティを学習するのに、「得意な言語」があると学習効率が高まります。なんらかの言語を使いこなせるようになることをオススメします。
もっとぶっちゃけると、アプリ設計をキチンとできるように学習し、その設計をコーディングしてもらうのが適切だと思います。たぶん、スクラッチの SNS なんて素人に毛が生えた程度の知識では無理なので。
投稿2018/10/30 07:29
退会済みユーザー
総合スコア0
0
ベストアンサー
DBでニフクラを使うという話があるように、分かってそうにも感じますが、
トンチンカンな話も多く本当に分かってるのかは不安に思えますので突っ込んでみます。
SNSを作っています
現在、MONACAで開発をしているのですが
SNSをJSで作るのは中長期的にどうなのか?
SNSという言葉の定義は「コミュニティ型の会員制のサービス」であり、
MONACAで作るのはスマホアプリ、要するにスマホというデバイスの中という閉じた世界で終わるツールです。
このままJSで頑張る、セキュリティ云々以前の問題で、
ユーザー間の連携をどうやって実現する気なのでしょうか?
Twitterのようなものと質問文に記載されていますが、
ツイートした内容はどのように扱われ、どのように全世界のスマホ端末に共有されるのでしょうか?
オープンソースのSNSはPHPで作られているものが多いようです
まぁそうですね。
スマホアプリをメインに据える場合、WebサーバはJSONのやり取りを行うだけのAPIサーバに専念することになります。
PHPは構造上アクセスが来る度にクソ重いフレームワークのソースコードを全部読み込んで
どっこいしょといった形でアクセスを捌くので構造上重いのですが、Aさんのアクセスがエラーで落ちても同時にアクセスしているBさんには影響しないという点で非常に堅牢な作りになっています。
Ruby、Python、Node.js…といった言語でもWebサーバは立ち上げられますが、この辺のハンドリングでちょっとでもエラーが出たらWebサーバがまるごと落ちますので、一見快調に動いているように見えても謎のアクセス負荷からの想定外エラーが出て深夜に出勤する羽目になったりします。
(例:金曜ロードショーのラピュタのバルス→実際にTwitter社はこのタイミングで社内に多数のメンバーを在籍し負荷を監視し続けていた)
PHP5.2の頃はバグだらけでセキュリティ意識するならPHPは避けるのが手っ取り早いとか言われる有様でしたが、
PHP7.xまでの度重なるアップデートで不具合は全て取り除かれ、構造上の対障害に強い面だけ残り堅牢な言語として人気が出てきています。
また速度面でもPHP5から実に4〜5倍の高速化という進化を遂げており、毎回のアクセスでフレームワーク(大量のコード)を読み込んでいるにも関わらず、捌けるアクセス数は他のスクリプト言語製のWebサーバと同程度です。
スマホアプリを軸にするのであればサーバレスの方向へ舵を切る方向もあります。
その場合はFirebaseやLambda等のサービスを利用してAPIを開発することになるのですが、
firebaseでサーバレスなSPAアプリを作った話を読んで、ふんふん面白そう、やってみよう、公式の英語のみのドキュメント片手に作ってみたと言えるレベルの技術力が必要で、私はノンプログラマーとか予防線張ってるようじゃ土台無理です。
作るなら覚悟決めましょう。
「スマホアプリをPHPで作るのはイマイチ」といった記事を多く目にしましたので迷っています。
スマホアプリのGUI部分をMONACAで作ったら、
一般的にWebサーバとして必要なHTML・CSS・JSファイルが不要になりますね。
PHPはJSONのやり取りを行うだけのAPIサーバになりますから、
HTMLを吐き出すのが最も得意なPHPのメリットが減ります。
そういう意味では確かにイマイチですが、別に堅牢な部分のメリットが丸々残っているので劣っているとは思いません。
個人的に他人におすすめ出来る言語二択はこれです。
- PHP: Laravelを中心として良いフレームワークがある
たとえ主戦場がJSONのやり取りになったとしても最も無難な選択肢
- Ruby: 日本のスタートアップ企業の多くはRuby on Rails
イケてるエンジニアを採用して任せる事を想定するならば有力
現在、MONACAで開発をしているのですが、非常に時間がかかってしまっています。
そもそも、SNSをJSで作るのは中長期的にどうなのか?という気すらしています。
残念ながら、MONACAはスマホアプリを作る上で、最も学習コストの低い選択肢の一つです。
MONACAを捨ててネイティブのKotlinやSwiftを選択して、IDE(統合開発環境)の恩恵を受ければマシになるでしょうけど、2つ作るので辛みも倍ですね。
MONACAで我慢して作り続けるのとでは労力では大差ないと思います。
それ以上を望むのであれば、イケてるスタートアップに努めているようなエンジニアの環境構築テクニックを盗む必要がありますし、現職エンジニアが使っているツール群を使いこなす必要があります。
本来エンジニアリングというのはクソ面倒な仕事なんですよ。
それをひたすら自動化、ツール化、前人の知恵の積み重ねでどうにかこうにかやっているのがITエンジニアというやつであり、死ぬほど覚える事があります。
現役エンジニアに聞けば余計な回り道で徒労に感じる事は減ると思いますがそれでも膨大です。
「私は覚えたくはないけど簡単にWebサービス組みたいです」という言い分は流石に通用しません。
もし待てるならシンギュラリティや、それの一つ前の段階になれば要望を言えばAI執事が何でも解決出来るような世界になるので簡単に実現出来ると思います。
今は過渡期ですので無理です、使ってるツールやライブラリもわずか2年やそこらでオワコン化しているので相当スピードが速く覚えるのが嫌なら辛いと思います。
投稿2018/10/30 11:09
編集2018/10/31 00:28総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
1、このような機能のSNS(スマホアプリ)を作るならどんな言語がおすすめでしょうか?(学習コストが低いもの)
スマホアプリであればAndroidはKotlin、iOSはSwiftが良いかと。
そもそもですが、最初にノンプログラマの方が開発し、運用段階でエンジニアにパスするのは
後のエンジニアさんが悲鳴をあげそうな気がします。
ノンプログラマの方の都合で言語を決めるのは、後の開発に悪影響が起きそうです。
なので、本格的な運用をエンジニアの方に任せるのであれば、
最初はスマホアプリではなくWebアプリとして始めた方、言語コスト的にも良いかと思います。
WebアプリであればRails開発は基本的な雛形はありますし、大きくブレることはないでしょう。
おそらく資料も日本語の参考サイトが多いので、詰まった時に調べて解決しやすいと思います。
ただ、そんなに楽になるかといえばそうではなく、
多言語に比較して楽というだけなので、どのみちすいすいと進むことはないと思ってください。
(そんなに楽に作れるならエンジニアさんいらないですしね。)
2、(1)の場合で、ノンプログラマーでも高速で開発できるような環境
業務運用レベルでそういうのはないです。
たぶんそういうのがあればエンジニア業界は今よりもホワイトです。
3、その場合のDBはどのような環境が良いでしょうか?
SNSなので、ものによってはRDB系だけでなくNoSQL系も使わなければいけないかと。
初期段階であればRDB系だけで良いと思います。
一応質問項目には回答しましたが、私の意見としては以下になります。
実際に動作するものがないと伝わらない、というのはわかりますが、
付け焼き刃のシステム構築でやっても、後々まるっと改修になるでしょう。
なので、始めはモックアップで見た目だけのものを作るのが良いかと思います。
「インタラクションモックアップツール」で検索すると、
モックアップなのにタップした動作を表現できたりするツールが引っかかります。
ある程度形が見えてきたらエンジニアさんにお願いして実際に開発していく
というようにした方が下手に開発で時間を取られるより良いかと思います。
投稿2018/10/30 08:39
総合スコア5158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ノンプログラマーでもとタイトルにありますので、業務での開発ではないという事で良いのでしょうか?
現在、MONACAで開発をしているのですが、非常に時間がかかってしまっています。
そもそも、SNSをJSで作るのは中長期的にどうなのか?という気すらしています。
monacaを始めとするハイブリッドアプリですが、
基本的にネイティブアプリ(SwiftやKotlinで作られたアプリ)より本来開発工数は掛かりません。
なのでどれくらい時間が掛かっているのかはわかりませんが、開発経験が浅いのであれば慣れるまでは覚悟するしかないと思います。
また、中長期的にどうなのか?というのはどういう事でしょうか?
開発目的や今後の見通しがわからないのでなんとも言えません。追記して頂けると助かります。
----------------追記----------------
目的と見通しのご回答ありがとうございます。以下、あくまで私見です。
te2jiさんの仰る通り経験が浅い(というよりも非エンジニア)の方がスクラッチでSNSを開発というのは難しいように思います。
仮に何とかハリボテレベルの物を開発したとしても、
十分な資金を元に将来的に技術力の高いエンジニアを獲得しアプリを整備して貰うのであれば、
おそらく作り直しレベルの大改修になるかと思います。
ですので今現在の時点では作りやすく敷居の低い方法(monaca等)を取ればよいかと思います。
質問に対する回答としては、
1、monaca等のハイブリッドアプリ。
→html/css/JavaScript
2、ご自身の使いやすい環境でどうぞ。
→※MonacaクラウドIDEは私は使いづらかったです…
3、MySQL/PostgreSQL
→RDBなら何でも良いです。
何度も記載しますがあくまで私見ですのであしからず。
投稿2018/10/30 07:29
編集2018/10/30 08:07総合スコア249
0
それなりにインフラの知識も必要になりますが、Mastodonインスタンスを立ち上げるのはどうでしょうか。(ニコニコ動画やPixivなどで実際の使用感を体験できます。)
言語は主にRuby、DBはPostgreSQLで動いていますが、APIを利用できるため自分にあった言語で拡張が可能です。
利用人数によりますが、小規模であればVPSなどで月1000円もあれば構築できます。
https://github.com/tootsuite/mastodon
投稿2018/10/30 07:38
編集2018/10/30 07:40退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/30 08:01
2018/10/30 08:16
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/30 07:55