【AWS】知識ゼロから理解するRDS超入門
AWSのデータベースサービス「Amazon RDS」を初心者にもわかるように解説します。未経験には難しいMultiAZ構成やレプリケーションは、マスター/スレ...
ゆざ(@yuzajo_plan)です。
プログラミング初心者だったぼくは、このサービスをつくる以前はプログラミング入門書のコードを書き写したり、progateのレベルを上げたりしてプログラミングの勉強を楽しんでいました。
ですが、やはり実際に自分のアイディアをWebサービスに落とし込んでこそ、Webエンジニアの醍醐味ではないでしょうか!
ぼくはまだWeb系言語(HTML,CSS,JS,PHP)歴2ヶ月でですが、このサービスを開発してはじめて、本当の「プログラミングの楽しさ」に気づくことができました。それは、自分のアイディアを自分の手でカタチにできる面白さです。
ここでは、そんなぼくのWebサービス処女作「Tmeet」についてお話できたらと思っています。
「Tmeet」とは、twitter上で自分にあったユーザーを見つけることをサポートしてくれるWebサービスです。
あるとき、MIYABI Labをどうやったら、より多くの人に知ってもらえるのかと考え、twitterで普及活動を行っていました。
その際に、「そもそもtwitterで全く知らないユーザーから自分にあった人・自分がフォローしたい人を見つけるのは難しい」という課題に当たり、そんな不便さが少しでも解決できたらという思いでこのサービスが誕生しました。
URL | https://tmeet.space/ |
Report | https://miyabi-lab.space/service/tmeet |
Create-Start | 2018-04-25 |
Create-Finish | 2018-06-29 |
Release | 2018-06-29 |
Produce | 湯座丞太郎 "ゆざ" |
Web Design | 湯座丞太郎 "ゆざ" |
Logo Design | -- |
Image Design | -- |
HTML/CSS/JS | 湯座丞太郎 "ゆざ" |
PHP Programing | 湯座丞太郎 "ゆざ" |
Python Programing | 湯座丞太郎 "ゆざ" |
Supporter | 加藤雅大 "みやび" |
名前の由来は、「twitter」と「meet」(Twitterでの出会い)を掛け合わした実に単純なものです(笑)
ここでは、その特徴と使い方を簡単にご紹介します。
上述した通り、Tmeetとはtwitter上で自分にあったユーザーを見つけることをサポートしてくれるWebサービスです。
具体的には、あるユーザーのフォロー(フォロワー)の一覧を、いいねを押す回数順やフォロワーの多い順などに並び替えることで、自分がフォローしたい人を見つけやすくすることができます。
さらに気になるユーザーを見つけたら、
といったより詳細な情報をユーザーごとに見ることができます。
最後の「ツイートランキング」とは、直近で反響(いいね・RT)の大きかったツイートをランキング形式で見ることができます。
この機能を使うと、そのユーザーがどのようなツイートをしているかや、どれくらい発言力があるのかを知ることができます。
ユーザー探しはこのような流れで行います。
あなたの一目置くユーザーのID名を入力する
その人のフォロー・フォロワーのどちらかを選択する
あなたの気になるソートを選択する(いいねを押す回数・フォロワー数)
上位表示されているユーザーをもっと詳しい情報を見ることでフォローするかを決める
これを上手く活用することで、twitterで全く知らないユーザーから自分にあった人を見つける不便さが、少しでもなくなるのではないかと願っています。
ぜひ一度使ってみて、ご自身でその便利さを体感していただければと思います。
このサービスの1番の目的は「自分にあったユーザー探し」ですが、ここでは他にもつかえる活用法について紹介します。
Tmeetでは、自分が他のユーザーと比べてどのような立ち位置なのかを数値で確認することもできます。
自分のID名を入力して、フォロー・フォロワーではなく、「本人」という選択肢を選んでください。この時、ソートは関係ないので特に選ぶ必要はありません。
これで自分がどのくらいの頻度でつぶやくのかという分析や、平均どのくらいいいねをもらえているのかという発信力など、普段あまり意識していないことを見える化することができます。
自分の発信力をあげたい人や自分のツイートを分析してみたい人たちはこれらの情報から自分のツイート分析をしてはいかがでしょうか。
ちなみに「本人」は自分自身でなくても使えるので、ピンポイントで気になるユーザーについても検索することができます。
Tmeetを活用すれば、すでにTwitterをやめてしまっているユーザーや、極端にアクションが少ないユーザーを見つけることができるので、フォローの整理にも使えます。
例えば、自分のID名を入力して、「フォロー」を選択し、ソートは「いいねを押す回数」を選びます。
そして、1番後ろから見ていくと、いいねをあまり押さない人が見つかります。
その中から、ツイート頻度が極端に少なかったりする人はアクションが非常に少ないことがわかります。
そのようなユーザーはTwitterをやめているか、あまりアクティブには活用していない可能性があるので、フォローの整理の対象になりやすいです。
Tmeetの利点は全く知らないユーザーとも出会える点です。
つまり、誰が発言したということは関係なく、純粋に自分の良いと思ったツイートを見つけることができます。
そして、フォローせずともいいねを押すことで、いいねを押された側もあなたのことを認識する機会が増えます。
このようにして言わば戦略的に自分のことを知ってもらえます。
もし、もっといいねやRTをしてもらいたい、発信力を高めたいと考えている人はまずは自分からアクションしてみましょう。
このサービスを開発するにあたって最も苦労した点は、twitterAPIの制限でした。
twitterAPIとはtwitterの機能を他のサービスでも使用できるようにオープンするインターフェイスです。
これを使うことでサービス内でtwitterのフォローを行なったり、いいねを押せたり、タイムラインの情報などを取ることができます。とても便利なツールですが、これには使用制限があります。
ここでは、ぼくが直面したtwitterAPIの制限との戦いの記録を記していきます(笑)
twitterAPIでは、ある特定のフォロワーの基本情報を取得するfollowers/list(GETメソッド)は15分間にリクエスト回数が15回と決まっており、しかも、1回のリクエストに200人のユーザーしか取得することができません。
つまり、15分間に3000人の情報しか取得することができないのです。
これだとフォロワーが3000人以上いる人には対応できないし、3000人フォロワーがいるユーザーを検索すると15分間は次のユーザーを検索することができないのです。
これでは、いくら便利なAPIとは言っても使い物になりません。
この課題を解決したのは、使用するAPIの変更でした。
はじめに、followers/ids(GETメソッド)でフォロワーのID情報のみを取得します。(API制限は15分間に15回=1回に5000人取得可能)
その後、users/lookup(GETメソッド)を使い、指定したユーザーの情報を取得します。(API制限は15分間に900回=1回に100人取得可能)
これにより、15分間に取得できるユーザー情報はMAX75,000人となります。先程の方法と比べると取得できるユーザー数は25倍です。
解決案はシンプルですが、効果は絶大な方法でした。
はじめは全員のタイムラインをすべて1回で取得しようとしていました。
しかしこれだと、APIの使用回数が増えてリクエストの長時間かかってしまい、結果として300人のフォロー情報を見るのに5分近く待たなければいけませんでした。
この課題を解決したのは、データ取得の細分化です。
一度に全部のデータを取得すると膨大な時間がかかってしまいますが、詳細データは後から気になるユーザーのみボタンを押すことで閲覧できるというカタチに変えることで圧倒的な時間短縮に成功しました。
ここにはAjaxを用いた非同期通信の技術を活用しました。
実際に使用する際は、一気にユーザーの詳細データを見ることはなく、1人ずつであるという点に気づくことができたのが大きな成果です。
twitterAPIでは、現状1000人を超えるユーザー数を検索するのに1分ほど待たせてしまいます。
これはAPIを使う上のリクエスト速度の関係でどうしても超えることのできない壁となっていますので、申し訳ありませんが今は待っていただくしかありません。
しかし、より良いアイディアを見つけることができた場合、もっと時間を短縮することができるかもしれません。
ぼくはプログラミングを始めてからまだ日が浅いですが、はじめてのWebサービス開発をさせていただいて感じたのは、やっぱりエンジニアは超楽しいということでした。
この1つのWebサービスを完成させるためには、HTML, CSS, JavaScript, PHP, Python, Webデザイン, twitter API, AWSとたくさんの技術が集結させる必要がありました。
新しいことをやり続けること、そして、自分のアイディアを自分の手でカタチにすること、プログラミングを書くこと、めちゃくちゃ楽しいと痛感しました。
「自分のアイディアを自分の手でカタチにすること」ができるのはエンジニアの特権なので、これからもどんどん新しく良いサービスを作っていきたいです。やっぱりエンジニアは超楽しい。
今回、Tmeetをリリースした際にぼくのtwitterアカウントで告知させていただきました。
Webサービス第1号!Twitterでユーザーのフォロー(フォロワー)から自分にあった人が探せるサービス「Tmeet」をリリースしました!
— ゆざ@Tmeetつくりました (@yuzajo_plan) 2018年6月29日
ツイート頻度や反響の多いツイート・平均RT回数が簡単にわかります。
アドバイスもお待ちしています!
シェアでご支援お願いしますhttps://t.co/7ge4HJR7RJ
普段は平均いいね回数:23回/tweet、平均RT回数:3回/tweet(Tmeet調べ)でしたが、それらを遥かに超える反響を受けて3.5万回以上のインプレッションと3000回以上のエンゲージメントを獲得することができました。
そして、なによりたくさんの方々に嬉しい応援メッセージを受けることができました!
まさに探してたサービス!今までおすすめに出てきたのをポチポチして探してたのが一気に解決しそう!前職が全くスタートアップと関わりがなかった分野なので大助かりです! https://t.co/sKPUSyRhDG
— けんけん (@kkita920920) 2018年6月30日
これは素晴らしい https://t.co/XxbY3ewYVU
— かずま@営業マンなのにニート (@kazuma_style) 2018年6月30日
うおおおお!?我々が待ち望んでたサービスがついに?! https://t.co/VfOo6wKmfp
— ふくままさひろ / サラリーマン (@fukuma_1023) 2018年6月29日
うお〜〜前から気になってたやつだ〜〜ついにリリースされた〜〜 https://t.co/vZ2ZZZs3WO
— 右肩ゲロまみれ@Django勉強中 (@subwaypkpk) 2018年6月29日
機能を聞いた瞬間、すぐに始めさせて頂きました!
— 相見佳輝 (@shiki_5296) 2018年6月30日
素晴らしいサービスですね。
そのままフォローできるのも非常に助かります。ありがとうございます
応援しています!
これからも頑張ってください
本当に嬉しいお言葉を頂き、心からありがとうございます。
ぼくのWebサービスをつくるにあたっても目標は「誰か1人でも喜んで使ってくれる良いサービスをつくる」ことです。
ぼくはこの嬉しいお言葉をもらうためにWebサービスをつくったと言っても過言じゃありません。本当にめちゃくちゃ嬉しかったです。
さらに、他にもぼくの拙いWebサービス第1号に優しくアドバイスを下さった方々もいました。
下の人の返信で使い方分かりました!
— はーと (@spite400k) 2018年6月29日
ID入力せずに検索したとき、エラーメッセージ出すようにした方が分かりやすいですよ!
Javascriptでエラーダイアログ出すのが一番早いかもです。
この課題は、開発中にhtmlでinputのvalueに値を入れていたため、ID入力していない時のエラーメッセージを入れることを忘れてしました。
このアドバイスを頂いた日にエラーメッセージを出すように改善させていただきました。ありがとうございます!
こんにちは!
— 杉田賢人webサービス開発したり教えたり (@sugiken_bike) 2018年6月29日
リリースおめでとうございます!
ただ、ここで検索ボタンを押しても何も起こらないです pic.twitter.com/rdf54B6wsP
このエラーは致命的なもので教えていただき、本当にありがとうございました。
ぼくのiOSのバージョンが11だったのですが、iOSのバージョンがそれ以前はtwitterアプリ内のブラウザではJSのcomfirmやalertは効かないという課題点がありました。
この課題に対しては、このcomfirmを使わずにモーダルを使用することでcomfirmのポップアップが出てくるようになりました。
そしてそして、わざわざMIYABI Labのお問い合わせフォームの方にご意見を下さった方もいました。本当にありがとうございます。
改めて、多くの人に支えられていることを痛感しました。
これからもTmeetはみなさんのアドバイスを取り入れてどんどんバージョンアップしていくので、どうぞお楽しみに!
MIYABI Labでは「仲間と楽しくプログラミングを勉強したい」と思っている人たちを応援します。
僕自身もまだまだ勉強したいこと、勉強したい言語はたくさんあります。
新しいことに挑戦するたびに、いつも僕は初心者になります。だから、初心者の気持ちや独学の辛さもよくわかります。
もしご興味があれば、いつでも新宿三丁目のオフィスに遊びに来てください。
平日はオフィスの一部をプログラミング勉強用スペースとして終日解放し、知識の交流場にしていきたいと考えています。
休日も定期的に「MIYABI Lab もくもく会」を開催していく予定です。
ちょうどいい勉強仲間がここにいます。
ご連絡はお問い合わせフォームかTwitter(@miyabi_lab)にDMください!
学生Webエンジニア PLANインターン生 PHP Laravel Python HTML CSS JS
【名前】 "ゆざ"
【関連】 株式会社PLAN / MIYABI Lab / Tmeet(twitterユーザーマッチングサービス) /
【MIYABI Lab運営】23歳/同期がト◯タやMicr◯softに就職する中、ベンチャーに未経験でWebエンジニアになるのを選んだ脳科学専攻の理系院生◆人見知り日本縦断◆機械学習/Web歴5ヶ月
Webエンジニア PHPエンジニア HTML CSS JS jQuery PHP Laravel Python SQL WordPress AWS Linux Apache
【名前】 "みやび"
【関連】 株式会社PLAN / MIYABI Lab / JAPAN MENSA /
【MIYABI Lab】平日オフィスを勉強用に解放中!みんなで楽しくプログラミングを学べる環境を作る!詳しくはコチラ(https://miyabi-lab.space)◆HTML, CSS, JS, PHP, Python, SQL, AWS◆生物学系修士→製薬会社→Webエンジニア(株式会社PLAN)・MENSA会員
【AWS】知識ゼロから理解するRDS超入門
AWSのデータベースサービス「Amazon RDS」を初心者にもわかるように解説します。未経験には難しいMultiAZ構成やレプリケーションは、マスター/スレ...
【AWS】Auto Scalingする前に知っておくべき7つのこと
Amazon EC2 Auto Scaling(オートスケール)を使用すると、CPU使用率等に応じてEC2の台数を自動的に増減できます。ここでは、初心者の持つ疑問を通し...
WordPressの基本構造を理解してオリジナルテーマを作ろう(後半)
WordPressのテーマを自作するために必要なテンプレートファイル(functions.phpやstyle.css)の役割やファイル構造を理解して、どのようにオリジナ...
WordPressの基本構造を理解してオリジナルテーマを作ろう(前半)
WordPressのテーマを自作するために必要なテンプレートファイル(functions.phpやfront-page.php)の役割やファイル構造を理解して、どのようにオ...
【Heroku入門】無料枠サーバーを24時間スリープさせない方法
フリープランのHerokuサーバーでは、30分以上アクセスがないと自動的にスリープしてしまいます。ここでは、Herokuサーバーを寝かせない方法につい...
【入門編】Laravelのディレクトリ構造とMVCの処理の流れを理解する
Laravel初心者が学習する際にわかりにくいLaravelのディレクトリ構造を具体的な例を交えて解説します。MVCの基本であるビュー、モデル、コントロー...
【初心者向け】PythonによるHeroku環境で簡単LINEBot開発
誰でも簡単にLINEBotをpythonを使ってHeroku環境で開発できる方法を解説します。ここでは、LINE Messaging APIを用いることでおうむ返しをするBot...
AWSでWebサーバー構築!踏み台サーバーでセキュアなネットワークを構築する(第5回)
連載の第5回です。メインEC2に対して直接SSH接続できる状態というのは、セキュリティの観点からあまり望ましくありません。MySQLやEBSが紐づいたメ...
AnacondaでのTensorFlow環境構築と基礎的な使い方
Anaconda(アナコンダ)のインストールからJupyter notebook(ジュピターノートブック)とTensorFlow(テンサーフロー)の基本的な使い方を初心者...
脱初心者!MNIST beginnerに隠れ層を加えたニューラルネット解説
TensorFlowのチュートリアルであるMNIST beginnerの応用して、隠れ層と活性化関数を加えたニューラルネットワークで手書き文字識別を解説します。...
AWSでWebサーバー構築!Apache2.4, PHP7, MySQLの導入と初期設定(第4回)
連載の第4回です。今回は作成したEC2インスタンスにWebサーバーとしての機能を持たせるため、Apache2.4のインストールおよびhttpd.conf等の各種設...
AWSでWebサーバー構築!EC2を作成してSSH接続する(第3回)
連載の第3回です。前回作成したVPC・サブネットにおいて、セキュリティーグループに保護されたEC2インスタンスの作成・設定およびSSH接続の確立ま...
初心者必読!MNIST実行環境の準備から手書き文字識別までを徹底解説!
Pythonによる機械学習をプログラミング初心者にもわかりやすいように、TensorFlowチュートリアルのMNIST beginnerを使って、手書き文字(MNIST)識別...
AWSでWebサーバー構築!専門用語の解説とVPC環境を構築する手順(第2回)
連載の第2回です。AWSにてVPCネットワークを構築してWebサーバーを設置・運用するためには、AWS内で利用される重要単語について正しく理解しておく...
知識ゼロで機械学習・AIを理解するために必要なニューラルネットワークの基礎知識
機械学習・AIを理解するために必要なニューラルネットワークの基礎について、これから機械学習を勉強したい人、プログラミング未経験の人にもわか...
Canvaで簡単におしゃれなアイキャッチ画像を作ろう!使い方を徹底解説!
PhotoshopやIllustratorを使えなくてもCanvaなら誰でも簡単におしゃれなアイキャッチ画像が作れます。豊富なデザインテンプレートを組み合わせるだ...
プレビュー機能付きの記事編集画面の作り方(Laravel5)
記事編集フォームにはプレビュー機能の実装が必須です。記事を保存する処理とプレビューを表示する処理を共存させるにあたり、ボタンをクリックし...
AWSでWebサーバー構築!VPC設計に必要なIPアドレスとサブネットの基礎知識(第1回)
連載の第1回です。AWSのVPCネットワークを設計して実際に構築するためには、IPアドレスの基礎を理解することが非常に大切です。EC2 Webサーバーを...
MIYABI Labホームページを製作しました
様々な理由でプログラミングの勉強を困難だと感じてしまっている方のお役に立てれば嬉しいです。これからも小さなWebサービスを作り続けていき、技...
ゆざ、株式会社PLANを卒業します。
2年間インターンとしてお世話になった株式会社PLANを卒業します。AWS,Laravel,Pythonなどの技術的なことだけではなく、エンジニアとして、社会人と...