皆さんこんにちは。2015年くらいにアートを投稿するコミュニティをWebサービスを作るも、PHPのセキュリティが気になり過ぎて、すぐにクローズしてしまった小幡です。今思うと非常にもったいないことをしたなぁと思います。
あれからもう7年も経った現在2021年なのですが、今はranky(ランキー)というWebサービスを作っているので、その話を書こうと思います。
既にオープンしている訳ですが、現在も鋭意アップデート中のrankyは以下リンクよりご覧頂ければ幸いです。
rankyとは?
rankyとは、ランキングコミュニティサイトです。
主体にあるのは「ランキング」ですが、そこから「コミュニケーション」が取れる場にしたいと考えています。話のタネとして「ランキング」が使われるのが理想形です。
現在(2021年10月)はツイッターのトレンドを1時間に1回集計したデータを元にランキングを表示させ、そのランキングのトレンドについてコメントを付けたりフォローすることが出来ます。
収集されたデータを年月日単位で表示させたり、1年間のトレンドワード、ハッシュタグを全て集計しランキング表示させたり、ユーザー登録したユーザーがワードをフォローしている合計数で作成されるフォロワーランキングなどを閲覧可能です。
ランキングの収集は本家ツイッターAPIの使用申請を行い、APIを利用してトレンドデータを収集しています。
なぜ作ったのか?
テレビを見ていると番組内で「〇〇というワードがツイッタートレンドに入りました!すごーい」という声を聞くようになり、「ツイッタートレンドってどういう仕組みで集計されているのか?」と「みんなの反応は?」という疑問が浮かぶようになりました。
本家ツイッターのトレンド機能から、そのワードに関する呟きを覗くことはできるのですが、何千男万ツイートされているワードが全て表示されるわけではないようですし、コミュニティ内で会話している訳ではないので、独り言の集まりの様な状態になっています。
それはそれで面白いのですが、やっぱり人と人とのコミュニケーションの場があった方が個人的に嬉しいなぁという願望からrankyを作るに至りました。
本家ツイッターで何か呟こうとしてもネタがないからツイートできないなぁと感じたり、やっぱりコミュニティ的な場所があっても良いよなぁと考えて居ました。
作ってみた感想
今できる機能は、ランキング表示、ユーザ登録、トレンドフォロー、コメント、など所謂データベースを使った基本的なCRUD機能がほとんどなのですが、なかなか時間がかかるなぁというのがまず第一の感想です。
1つの処理、例えば「ユーザ登録機能」を作成しようとした場合、当然「参照・更新・削除」の機能が必要になってきます。まず単純に「登録」機能を追加するだけでも、データベースはどんな設計になっているのが良いか?セキュリティは大丈夫なのか?そもそもサーバの容量は大丈夫か?など考える事がたくさんある上に、フロントエンドはほとんど作ったことがないに等しいので、そっちも自分で作らないといけないのかぁと天を仰いでしまうのです。それが 「参照・更新・削除」 の分も作らないといけない・・・。なかなか大変です。
もちろん動作確認も入念にしなければなりません。しかし、天を仰いだ後にテストをするのは、さらに辛いものがあります。
そして作れば作る程、「あの機能も必要だ」と次から次へとやらなければならない事が増えてくることに気が付きます。これは勉強したことによって新しい世界が見えてきていると前向きに考える事もできるのですが、なかなか出口が見えないので大変です。
とにかく出口が見えないのでモチベーション維持も大変です。
作って良かったこと
「大変だ、大変だ」とネガティブになっていても仕方がないので、作って良かったこともたくさん書いていきます。
まず、Webサービスを全て1人で作る機会は、仕事ではあり得ないので、知らないことや、わかっていなかったことがたくさん見つかり、その穴埋めの学習が出来たと感じます。特に環境構築などのインフラ整備系の仕事はわかったようでわかっていないことが多かったです。
リレーショナルデータベースに詳しくなったと思います。あまり触れてこなかったRDBMS(リレーショナルデータベースマネジメントシステム)について全て1人でやるのはセキュリティ的に不安要素がたくさんあったので、本を買って勉強しました。それまではデータベースの正規化の意味すら知りませんでした。というのも、キーバリュー型のデータベースに慣れ親しんでいたからです。RDBMSについて学習したことでキーバリュー型の見えていなかった知識についても穴埋めすることができました。逆によくRDBMSを知らずにキーバリュー型を触れていたなぁとすら思います。
自分の知識が浅い事を再認識できたことは良いことだと思います。どうしても現状維持的なスタンスになってしまうので、使っている技術の事ばかりに目をやってしまうのですが、まったく別領域の技術に触れる事で、まだまだエンジニアの世界は広いなぁと感じました。今の自分に満足せず、もっと努力しなければならないなぁと思いました。
1日の重みを知ることができたと感じます。30歳未経験からエンジニア的な記事も書いているので、それなりに若くない年齢から新しい事を始め、それを継続することは難しいことだと考えています。そして1日にできる作業はごくわずかで、その数時間、数十分を大切にしなければならないなぁと強く感じます。最近の課題でもあります。
rankyの今後について
rankyはまだまだ出来たばかりのサービスですし、機能もまだほとんど実装できていないので、まだ出来たとすら言えないかもしれません。このサービスは長期的に根気強く成長させなければならないと考えています。
まずは自分が使いたいなぁと思う理想のコミュニティーサイトにすることが当面の目標です。私はランキングを見るのが好きなので、共感できる人と様々な意見交換などができたら嬉しいなと、夢見ています。
少し話が横にぶれますが、「動画配信サービス」のランキングがもう少しユーザ目線になったらさらに動画視聴が捗るのになぁと考えていたりします。アニメばかり見ているとレコメンドがアニメだらけになってしまうのも悲しいので、ユーザが各々点数をつけたり、離脱率を表示させられたら面白いなぁと考えています。
これをrankyに落とし込むならば、「おすすめ映画ランキング」になるのかもしれませんが、それだけで完結せず、たとえばツイッターではどのくらいツイートされた映画なのかも集計され表示されていたら、面白いなぁと考えています。
エンジニアにとって自分の考えた通りにコードを書いたり、サービスを拡張できることは、とても嬉しい事だと考えて居ます。せっかく身に着けたこの技術を使って、よりよいサービスを提供できればいいなぁと考えています。
よければ以下リンクよりユーザー登録して遊んでみてください!あと、感想も頂ければ嬉しいです。