社畜とはいってもいわゆるホワイト企業に勤めており、毎日19時には家にいてオナニーをしている生活を送っております。
ですので、比較的時間には余裕があり、周りから「プログラミングでも学んでみれば?」と提言されたので、せっかくなので勉強がてら作ってみました。
ちなみに私は非技術職で、高校大学ともに文系の人間です。まぁやればできるよね。
コンセプトはいかに簡単にエロ画像のまとめサイトを作るか、ということに注力しました。
もちろん自分が管理画面上からシコシコ作ってもいいのですが、せっかくなのでみんなで作れたほうがいいじゃん!ってのがことの発端です。
大学の同期に何人か理系の人間がいたのでいろいろと助けてもらえました。
言語はRuby on Rails、OSはubuntu14.04、RDBはMySQL5.6を基本とし、後で述べますが他にRedisやVarnishなどのツールも使っております。
いまのところ、サーバーは1台体制ですが、今後アクセスが急増した時に備えるため、NFSマウントやロードバランサー、MasterSlaveによるレプリケーションには少なくとも対応予定です。
この辺は少し触れる予定です。
なおサーバー会社は海外のLinodeを使っています。なんでAWSじゃないの?と思われるかもしれませんが、単純に費用対効果の話になってきます。
それこそ企業で行うのであれば、AWSは機能面もすごいし、ターミナルでコツコツおこなっていたことがポチポチできちゃって、すごーいんですが、いかんせん高い。
LinodeはいわゆるクラウドというよりもよりVPSに近いと思います。ただ海外でのシェアも高いし、価格もリーズナブルなので私はこれを使ってみることにしています。
Sakuraはいいんですけど、エロには少し厳しいとのことなので。。。
デザインというか、UIに関してはかなり気を使って作りました。いかに簡単に画像を選択して、まとめるかが鍵になってくるので.。
なので、
画像サイトをいくつか選択→タイトルと説明とカテゴリーをいれる→画像を選択→送信
の流れで簡単にアップできるようにしました。洗練するポイントはたくさんありそうですが、とりあえずはこれで行こうと思います。なおスマートフォンにも対応をしております。
なお、こういうサービスを作る時のポイントってやはりjavascriptを使い過ぎない、ということだと思うんですよね。
しかたがないんですけど、イベント駆動型の言語ってどうしてもコードが煩雑になる傾向があります。大きな会社できちんと管理できるようなコスト(というか時間)をかけられる会社ならいいんですけど、そうでないならまずjavascript無しでのプログラムを考えてみる、どうしても必要であればjavascriptを使う、みたいな。
私も今回はjavascriptは一部でのみ使用しております。
ところで全体のイメージとしては、はてなさんを意識してみたのですが、デザインセンスの無さからか、全く別のものができてしまいましたwww
非同期プログラミングってご存知でしょうか?私はRubyから入った立場なのでピンと来るまでだいぶ時間がかかりました。
Rubyとかの同期プログラムってのは上から流れてきて、上の処理が終わるまで次の処理が進まない、というものになります。
一方非同期プログラミングは上からの処理を待たずに、どんどこ次の処理を行います。ちょっと乱暴な言い方ですが、だいたいのイメージはつくと思います。
実はJavascriptも非同期プログラミング言語の一種でして、たとえばなんかどっかのボタンを押して処理が進んでも、他の動作をしようと思えばできますよね?Gmailがブラウザ上で受信をしていても、メールを書くとかの動作はできるわけです。つまりこれは処理を待たずに、別の処理が走っています。これが非同期プログラミングです。
そんで、なんでこんな話をしたかっていうと、今回の仕組みって画像をダウンロードしてきて、サムネイル化するわけですけど、実はダウンロードには時間がかかります。ヘタしたら2分くらい時間がかかるケースも有り、ボタンを押してからそんな時間待ってられません。
と、ここで上述の非同期プログラミングが効いてくるわけです。とりあえず処理は別のところに投げるから、トップページを表示しておくね。こんなことができます。
やり方は実はたくさんあるのですが、Rails4.2からActiveJobといって、それまでの様々なライブラリに枝分かれしてきた機能をカプセル化したものになります。とはいってもバックエンドには一応ライブラリを置く必要があり、私はsidekiqというライブラリをそこに置きました。
他にもdelayed_jobとかなんかいろいろあるので、ぜひ見てみてください。
下に箇条書きしてみますね。
他にもMySQLのクエリキャッシュとか、Apacheのチューニングとかやることはありますが、この辺は正直Varnishで。。。というのが正直なところです。みんな使おうよ、Varnish。
つくっても人がこなければ仕方がありません。そこで大事になってくるのが、SEO(SearchEngineOptimization)です。
昔はとにかくリンクを張っていればそこそこ検索順位が上がったのですが、最近は賢くなってきたのでなかなかそうはいきません。
今はとにかく良質なコンテンツと、ソーシャルメディアでの拡散ですね。私は怠惰な人間なので、みなさんに良質なコンテンツを作ってもらうと考えておりますwww
良質なコンテンツを書いてもらうにはやはりインセンティブが必要なので、Naverみたいに広告タグを貼ることができる機能でも作ろうかな、なんて思ってます。
今後増やしたい機能としては
今はまだまだ機能が少ないんですが、今後どしどし増やしていく予定なので、応援よろしくお願いいたします!ご意見いただければ嬉しいです!
http://anond.hatelabo.jp/20151008191422 こういうのなんて言うんだろ、増田のステマだからマステマか。 まぁシステムの内容は間違ってはいないと思うけど。
ステルスしてないあからさまな宣伝をステマっていう人増えたね まあ、それとは別に規約違反くさいので批判されてしかるべきだとは思うけど
んー、エロサイトを作るシリーズの宣伝ってだれかまとめてたりしないんだろうか。