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

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

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

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

PHP

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

Ruby on Rails

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

JavaScript

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

Swift

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

Q&A

解決済

8回答

3739閲覧

自作SNS開発について

Ryan

総合スコア34

MySQL

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

PHP

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

Ruby on Rails

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

JavaScript

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

Swift

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

3グッド

5クリップ

投稿2018/05/14 03:22

前提・実現したいこと

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

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

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

aaaaaaaa, keita135👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答8

0

ベストアンサー

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

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

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

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

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

投稿2018/05/14 03:56

編集2018/05/14 03:57
miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2018/05/15 03:34

基本方針に同意します。完全自作は基礎の積み重ねが大切ですね。 > フレームワークを利用して高速かつセキュアなサービスに強化 これは出来るだけ自作を希望する質問者さんからすると、フレームワークを自作する方向性も…。 (余談) クライアントサイド/サーバサイドの境界線が分からず、出来ないことをやらせようとして躓く人が多いイメージなので、「HTTPの理解」がどこかで必要かもしれません。 (Swiftでネイティブアプリ作成するなら、なおのこと)
guest

0

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

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

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

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

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

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

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

投稿2018/05/14 04:31

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/14 23:20

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

2018/05/15 04:38

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

0

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

投稿2018/05/14 03:31

編集2018/05/14 03:40
yambejp

総合スコア114585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

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

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

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

まとめ

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

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

参考にならない参考

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

manzyun/Setsuna: Micro SNS or BBS, maybe.

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

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

投稿2018/05/14 05:10

manzyun

総合スコア2244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

投稿2018/05/14 03:56

kenny_sayama

総合スコア1036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

投稿2018/05/14 03:32

編集2018/05/15 03:50
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

同じくsnsを勉強中です

投稿2018/05/14 22:25

syosinsyaprogra

総合スコア67

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/05/15 04:36

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

0

個人的におすすめなのは、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 04:34

編集2018/05/14 04:48
DaisukeMori

総合スコア217

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/05/14 04:35

「Composer」ですね。
DaisukeMori

2018/05/14 04:49

ご指摘ありがとうございました。 記事の方修正済です。
退会済みユーザー

退会済みユーザー

2018/05/14 23:23

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問