質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.76%

  • PHP

    19200questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • JavaScript

    15309questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Ruby on Rails

    6749questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Swift

    6700questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • MySQL

    5517questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

自作SNS開発について

受付中

回答 8

投稿

  • 評価
  • クリップ 3
  • VIEW 728

Ryan

score 21

 前提・実現したいこと

自作でSNSを開発したいと考えています。TwitterやFacebookのようにスマホからも利用できるアプリケーションも開発したいと考えています。勉強のためにもSNSを作成するサービスのようなものは利用せずに可能な限り自作したいと考えています。

 発生している問題・エラーメッセージ

プログラミングはSwiftでネイティブアプリを作ったことがある程度なので、全く何から手をつければいいかわからず困っています。どのような手順で開発していけばいいのか、またオススメの書籍やサイトがあればご教授お願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 8

+17

道のりをざっくり書くとこうなります

  • HTMLとCSSでWebサイトを作る
  • PHPやRuby等の言語を使って動的なHTMLを生成する仕組み (Webサイトのヘッダー・フッターを共通モジュール化)
  • アクセスカウンターを設置する (Webサーバのファイルやデータベースに読み書きする練習)
  • 掲示板を作る (誰でもスレッドが作れる)
  • 掲示板を改造してブログを作る (ログイン機能で認証しないと記事が作れない)
  • ブログを改造して複数ユーザーが自前の記事を持てるようにする
  • フレームワークを利用して高速かつセキュアなサービスに強化

一段抜かしでいきなりSNSを作ろうとすると絶対に挫折するので、
必ずこのペースを守るようにしてください。

もし仮にあなたが非常に優秀で一段抜かしに成功したとしても、
最終ゴールがSNSを全世界へ向けて公開する所にあるのであれば
セキュリティ的な都合、ソースコードのメンテナンス性や可読性
…等の事情で何度かは壊して作り直す事になると思います。

あのジョブズやビル・ゲイツですら、最初は数時間でフリーズするクソOSのWindows95、ポンコツですぐ固まるiPhone3をリリースしてたわけですからね。
一歩ずつ積み上げる事が近道です。頑張って!

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/15 12:34

    基本方針に同意します。完全自作は基礎の積み重ねが大切ですね。

    > フレームワークを利用して高速かつセキュアなサービスに強化
    これは出来るだけ自作を希望する質問者さんからすると、フレームワークを自作する方向性も…。

    (余談)
    クライアントサイド/サーバサイドの境界線が分からず、出来ないことをやらせようとして躓く人が多いイメージなので、「HTTPの理解」がどこかで必要かもしれません。
    (Swiftでネイティブアプリ作成するなら、なおのこと)

    キャンセル

+5

勉強のためにもSNSを作成するサービスのようなものは利用せずに可能な限り自作したいと考えています。

ひとつ苦言を呈してしまいますと、
既に作りたいものに近いサービスがあるのでしたら、
そのサービスを一度きちんと利用してみて、仕組みや構造を理解し、
時にはソースを読み込んでいくのも大切な勉強機会です。

最終目標を自作に定めるのは勿論動かさなくて良いのですが、
勉強のために既存サービスを利用するのはありだと思います。

もしかしたら「TwitterやFacebookを既に利用したことがある」のかもしれませんが、
仕組みや構造部分に着目して利用したことがありますでしょうか?
普段使っている機能はどのような仕組みで動いているのだろうか、ユーザー同士の情報共有はどういう構造になっているのだろうか・・・etc.

観点をかえることで普段使っているものでも見え方が全く変わってきます。

SNSを導入できるCMSも世の中に溢れているので、
その辺りを調べてみて、自分で導入してみて、検証・研究してみてはいかがでしょうか。

タグを見る限りどの言語で作るのかも決まっていないように見えます。
ただどの言語で作るにしろ、そこは「サーバーサイドの言語の選択」でしかないので、
いずれにしても、HTML,CSS,JavaScriptなどクライアントサイドで動作する言語は必修です。
あとはWebサーバーで動作する言語であれば、おおよそどの言語でも実現は可能です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/15 08:20

    専用クライアントアプリの線もあるから必修ではないはず

    キャンセル

  • 2018/05/15 13:38

    まあWebで「自作」にこだわるのだったら必修かなと。
    例えばCSSフレームワーク使うとしても思うようにするには知識ないとカスタマイズできませんしね。

    キャンセル

+3

当座公開が目的ではなく学習したいということであれば
個人的にはサーバーサイドはPHP、RDBにはMySQLをおすすめします
とりあえずサーバーを1台建てるか仮想サーバーを組んで
httpdとサーバーサイドプログラムがどういった依存関係なのか理解し
RDBのデータ管理について学習してください
必要な知識は広範になるので2~3つ本屋や図書館で書籍を流し読みし
自分に合いそうなものをつかって一通りやってみることが重要です
その上でわからないところをネットで調べるなり、質問サイトで質問するなりしてください

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

