個人開発のWebサービスを運用してから1年経ったので現状といろんなこと

スポンサーリンク
Pocket
LINEで送る

去年の8月辺りに個人で作っていたWebサービスをリリースして一年が経った。

このブログでは散々紹介していたがもう一度どんなサービスなのかを説明。

 

運用しているのはブックマークサービス

作ったサービスはBitPumpkinというブックマークサービス。

トップページはこんな感じでメールアドレスとfacebookアカウントでログインできる。

Qiitaのストックをインポートできるプログラマ向けのブックマークサービスなのだが実はGithubアカウントでのログインはまだ実装していない…

ロゴはクラウドソーシングで作ってもらった。

 

作った経緯は、ブックマークを管理したい、情報収集のため、ポートフォリオ。

僕は休日でも仕事後でも一人でプログラミングの勉強をしている。

参考になった記事はがんがんブックマークする、ブックマークしないと同じエラーが出たとき、後でまた見たいとき、探すのがめんどうだからだ、それにスマホでも別のPCでも見たいし。

それと僕以外のユーザーが使ってくれれば自分じゃ見つけ出せない情報にたどり着けると思ったから。

あとは、ポートフォリオ、フリーのエンジニアなので実際にこんなの個人的に作ってますよとアピールができる。

 

機能説明

簡単な機能説明。

・ブックマーク

記事を保存ができる

・タグづけ

保存したブックマークにタグをつけられる。ソート・検索用

・フォロー

ユーザーをフォローできる。フォローユーザーのブックマークした記事やコメントがタイムラインに流れる。

 

とりあえず、機能はこんな感じ。あんまりやれることが多いと使い方が複雑になってしまうのでシンプルにしています。

これがブックマーク一覧

 

技術的な話

サーバーはさくらVPSで運用している。

メモリ2GBのSSDのサーバー、DBの容量も大したこと無いのでさくさく動く、これなら月額2000円くらいで運用できる。

昔作ってた別のWebサービスではAWSを使っていたがこっちの方が圧倒的に安い、その分環境構築がめんどくさいけどね。

選べるプランとOS!さくらのVPS

 

アプリケーションはSPAというGmailとかslackみたいなやつ。

DOMを持たないで仮想DOMという文書構造をjavascriptで持ち、ページが変更される時はjavascriptで必要な部分を変更するというもの。

通常のアプリケーションであれば、サーバー側でDOMを構築するがこれはjavascriptだけで遷移させていくのでクライアント側でURLを切り替えていく。

SPAはjavascriptでDOMが構築されるのでクローラーがやってきても空のページになってしまう。クローラー用にレンダリング処理を書かないといけないのだが、認証外のページをSPAにする必要はないと個人的には思っているので認証外のページは通常のサーバーサイド側でレンダリングしている。

 

フレームワークにはVuejsを使っている。

サーバー側はRuby on Railsを使っていて、jsのビルドはgemを使わず、nodejsでビルド周りを行い、railsのアセットパイプラインの対象フォルダにビルド済みのファイルを吐き出すようにしている。

ビルドにはbrowserifyを使っているwebpackの方が利用率が高そうだがこっちの方がシンプルで簡単なのでbrowserifyにしている。

 

ジョブ管理にはsidekiqを使っている。

Qiitaのストックのインポート機能はバッググラウンドで行っているがそのジョブの管理はsidekiq。インストールすると管理画面も付いてくるので便利。

技術的な話はこれで終わり。

 

運用してみたどうだったか

さて、一年ほど運用してきてユーザー数は51人ほどになった。

少ないなーと思ったかもしれないが、僕としてはかなりうれしい数字。

最初の2ヶ月ほどは登録者は僕だけでしたが、時間が経つに連れてちょっとずつ増えていきます。

やった宣伝活動ですが、ブログに新機能について書いたり、宣伝サイトみたいなとこでサービス紹介をしたくらい。

最近GoogleAdwordsの7500円分のクーポンをもらったのでそれを使ってみています。

キーワードが悪いのかニーズがないのかクリック率は低め

 

ユーザーもヘビーユーザーは僕くらい、僕は業務中に開きっぱなしで気になった記事をがんがんブクマしていくのですが、他のユーザーは1,2日に一回ログインしてブックマークしてくれたりという感じ。

あとは、登録だけして終わりというユーザーもちらほらいます。

やっぱり登録ユーザーを定着させる施策が必要そう。

 

難しかったこと

このサービスの機能はシンプルで簡単なものなのでぶっちゃけプログラミング的な難しさはあんまりないです。

スポンサーリンク

強いて言うならフロントエンドが面倒くさい。

通常ならコントローラからビューに変数渡してそれを埋め込んでレンダリングして終わりですが、S

PAの場合はここでAPIを叩いてデータを初期化して、、、

コンポーネントはこう分けて、、、

データを取得する間では表示しないとか、、、

クライアント側でやることが多くめんどくさい。

 

あとは、デザイン。

やっぱりデザインが難しい。

いろんなサービスを参考にして今の形になりましたが、初期のデザインは本当にひどい。

今見るとすげーダサい!!!

 

これが今の。大分ましになった気がします。

 

今後やりたいこと

やりたいことはいくつかあるんですが、本業が忙しくてなかなか取りかかれていない。

・ページのスクリーンショット

今のページのサムネイルはOGPのサムネイルを保存しているんですが、OGP設定していないサイトもあるのでその場合はスクリーンショットを保存したりとかしてみたいです。

 

・ページの解析

ページの概要はmetaタグのdescriptionを取っているんですが、ここもページを解析して本文をまるっと抽出出来ればなと思います。ページの解析アルゴリズムがdivとかをブロック分けしてスコアづけして本文を見つけ出すとかそんなことをどっかで見たのでこれもまためんどくさいけど楽しそうな作業。

 

・タイトルからタグを予測

タグ付けがめんどくさいのでタイトルから自動でタグ候補を出してくれる機能。

「Djangoで管理画面のテキストエリアをテキストエディッタにしたい時にはdjango-cheditorがおすすめ」

例えばこれだったら、「Django」「django-cheditor」「テキストエディッタ」が出てくるとか、最初は形態素解析使えばいいかなと思ったんですが、それだと全単語が出てきちゃうんでだめでした、話題の機械学習とかを使うんですかね?

 

・タイムラインのフォロー機能のDB設計

現状の仕組みは、フォローテーブルがあってユーザーテーブルとjoinして参照しています。

この設計だとユーザーが増えたときにメモリに載らなくなるので変えないといけないみたい。

ここらへんの仕組みに詳しい人がいたらぜひ聞きたいです。

 

とりあえず、やりたいことはこんな感じ!

個人サービスは自分がやりたいことをすぐ実践出きるのでめっちゃ勉強になります。

今プログラミングを勉強している人とか覚えたい人はWebサービスやらアプリをいきなり作って見るのがおすすめです。

この記事を読んで使ってみたくなった人は登録してみてください

BitPumpkin – ブックマーク管理サービス