PHP
Webサービス

平成最後はじめてのWebサービスを作った

大学4年の春、就職活動をはじめて1次面接を5社くらい落ちたところでなんとなくはじめてWebサービスを作りたくなったのでhtmlもcssもJavaScriptもPHPもろくにわからない状態で0から独学で勉強をし1ヶ月弱で「Ash00le.Tk」というwebサービスを作ってみました。

top


なにができるのか


エロ動画を探してお気に入り

Fanza(旧DMM)、Avgle、Pornhub、Redtube、Youpornなど有名どころからエロ動画を引っ張ってきてランダムに表示します。お気に入りの動画があればお気に入りすることでマイページからいつでも見ることができます。キーワードで検索することもできます。


URLから保存する。

GoogleやTwitter、Facebookで自分好みのエロ動画を見つけたときにURLを入力することで保存をし、同じようにマイページでいつでも見ることができます。


どんなキーワードで検索されてるのか見る。

どんなキーワードで他のユーザーが検索したかを見ることができます。


他のユーザーがお気に入りした動画を見れる。

他のユーザーがどんな動画をお気に入りにしたか見ることができます。


なんで作ろうと思ったか

ふとしたときに「エロ動画さがすのってめんどくせーな」と思い、できるだけ効率的にエロ動画を探したいと思ったことがきっかけです。

また、どこかの記事で「日本人はポルノが大好きで、本名や顔を公開するのを躊躇う、ITリテラシーが低い」というのを見て「これだ!!」と思いこれらの要素をできるだけ詰め込んだWebサービスを作ろうと思いました。


サービスの名前に意味はない

Ash00le.Tkに特に意味はないです。適当です。

Ash00leっていうのは「asshole」をもじったものです。


HTML,CSS

Bootstrap4を利用しテンプレートも利用しています。正直いまいちわかってない部分もあるのでこれからも勉強が必要です。


なんでPHPか?

いろいろなWebサービスを見ているとわりとRuby on Railsを使っていると思います。なので普通に考えたらRubyがいいのかなと思ったんですが、そもそも今までhtmlやcssすらろくに使ったことない自分はフレームワークもまったくわかってなかったので「なにか1つのものを作るのにものすごい時間がかかる」と思い、とりあえずPHPを選びました。というのも個人的にRubyを使うのはRailsありきだと思っているのでフレームワークもしらないやつがRuby使ってもしょうがないと思ったからです。違ったら教えてください。

フレームワークに関しては「必要になったら使お」くらいの気持ちでした。

大学ではJavaをメインに使っていたので最初はPHPに戸惑いましたが慣れたら簡単に書けていいと思いました。


問題点


1. 著作権、商標権の問題

サイト内で当たり前のようにFanzaやPornhubなど有名な海外サイトのロゴ画像を利用しています。著作権、商標権的にアウトなんじゃないかと思いましたが


僕は、”比較口コミサイト”での、ロゴやブランド名の掲載、という部分では、”商標権侵害”に当たるかどうかは、消極的な意見です。なぜなら、商標というのは、そのロゴ等の掲載により”顧客吸引力”が発揮されているかどうか、が大切なポイントだと思うから(≒消費者が、そのロゴを目印に買い物をするかどうか)。比較サイトは、決して、掲載ロゴの1つを見て、”あ、このサイトは、○○というロゴの企業が運営しているのね”とは、消費者も勘違いしないでしょ?


これ読む限りでは別にいいんじゃないかと思いましたがよくわからないのでよく調べます。


2. セキュリティ

クロスサイトスクリプティングやクロスサイトリクエストフォージェリ、SQLインジェクション、クリックジャッキングなど有名な攻撃に関しては簡単に対策をしているつもりです。またクロスサイトリクエストフォージェリに関してGETも対策する必要があるのかないのかいまいちわからないです。GETはキーワード検索とページ指定にしか使っていないのでなんとなくいらない気がしてますが、浅はかな考えだと思うのでよく調べます。

どこかで「簡単にwebサービスを公開するな」みたいな記事を読みましたが、なにごとも経験だと思ったのでリスクを承知でフレームワークは理解が追いつくまで使わずに調べながら自分で実装しました。


Ajaxにおけるクロスサイトリクエストフォージェリ

「Twitterはセッション単位でトークンを使いまわしている」という記事を読んだので今の段階ではセッション単位でトークンを使いまわしています。ただ、その記事自体が3年以上前であることと、自分がTwitterのソースコードみた限りでは更新するたびにトークンが変わっているように見えました。なのでセキュリティ的に問題があるのではないかなと思ったのですがよくわからないのでよく調べます


これからの課題


1. フレームワークを使う

セキュリティの問題においてもフレームワークを利用したほうがいいのはわかっているので勉強をして移行させたいです。フレームワークを使わない実装は「脆弱性の温床」らしいので1秒でもはやく実装したいです。


2. テンプレートエンジンの必要性がいまいちわかってない

勉強不足のせいですべてinclude関数で済みそうって思ってしまっています。


これからやりたいこと


ユーザーページを作る。

いまいち理解してない部分はありますが、フレームワークのルーティング処理を利用すれば簡単に実装できると思っています。Slim3のような軽量フレームワークにするか、いきなりLaravelに手を出すか迷っているところです。フレームワークについてわかっていない部分があるのでまずはSlim3で基本的なことを簡単におおまかに理解するのも手だなと思っています。


ユーザーが好みの動画を推測する。

ポルノサイトのAPIではタグやカテゴリーが指定できるので、お気に入りしたエロ動画のタグを保存しておくことで、ある程度その人のお気に入りの傾向がわかり簡単に推測できるのではないかと思います。

また、保存したエロ動画のサムネイルを学習させて他のユーザーが保存しているエロ動画のサムネイルから類似しているサムネイルを出力してみるのは面白いかなと思います。しかしPHPでは機械学習のライブラリがあまりないので多層パーセプトロンならまだしも本格的にやろうとするとPython使わなきゃいけないのかなと思います。ただ学習データがないとできないので実装したからといってすぐに利用できるものではないかなと思います。


JavaScriptを勉強する。

UI・UXを高めるのはJavascriptは欠かせないものだと思います。しかしまだまだ勉強不足なので「おそらくJavascriptで実装できるんだろうけどどうやるのかわからない」ことが多いのでこれからも勉強したいと思います。


まとめ

おそらくいろいろな問題があると思いますが、はじめてのWebサービスということでお手柔らかによろしくおねがいします。