おっ! 自作SNSですか! トランザクションのACIDとか意識してなくても、サービス1本簡単な物を作ってみるだけで、色々学べますので、いいですよ :)

※私の回答での「SNS」は、「電子掲示板」も含めます

 「そもそもSNSとは」を考える

そういえば、SNSってなんでしょうね?

自分の記憶が正しければですが、
Social Network Service
なのですが。

難しい亊を考えなければ「人と人の繋がりを作るサービス」ということ、
交流の仕組みや場を作れれば、大体SNSではないのではないかと、ゆるい考えをしています。
なので極論、自分の価値観では文学サロンなんかも、かなりジャンルの絞られたSNSになります。

それを、複数の話題を並列でやりとりできたり、回答に対する評価機能をつけたりするようにしたのが、多くのSNSですね。

 まとめ

ということで、練習であれば「なんか情報を共有できれば、概ねクリア」ではないかと思います。
なので最初は、得意な言語で「テキストファイルに投稿内容を保管した電子掲示板」でも大丈夫です。

そこから、同時書き込みに対応するためやロジックとデザインを分離するためにフレームワークを
使ったり、データベースシステムを使ったりしていけばと思います。

 参考にならない参考

ということで、自分も過去に作った残骸があるので紹介させてください。

manzyun/Setsuna: Micro SNS or BBS, maybe.

「基本、投稿したら6時間後に投稿が消える」
というものになる予定でした。フロントは未着手、サーバーサイドも正常に動くか怪しいです。が、なにか参考になればと思います。

ちなみに Python,Flask,MongoDBで作りました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

生産性や情報面からRuby on Railsで進めるのがいいかと思います。
Ruby on RailsではRailsチュートリアルというものがあり、とてもいい資料が無料で公開されています。

書籍ですと、以下の3冊がおすすめです。

またRuby on Railsでは豊富にgem(簡単に様々な機能を利用できるライブラリ)が公開されているので、ユーザー認証機能なども簡単に作ることが出来ます。

どのような手順という質問に関してですが、まずは必要な機能の洗い出しをして、様々なwebサービスを見てみてはいかがでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

個人的におすすめなのは、phpのフレームワークである「CakePHP」だと開発しやすいです。
CakeにはCRUD(Create(登録)、Read(参照)、Update(更新)、Delete(削除))が簡単につくれるし、Auth(認証)コンポーネントなど、便利なコンポーネントも用意されているので、おすすめですね。

まずは一度参考書籍をやってみる事をお勧めします。
その本の中に簡易掲示板を作る項目があるので、
ここから仕組みを理解して、オリジナルで作れますよ。

現に、僕自身、去年の8月くらいからphp(プログラミング)に触れて、
10月くらいからCakeを利用して、「新規会員登録->ユーザー認証->認証ユーザーでの記事投稿」という掲示板システムを独自に開発することができました。

自身の環境
ローカル開発環境:XAMPP
db:MySQL(XAMPPなのでphpmyadminが用意されています)
CakePHP v3.0(現在はv3.6)

参考
リンク内容

参考書籍
リンク内容
※若干誤字脱字があるので注意
※インストールはComposerからすると書いていますが、じつはComposerを使わなくても
出来ましたので、参考までに載せておきます。当時、コマンドラインからしようとしたら、かなりハマってしまったため、この方法を取る事にしました。
リンク内容

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/14 13:35

    「Composer」ですね。

    キャンセル

  • 2018/05/14 13:49

    ご指摘ありがとうございました。
    記事の方修正済です。

    キャンセル

  • 2018/05/15 08:23

    クックブック(公式)にも簡易掲示板作成はあったり

    キャンセル

-7

同じくsnsを勉強中です

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/15 13:36

    回答になってませんよ。
    途中で投稿されましたか?

    キャンセル

-8

アプリケーションのマーケティングからはじめて、要件定義、設計、コーディング、テスト、リリースの手順で良いかと。

追記
ちょっと運用に関する記述が抜けていました^^;
せっかくナンで追記しときます。

SNS は運用がキモです。かなり負荷が高いので、管理方針や規約等を十分に検討することが必要です。
マーケティング段階で気がつくとは思いますが、各社とも規約でかなり制限を入れています。
法的にも縛りがあるので、対応できる準備(法的な相談のできる体制)も整える必要があります。

また、管理画面の設計も負荷を大いに左右するので、きちんと設計したほうが良いです。
こちらは調査が難しいので、SNS の OSS を参考にすると良いです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19200questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • JavaScript

    15309questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Ruby on Rails

    6749questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Swift

    6700questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • MySQL

    5517questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。