はてなキーワード: OpenPNEとは
インターネットを日常的に利用する諸氏はMastodonというマイクロブログサービスを知っているだろう。
ある程度のITの知識を持った者ならば自身でマイクロブログサービスを始められるオープンソースなソフトウェアだ。
2017年当時学生だったハンドルネームnullkalがmstdn.jpというドメインを取得しMastodonサーバーを開設したことによって日本で注目を浴びた。
しかし、本質ではない。一部の真実を表現しているので誤りでは決してないが、本質かと言われれば決してそうではないと返せる。
Mastodon(と分散SNS)という言葉と存在を知る多くの人々が本質を理解できていなかったため「劣化Twitter」などと評価せざる得なかった。
そして、不幸なことにMastodonが話題となった当初、それを報じるインターネットメディアもまたMastodonの本質を理解できていなかったので、Mastodonに関する記事を読んだ多くの人々の評価がMastodonへアカウントを作らずとも「劣化Twitter」として固定されてしまった。
私の友人はMastodonを指してこう言った。
「Mastodonって不人気だけど何故かプログラマーな人が多いよね」
おかしな話だ。コンピュータやインターネットの技術に詳しく専門分野に関しての審美眼には信頼のあるプログラマーが何故か不人気なものへクールさを見出していると言うのだから。
そこでこのエントリでは、日本語情報も多いMastodonを例にして分散SNSの本質を解説しつつ、何故プログラマーが分散SNSへクールさを見出しているのかを語っていこうと思う。
2007年、インターネット上に「OpenMicroBlogging」と呼ばれる通信プロトコルが登場した。
OpenMicroBloggingは分散SNSで使われることを想定した通信プロトコルで、OpenMicroBlogging実装SNSとして「Identi.ca」が開設される。
Facebookは2004年設立、Twitterは2006年設立であり、Facebook設立からわずか3年後、Twitter設立からわずか1年後に分散SNSが登場したことになる。
オープンなSNSでよく語られるのは「中央集権SNSへのアンチテーゼ」だ。
これらの表現は悪いわけでない、悪いわけでないが分散SNSの理解へ誤解を生む。
誤解を生む理由は「わかりやすい」のだ。「自身のサービス内で強権を奮うFacebook運営やTwitter運営へNOを突きつけよう!」「我々の手にオープンなSNSを!」といういかにもな正義は非常にわかりやすい。
だからこそ一部でこの表現が支持されてしまい声たからかに叫ばれ、多くの人々の分散SNSの本質的な理解を妨げた。
インターネットを長らく観測してきたお歴々はご存知だろうが、そもそも「ユーザー自身が管理者となり自分自身のルールを運用できるオープンなSNSは分散SNS登場以前から存在している」のだ。
日本国内であればmixiクローンSNSとして「OpenPNE」などがFLOSSコミュニティでは非常に有名だ。
では、これまでのオープンなSNSと分散SNSは何が違うのか?
分散SNSは大前提として通信プロトコルありきで開発されている点が違うのだ。
思い出して欲しい。Identi.caの前にOpenMicroBloggingが作られていることを。
後に整理されてIdenti.caは「GNU Social」と、OpenMicroBloggingは「OStatus」と呼ばれるようになるが、Mastodonもまた通信プロトコルありきで開発されており、MastodonがありきとしたのがそのOStatusなのだ。
OStatusのベースであるOpenMicroBloggingは設計が古いため、現在ではOStatusの事実上の後継であるモダンな設計のActivityPubへ差し替えられるという大きな変化はあったが基本は変わらず、MastodonはActivityPubありきで開発されている。
多くの人々はSNSと言えばTwitterやFacebookやInstagramなどを想像してしまい、分散SNSと言われるとMastodonやGNU Socialを連想してしまう。
はっきりと言おう、この認識自体が根本的に最初の誤解であるのだ。
分散SNSは通信プロトコルありきで開発されており、ActivityPubなどの通信プロトコルによってSNSサーバー同士が相互接続し形成されている。
このネットワークそのものが分散SNSだ。Mastodonは分散SNSを形成するSNSサーバーでしかない。
すなわちMastodonは分散SNS方式SNS、分散SNS型SNSなどと表現したほうがより正確な意味を持たせられるのだ。
ただこれは情報技術に詳しいはずの技術者でさえ誤解しやすい部分であり、よりわかりやすく説明するためにActivityPubなどで形成されるネットワークのことを「Fediverse Network」と表現することが多くなっている。
つまり「Mastodon ≒ 分散SNS」「Fediverse Network = 分散SNS」という図式が成り立つ。
Mastodonはやろうと思えばFediverse Networkに接続しないこともできるということを理解しておかなければならない。
ActivityPubなどの通信プロトコルによってSNSサーバー同士が相互接続することにより形成されるネットワーク(= Fediverse Network)そのものが分散SNSであると言った。
それを知るためにはFediverse Networkの特性を知らなければならない。
Fediverse Networkを形成するActivityPubを現在は様々なSNSがサポートしている。
代表例を挙げればマイクロブログサービス型の「Mastodon」「GNU Social」「Pleroma」「Misskey」「microblog.pub」、Facebookのような名鑑名簿型の「Friendica」「Hubzilla」、写真投稿型の「PixelFed」、動画投稿型の「PeerTube」、電子掲示板型の「Prismo」などがActivityPubをサポートしている。
ここで疑問を投げかけてみよう。
もし、何らかの理由でMastodonの開発が停止し、この世から完全にMastodonサーバーが消滅した場合、Fediverse Networkはどうなるか?
答えは簡単だ「Fediverse Networkは維持されたまま」である。
単にこの世からMastodonが消え失せるだけであってActivityPubが形成するFediverse Networkへ対応しているのはGNU SocialやFriendicaなど他にも多数あるのだ。
Mastodonが使えないのであればGNU Socialを使えば良いというような形式のネットワークをインターネット老人会のお歴々はよくご存知で、おそらくこう表現するのではないか。
GMailが使えないのであればYahoo!Mailを使えば良い。それと全く同じだ。
そうつまり、分散SNSの本質それは「SNSの形態を取った次世代のE-Mail」なのである。
分散SNSの本質はSNSの形態を取った次世代のE-Mailであるからこそ「Twitterの代替」や「中央集権SNSへのアンチテーゼ」などという言説は分散SNSの本質を表現できているとは言えないのだ
TwitterはE-Mail Networkのような特性を持っておらず、E-Mail NetWorkはそもそも分散されている(E-Mail NetWorkはそのように設計されたから)。
ましてや、そもそもシステムの根本から違うので「劣化Twitter」という言説もまた分散SNSの本質などではない。分散SNSはTwitterクローンですらないのだから。
分散SNSの本質はSNSの形態を取った次世代のE-Mailであるからこそ、そのアカウント数はE-Mailと同様にゆっくりと増え続ける。
過去の日本ではユーザーが望む望まない、ユーザーが使う使わないへ関係なくDoCoMo携帯電話のiモードへ加入するだけでE-Mailアカウントが付いてきた。
分散SNSのアカウントはそのようにして増える。今後登場するであろう人気WebサービスがActivityPubをサポートしているとユーザーは意識せずともFediverse Networkへアクセスできてしまうのだ。
分散SNSの本質はSNSの形態を取った次世代のE-Mailであるからこそ、プログラマーたちにとってクールなのだ。
現在、GMailアカウントがどのように使われているか?を少し考えるだけで、SNSの形態を取った次世代のE-Mailである分散SNSがどれだけ刺激的で新しいインスピレーションを生み出してくれるかが理解できるだろう。
まずは、大変遅ればせながらはてな上場おめでとうございます。2ヶ月遅れですが。
先にお断りしますと、この文章は長いです。12,000文字近くあります。そう言えば最近「長すぎて読めない」ってタグ見なくなりましたね。
元々は数日前に自分のブログに投稿したのですが、アイコンを見てもIDを見ても誰にも認識されていないであろう私がこんなことを書いているのも気持ち悪いような気がして、衝動的に消してしまいました。そんな文章ですが、せっかく書いたので思い返して増田に投下します。それでも交流のある僅かな方からは、「あ、あいつだ」とすぐバレると思いますが、全く構いません。
大げさな振りをしてしまいましたが、この、はてなの世界からゆるやかに距離を置こうと思いまして。
ハイコンテクストな話題で、関係者でも有名ユーザーでもない私が語るには随分と分不相応であろうことは承知しているのですが、私は人知れず長年このはてなという会社とそのサービスの利用者でした。たぶん、相当熱心なファンのほうだと思います。
しかしこのはてなという界隈、おそらく長年世間一般的には「俺ははてなが大好きなんだー!!」とはなかなか言い出しづらい雰囲気と言いますか、一部一種のギーク(ナードか?)臭さみたいなものから逃れられないセグメント感があったために、公の場であまりそれを声を大にして語る機会が無かったという状況があったような気はしています。
勝手な想像ですが、よく言われるとおり先日上場した株式会社はてなとしてはきっと、そういった閉鎖的なカルチャーからの脱却を図る必要があるのは事実なのであろうと考えています。
私は「はてな界隈」という自然発生的な、「インターネット好き」が作ったプラットフォームとコンシューマージェネレイテッドなコンテンツが組み合わさってできた若干マニアックな文化がとても好きで、かつてインターネットに期待していたワクワク感のようなものを自分の感性ともっとも近い形で目指している会社だなと思っていたので、はてなを好んで使っていた理由も、今これを書いている理由も、サービスが向かう方向性とのギャップが発生したということで仕方ないのかな、と考えてはいます。
回りくどい書き方ですが、つまり、ここ最近(数年)の急激な利用者層の変化、人気ブログやホッテントリに上がってくる記事とその使われ方の変化、新たな利用者層との精神的摩擦に疲れて消耗するのが嫌になった、ということです。
私は自分の楽しみのために自分が面白いこと書き、読むっていうスタンスで自分のスペースを使ってきたので特定のユーザー群を非難するのはその趣旨とズレるし、メタな「ブログ論」を書くつもりは無いんです。なのでわかりやすいバズワードは書きませんけど、要は、そういうことです。お察し。
ここまで書いておいてから自己ツッコミを入れますが、私がここでこんなことを書いていても、おそらくそれほどの価値は無いのでしょう。
私は長年使っているとは言いながらも、所謂「はてな村」と言われるような有名ユーザー層に所属するようなアカウントではないし、特別人に見られるコンテンツを上げていたわけでもコミュニケーションを取っていたわけでもないし、こんなことをグダグダ書いていても「知らない人。気持ち悪い。」で片付けられてしまうような気はします。
コンテンツもお金も落としてもいないアカウントですので、ある意味運営側の立場から見れば、「うるさいことだけごちゃごちゃ言って全くサービスに貢献しない面倒くさいアカウント」あるいは「フリーライダー」と言われても仕方がない気がします。
これは別に被害妄想を語っているわけではなくて、自分がサービスを利用して得たメリットと、お客さんとしての価値を第三者的に見た時、そういう風に判断されてしまっても仕方ないかな、と冷静に思っただけです。
最近、はてなブログやブクマを見ていて、「これは自分には合わないな」と思ってケチを付けたくなる機会が多くなってきたことと、でも、ケチを付ける発言力(あるいは権利)のバランスを天秤に掛けて、ああ、もう自分が楽しく見ていられる場所ではないのかな、と感じることが増えてきたことと、単なる1ユーザなのにそんなことを考えてしまうこと、考えさせられてしまうことが嫌になってきてしまったということがあって、こりゃ、私の居場所はもう無いのかもしれないな、と思いつつあるということです。
かつての掲示板サービス群から始まってブログランキングやら、SNSやら、インターネットのサービスではいろんなところでこのような文化の変遷みたいな場面は見てきたはずなのだけれども、思ったより自分の生活の大きな部分にはてブが入り込んで浸透していたことに自分でもかなり驚いていますね。
前提としてなぜ、こんなマイナーキャラの私がそこまで一、ネットサービスに入れ込んでいたのかについてちょっと語らせてください。長くてすみません。
私のはてな歴は12年くらいです。長かったらどうだというわけでは無いのですが、はてなを知ったのはまだ人力検索しか無かったころで、自分が実際にユーザーになったのは例の「日本人にはブログより日記」のちょっと後、「はてなダイアリーをはてなブログに名称変更」とかエイプリルフールネタでやっていたころです。最古参ではなくて、ブログブームの頃に「はてな界隈」を意識するようになったので第2世代くらい、ということになるのでしょうか。
その後アカウントが一回変わっていて今のIDは5、6年くらい前に取りなおしたものなので、おそらく古参ぽさは無いですね。
はてなには他社のサービスと比べてとりわけIT系ユーザーの比率が高いと思いますが、私もそうです。一貫してネット関連ですが完全な同業というわけではなく、何度か変遷を経て今は流通系事業会社のインターネット事業担当になったというキャリアです。
はてなのサービスを認識した時はちょうどMovableTypeの2.6あたりが日本でも流行りだした頃で、「Web日記がhtml無しでこんなに簡単にできるなんて!」「コメントとかトラバとかすげー!コミュニティ作れまくり!」とかっていう話題で日々興奮していたのを覚えています。90年代後半からネットは見ていたけれど、これからいよいよ「普通の人」にもオープンに普及していくんだなー、と夢描きながら仕事で、あるいはプライベートでどう活用しようか考えていたんですよ。「Web2.0」より2年前くらいのことですね。
その頃、ちょうどあるECサイトのコミュニティサービスの担当をしていたんですね。いろいろやりましたよ。掲示板サービスが炎上して閉鎖に追い込まれたり、画像著作権で揉めたり、ブログが使えるようになってからは、「ブログに商品の宣伝を書いてリンクを貼ってくれたら100ポイント!!」とかいう現代であればGoogle警察が1日でぶっ飛ばしにくるようなプロモキャンペーンもせっせこ考えては公開してました。更にその後はOpenPNEベースのmixiっぽいSNSをやったりとか。
今考えるとうわーっていう企画も多かったのですが、おおらかながら大真面目にやってたんですよ。まじめに、ライトユーザーに使ってもらうにはどうしたらいいかとか、コアユーザーがどう伝搬してくれるかとか考えてました。その頃は(ネット上のマーケティングにおいては)セグメントの乖離とかそういう問題も今ほどは研究されていなかったし、たぶん自分でもまだ十分理解できてなかったんですよね。私はそんな感じの人間です。
自分語り方面に脱線したので話を戻しますが、ブログブームちょい前の頃、世の中で出始めたブログのアカウントを片っ端から取っては試すということをやっていたんですよ。ココログ、はてダから始まって、livedoor、goo、Excite、Seesaa、Jugem、FC2、楽天、MSN、ドリコム、ウェブリブログ、ドブログ、Yahoo、ヤプログ、アメなんたら……
でですね、そのときにはてなの特異性に気付いたわけです。
なんだこりゃ、殺風景なサイトだなぁ、なんか研究室みたいだなぁ、システム屋くさいなぁ、ってのが当時の正直な印象です。まったく間違ってないと思いますが。
ダイアリー以外の他のブログサービスはだいたい大手キャリア系か、大手ポータル系か、大手ホスティング系のいずれかじゃないですか。実際仕事で関わることがあったのはそういった会社さん達だったわけだったんですけど、私個人的にはこのはてなダイアリーってやつにとても興味を持ったんですよね。
純粋にIT系オタク集団(失礼)がコミュニティで勝負するっていう構図のサービスがすごく面白いなって思いまして、当時から実際にIT系のギークな技術記事とか、濃厚なネットのいざこざとかそういうのがぐちゃぐちゃと集積されつつあって、うわぁ危険と思いながらもはてなだけは明確に識別して見に行く感じになってたんですよね。
人力検索もそうですが、アンテナとか、キーワードとか。私はネットコミュニティをやりたくてこの世界に入ってきた人間なので、人と人をつなげるサービス、というコンセプトに対して面白いことをやろうとしている人達がいるんだなーって思ってたんです。こんな殺風景な非コミュ論壇だらけのサイトなのに。なんだかそのギャップがまたすごく居心地が良くてね。よく閉鎖的って揶揄されるはてなですけど、私はそんな風に思ったことなかったな。
そう、私は村感というよりは、僻地の秘境だけどここは自由でオープンだ、っていうように感じていたんです。
今はなおさら顕著ですけど、その頃って既にインターネットサービスが外来の大手サービスに集約されつつあったじゃないですか。ブログにしたってMovableTypeもWordpressも外から来たものだし、MySpaceとか、Facebookもそうだし、その後の流れって周知のとおりって感じじゃないですか。強いて言えばmixi……はやっぱべつにいいや。
そんな中、日本のドメスティックな小さなネットベンチャーが純粋なコミュニケーションの仕組みだけで世界観を醸成して、しかも生き残るっていうことに夢を感じたんですよ。まあ、ドメスティックっていう部分について言えば、jkondoさんが渡米した時期とかあったなぁ、とかあるんですけども。
はっきり告白しますけど、私のような自分で新しいプラットフォームを開発するほどの実力が無い中途半端なネット屋にとって、超恥ずかしながら彼らはヒーローだったんですよ。jkondoさんやnaoyaさんは私とほぼ同い年ですけど、勝手に同世代のヒーローだと思ってたんですよ。
はてなブックマークでソーシャル・ブックマークという概念を身近に体験した時は「単なる『お気に入り』じゃなくて、興味を持ったものについて何時でも語り合える世界が作れるんだなあ」ってリアルに衝撃を受けたし、スターが登場した時は(FacebookやTwitterより前に)これ、シンプルだけどもしかして世界を幸せにする機能じゃね?って感動したりしましたよ。
だいたい、jkondoさんはすごいんですよ。私など勝てる要素が無いですよ。スプリントでもロングでもヒルクライムでも絶対勝てないですよ。山も強いし、みんな山手線一周1時間48分てできます??サラッと書かれてたけど、メチャクチャ速いよ!!俺も何度もやってるけど、大真面目にやっても3時間切るのだって大変だよ。明治通りや中央通りはともかく、田端駒込あたりの裏路地とかどうしてたんでしょうね。メッチャ危ないよ!!つか、あの頃の自転車クラスタみんなどこ行っちゃったんでしょうね……
何の話でしたっけ。そうそう、趣味が合いそうな人達が集ってるっていう話でしたね。
私の文章は、テキストサイトからアルファブロガーあたりまでの文章にめちゃくちゃ影響を受けていると思います。ちょっと極端なことを書いたら「フロムダ先生の真似か」とツッコまれてドキッとしたり、写真クラスタの真似をしてやたらでかい写真を並べてみたり。最近は年に一回お正月だけに現れるmk2さんの文章を見ると涙が出そうになります。長文には慣れています。必死に調べないとついていけないような技術論議や、内蔵をさらけ出して書いたような、編集が入った本では読めないようなブログを読みたいし、そういう記事でみんなが共感していく世界が見たかったんです。
はてなブログの目次記法は便利だと思うんですけど、他所のニュースサイトに貼られた記事を引っ張って目次を並べていかがでしたか?なんていう記事を、私は単純に面白く読めないんですよ。「参考になりました!」じゃねーよ!!ならねーよ!!残念すぎるだろ!!なんて思ってたんですよ。
ここまでで既に5,000文字を超えてしまいましたが、話が飛んでしまったので一旦元に戻します。
つまり、そういった「自分の好きなものを好きと言う」「好きなものを選んで、好きなものを見て共感する」という、人の本能的なコミュニケーションの楽しみの源泉のようなものを、私は求めていたんだと思います。自分の背中に正直な、泥だらけのスニーカーで追い越すような体験を期待していたんです。
もちろん、どんな時代にだって人と人のコミュニケーションにはいろいろあって、変わらないものがたくさんあるんだとは思いますよ。パソ通の時代だって、BBSの時代だって、初期のブログにだって、「読みました。記念カキコ☆」はあったし、コメント欄で交流が繋がって新たな友達ができるという興奮だってあったし。
最近のはてなだって、今、その興奮を新たに体験して純粋に喜びを感じている人達がいるはずだしそれはもちろん喜ばしいことなんですけど、さすがにこの情報過多なご時世なので、ツールと場所の管理と運営をしっかりやっていかないと、純粋な喜びを埋もれさせず、コンテンツの品質を保つのは相当に厳しいなという実感はありますね。
一般化、大衆化、というものはだいたいそうで、単純に「この村も昔は良かったのに」っておじいさんが言っているっていうような話ではないと思うんですよ。
こんなことを話している私自身が既にネット上では「古い側」の人間になっているのかもしれませんが、個人的には、「はてな村」とかって言われている界隈にそれほどイライラするような内輪感を感じたことは無いんですよね。実際にひどい攻撃的な言葉が飛んできて嫌な思いをしたことだってありますし、慣れ合いとかってのは昔も今もあるわけなんですけど、だいたいは好きなことを好きなように書いた、っていうモチベーションによって書かれた記事は、面白ければ当たるし、面白くなければ流行らないわけじゃないですか。読む側だって気に入ったら読めばいいし、気に入らなかったらスルーすればいい。だいたい、広い世界で見ればごく一部のできごとだっていう側面もあったわけじゃないですか。
だから、一定の、嘘を嘘と見抜ける程度のネットリテラシーさえあれば、海水浴場の中に浮かぶ邪魔な漂着物があっても、農耕地が石だらけで荒地になっていても、単に避ければいいだけだって思ってたんです。
むしろ、良い記事にフォローが集まったり、ひどい記事はひどい記事でそれに集まった批判が有益だったり、そうやってやり取りを応酬する中で集合知として収斂されていくという光景は、みんなで海を掃除したり、畑を耕していくような感覚を覚えていつもネットの醍醐味であり爽快ですらありました。
……でもね。最近の例の動向はちょっと様相が違っていて、私のようなユーザーにとってはもうちょっと見ているのが厳しいな、というのが本音です。商業的なまとめサイトが場を汚染している、というような話であればユーザー側コミュニティによるチェックと自浄作用が働きます。はてブはうまいことそういう機能を果たしてきたと思うんですよね。
でも、ユーザー側のほうで「良いと思ったから良いと言った」というお気に入りによるキュレーション機能が働かず、返報性の原理によるコミュニケーションが中心の場になってしまったら、今のままのはてブでは、(コメントツールとしてはともかく)少なくとも情報ツールとしての価値は大きく毀損されます。これは、ユーザーのモラルもありますが、サービスの構造上の問題として避けられなかったことだと思うんですよね。
海や畑が全部「あれ」になったら、もうどうしようもないでしょう。もう去るしかない。
この問題についてはさんっざんぱらたくさんの人に書き尽くされているのでここでは書くつもりないんですけど、小遣い目的で面白くない記事が量産される、共有のヘッドラインが専有されて他のユーザーに影響を及ぼす、内容に関係なく相互フォローする、これらは本人の意識あるなしに関わらず、関係ない人から見たら無益です。
これについてルール違反がないのならば、サービス品質を維持するための運営/システム側の構造課題を疑ったほうが良いし、ユーザー側についても、一部の炎上チャリーンで喜ぶようなやつは単なるスパムなのでこれは単純な絶対悪ですよ。
別に、ネットの世界で今始まったことじゃないんですよ。むしろはてブは牧歌的で今まで性善説でよくやってこれたなっていうレベルじゃないかと思います。Twitterでも「相互フォロー推進委員会」とかあったなあ。一方的に何百人単位でフォローしてきて、ふぁぼりまくって、こっちが反応しないと砂をかけて去っていくようなのが……
ただそういう人達がごにょごにょ楽しくやってるだけならどうだっていいんですけど、今はホッテントリが明らかに使いづらくなっていたり、更には他のSNS経由でこの界隈の記事が流れてきて反応したらおかしなことになったり、実際にそういうことが発生しだしているんですよね。これが結構精神的にくるものがあるんですよね。
というわけで、そういう一団がこのサービスのほんの数%、もしかしたら0.数%の人達であり、ほとんどの普通の人は何も気にせず普通に自分の日記を書いているんだ、てことはわかっていても、でももう気持ち的にこの界隈と一緒の世界でブログを書くのは無理かもしれない。既に古参と言われる人達がかなり去っていっているし、生き残っている人達も読者層が急激に変わっていたりとかして、なんていうか、見ててつらい。
※最近、ある有名人気ブロガーのブログを読んでいて、半年前にも同じテーマで書かれたことがある記事がホッテントリに入っていたのを見たんですけど、ふとブコメを見てみたら、半年前の記事と反応のコメントが全然違くてびっくりしたことがあったんですよ。よく見ると、並んでいるアイコンがガラリと変わっていることに気づきました。読者層が急激に入れ替わっているんですね。
この人はムラ社会に寄る人では(読者から見たイメージでは)無いし、長い人とも新しい人ともバランスのいい関係を築けていてすごいなあ、と思っていたのですが、図らずも急激に「有名人」として新規層の神輿に乗せられているように見える状態になってしまって、一方で彼自身は広告収入で儲けているようなブロガーではないし、内心複雑な気持ちなんじゃないかな、とか勝手な心配をしていたりします。そういう人、何人かいますよね。余計なお世話すぎるとは思うのですが。
------------------
http://anond.hatelabo.jp/20130104184115
の元増田です。
ひっそりと公開したはずのtag-chat.net(http://tag-chat.net)ですが、
まさか、こんなに反響を頂けるとは思っていなかったので、びっくりしました。
素人のフリをしているとか、出版社のステマだとか色々言われましたが、嘘は一切書いてないです。
ステマというか、ウェブサービス公開後の状況を知っている方からするとマイナスのステマにしかなっていないような気がします…。
公開してから、色々と発見というか気づきがあったので、それを共有できれば幸いです。あと、tag-chat.netの中身についてなど。
・意気揚々と自作SNSを公開したものの、アクセスが全くこなくて途方にくれる。
⇓
・以前、完全に一致を作った増田の方が、増田記事を書いてからアクセスが急に来たと書いてあったので真似して書いてみる。
⇓
・翌日ごろから、アクセスが集中。ビビる。「うちの会社で働きませんか?」と言ったお誘いのメールをたくさん頂く。
いきなりの出来事にパニックになっている間にも増田記事が拡散していき、アクセスが急増する。
⇓
アクセスが爆発する。1時間あたり二万アクセスというアクセスを捌ききれずにサーバーが落ちる。サイトのウリであるが、メモリ使用量
⇓
・その後、サーバーを増強。エラー情報や、寄せて頂いた情報をもとに各種エラー情報や、使い勝手などを改善。
⇓
・現在、安定稼働中。おかげさまで、ユーザー数もゆるやかに増加していて、基本的な機能も正常動作しています。ユーザー数はもうすぐ
1000人に届きそうでありがたいばかりです。
と、いうわけでなんとかようやく落ち着き、ウリのマッチングチャットも正常に作動しているようなので、後記事を書きます。
■ウェブサービスの公開前に注意すべきだったこと。
①・セキュリティについては書かないほうが良い。色々といじられる。
前回の増田記事で、DoS攻撃の対策などについて語ったのですが、それを確かめるためなのかサイト公開してしばらくしてから、定期的に
Dos攻撃をくらいました。
おかげ様で、ちゃんと一時的にそのIPからのアクセスを遮断することはできたのですが、セキュリティについてあまり大々的しゃべると攻
撃対象となるので、あまり具体的なセキュリティ対策などについてはしゃべらないほうが良いのかな、と感じました。
また、DoS攻撃だけでなくCSRF試したり、色々といたずら(もしくは善意のテスト?)をして下さる方がとても多かったのには驚きました。
はてな民の技術レベルの高さを知りました……。いたずらされている間は本当に怖かったです。
とりあえず、今のところ攻撃は防げているようです。
はじめ、私は調子に乗ってサイト内に英語を多用していたのですが、それがユーザー様にとって混乱のもとになっていたようです。
例えば、他のユーザーから自分の書いた日記などにコメントがついた時に、それを知らせるページがあります。
普通に考えれば「友達からの反応一覧」とか「友人からの反応」とかにすれば良いのですが、何を血迷ったのか「Reaction」と中二病丸出
しで書いてしまったので、ユーザー様がものすごく混乱したようです。
結局、「使いにくい」、「サイト内迷子になる」との声を受けて日本語メニューに変更しました。
③・使い方のページはくどいくらい書いても良かった。
フリーチャットや、マッチングチャットでは、基本的に相手が見つかるまでは「待ち」の状態になります。
相手がすでにこちらを「待っている」状態だとすぐにチャットが始まるのですが、そのことに対する説明が足りなかったようで、チャット
ルームを出たり入ったりしている人が多かったようです。
また、チャットが終了した時にチャット相手にお礼をこめてメッセージを送る機能があるのですが、これも説明不足で上手く使われなかっ
たようです。
とにかく、くどいくらい説明しても良かったと思います。
■ウェブサービスをリリースする前にやっておいて良かったこと。
①・Twitterのアカウントを作りそこから最新情報を流せるようにする。
これは本当に大きかったです。
とつぜんの増田砲で一時間あたり二万アクセス近くのアクセスをさばけずに、サーバーがビジー状態になってしまった時も、Twitterを通
じて現在の状況などを流せたことは非常に大きかったです。
②・エラー情報を送ってもらえるようにメールアドレスを作っておく。
本当にありがたいことに、実際に使ってみた使用感や、こんなエラーが出ていると言った情報を送って下さる方がいます。
一人でテストしていた時には気づかなかったエラーや、不便な点などをわざわざ時間をとってメールで教えてくれるのです。
どこの馬の骨ともわからん怪しい奴が作ったものに登録してくれ、使ってみてくれただけではなく、エラー情報や励ましの言葉を送って下
さるのです。
本当にありがたいことです。
③・それでもわからないエラー情報に対して対処できるようにしておく。
優しいユーザーの方がエラー情報などを教えて下さるのは大変ありがたく、また開発の励みにもなるのですが、それに頼ってばかりいて
はダメです。
サーバーの吐き出すエラー情報を調べて、おかしな挙動にいち早く気づく必要があります。
本当はhttpdのエラーログとか見れば良いんですけど、はっきり言って物凄く見づらいので、ツールを使って毎日「こんなエラーがでました
」と教えてもらうようにしておきました。
色々なツールがあるみたいですが、私はlogwatchを使いました。
・参考URL
http://www.atmarkit.co.jp/flinux/rensai/root04/root04c.html
これでエラーの出ているところだけでも、修正するということをやっていました。
■ ウェブサービスを運営してみてわかったこと。
①・SNSの人の流れにはなんだかよくわからない規則性がある。
tag-chat.net グーグルアナリティクスでどれくらいの人が毎日来ているかをウォッチしているのですが、なぜか月曜日と週末にかけてア
クセスが増えます。
謎です。週末はわかるけれど、どうして月曜日に……?
②・やっぱり非リアの気持ちは非リアじゃないとわからない。
「どうして普通にはてブに書かないのか。なんで増田なのか」とか「非リアを装って」
とかコメントしてる人たちがいたのですが、その人たちは非リアについてなんもわかってないアホだと思いました。
もともと自分で名前なり、アカウントを明かした上ではてブに投稿できるくらいの度胸があれば非リアになんかなってないです。それは自
分でもわかってます。
自己顕示欲が人一倍強いくせに、人に名指しで批判されるのが怖いから増田に投稿したのです。
フェイスブックに実名でウェブサービス作ったことを投稿できるような度胸があればそうしてますし、はてブに書けるなら書いてます。
そうするだけの度胸もなくて、でも誰かに認めては貰いたいから増田に書いたということをわかっていない。
③・ネットのみなさんが優しい。
今までネットの人たちは2ちゃんねるとかで炎上したり、なんか面白そうなものを見つけてお祭り騒ぎする、ちょっと怖い人たちという
イメージだったのですが、それが今回のことでガラリと変わりました。
本当に優しい人が多くて、どこの馬の骨ともわからない奴の作ったウェブサービスを使ってくれるだけでなく、感想や励ましのメールな
どをたくさん頂きました。
遥か雲の上の存在だと思っていた会社の方からもメールなどを頂きました。本当に感謝してもしきれません。
~技術編~
①・nodejsを使って外部にサービス公開するなら、認証は必須。主に不正な負荷を減らすために。
さっき書いた、「セキュリティについてはあまり書くな」という話と矛盾するのですが。
nodejs、すごくアクセスさばけて、なおかつ軽いということで便利なんですが、サーバーなので、基本的にリクエストを受けたら非常に素
直に返事します。
例えば、nodejsとsocket.ioを使って、単純にメッセージをサーバーに送るとして、クライアント側で
のようにすると、サーバーはどこから来たアクセスなのか、とか悪意のあるアクセスなのか? とか一切気にすることなく、素直に'hoge'
これはつまり、第三者が悪意を持って大量にメッセージを送りつけるとそれを素直に受け取ってしまうということです。
なので、例えば大量に不正なデータを送りつけられたりするとレスポンスが悪くなります。
なので、悪意のあるアクセスはsocketにそもそも接続させない、という対策がサーバー側で必要になると思います。
socket.ioではコールバックを使って、簡単に認証させるかさせないか、という実装ができます。具体的には以下のURLなどを参考に実装す
http://d.hatena.ne.jp/Jxck/20110809/1312847290
②・nodejsの最大接続数は、ファイルディスクリプタに依存する
ということにしばらく気づかずに、最大接続数が400ほどしか出ず悩んでいた時に以下のURLを参照して、なぞが解けました。
http://blog.livedoor.jp/mokepon/archives/182178.html
またsocket.ioのテストの書き方ですが、
http://d.hatena.ne.jp/toritori0318/20120902/1346591831
という素晴らしいエントリーがあったので参考にさせて頂きました。
■楽できるところは楽するためのツールなど。
nodejsの開発で、面倒くさいところはできるだけ楽しました。以下、便利だったものまとめ。
・node-dev
コンソールにデバッグ情報を吐き出してくれ、サーバー側のコードをいじくった時に自動的に再起動してくれる。
いちいちコマンドプロンプトからnodejsを実行する必要がないため、作業の手間がはぶける。
nodejsを触り始めた時はエラーを吐いてばかりなので非常に役に立ちました。
参考URL
http://d.hatena.ne.jp/replication/20110224/1298474534
・forever
様々な使い方があるようですが、stop,list,startの3つぐらいしか使いませんでした。まだ、研究中です。
参考URL(基本的な使いかたが非常にわかりやすく書かれています)
http://nantekottai.com/2011/08/15/node-js-based-service-with-forever/
・mongoose
ドキュメントは色々ググったのですが、結局公式のドキュメントが1番わかりやすかったです。
~モチベーション編~
■一人でウェブサービスを作る上で、心の支えになった記事。
http://d.hatena.ne.jp/Hamachiya2/20080131/security
とにかく楽しんで、作ってみることが大事だよ、というお話です。すごい勇気づけられます。
・小飼弾さんの産声の話。
http://blog.livedoor.jp/dankogai/archives/51837985.html
弾さんは、お金持ちで、腕は一流で、PHPこき下ろすし、なんかすごく怖い職人のイメージだったのですが、このエントリーを読んで、クソ
まみれでも産声を上げてみようと思えました。
実は優しい人なのかもしれません。私の高校時代の担任の先生にどことなく似ています。
■お詫びと訂正
前回の増田記事で、OpenPNEについて間違った記載をしてしまいました。ソースコード公開に関する記述の部分です。
OpenPNEではそのソースコードを改変したら、そのソースコードを公開しなくてはならないと書いたのですが、これは間違いです。
OpenPNE方々には大変ご迷惑をお掛けしました。申し訳ありませんでした。
あと入家さんに謝りたいです。
フェイスブックにもとりあげて頂いたそうで、ありがとうございます。
怖いのでどんな投稿なのかはまだ観ていませんが、本当にありがたいです。
■最後に。
ウェブサービスをコツコツと作り続けて公開したところ、増田記事のおかげもありたくさんの反響を頂きました。
ただ、別にウェブサービスを公開したからと言って、実際のところ何かが劇的に変わったわけでもないです。
グーグルアドセンスは支払い規定の一万円を超えていないので、手元には一銭も入ってきませんし、実名出して行動できなかったので現実
あいかわらず休日は地元のゲームセンターでレトロゲーをやって時間をつぶしていますし、学校から帰ってきたらももクロのライブを観て
、Chai Maxxを踊ってから寝るだけの毎日です。それでも結構楽しいのですが。
ただ、ネット上で様々な先輩エンジニアの方々や、同年代で同じようにフェイスブックが嫌いな方から励ましのメールをもらいましたし、
本当に、びっくりするような充実した二週間でした。
はてブで人気のエントリーにあがった時のスナップショットは未だに大事にとってあります。
tag-chat.net(http://tag-chat.net)を作って本当に良かったと思っています。
自動でマッチングしてチャット相手を見つけてくれるマッチングチャットや、すぐにチャット相手を見つけてくれるフリーチャット、コミュニティチャット、フレンドチャットなど、とにかくチャットがメインのSNSです。
■自分について
昨年の4月から、プログラムを学び始めた素人。22歳。札幌在住。
FaceBookがウザい。というか嫌い。
これがきっかけ。
顔本が良いSNSだと話題になっていたので、実名登録してみた。大学の知り合いが見つけてくれて、友達登録などが増える。(ほとんど話したことがない人からも友達登録が来て、「おぉ!これで俺も友達が増えるんだ!」とワクワクしていた)。
が、流れてくるのは自慢ばっかり。
コミュ障で彼女はおろか、女友達もほとんどいない自分にとって顔本で「飲み会行ってきたぜウェーイw」とか、「○○ちゃんの誕生日会なう!」とか、「○○勉強会行ってきたました! みんな熱い人ばっかりで最高!」とか書いてあるのを見て「こんなSNSは嫌だ……」と思った。
ようするに嫉妬です。
で、自分の好きなようにSNSを作ってみたいなぁ。と思いました。
自分の趣味がレトロゲーなので、自分と同じ趣味の人と話せたら素敵だな。ということでチャット式のSNSを思いつく。
が、Webサービスを独力でつくるのはこれがはじめて。というより、プログラム自体がはじめて。
案の定、前途多難だった。
そして私はアホだった。
■とにかく計画を立てる。
ざっくり、どんな機能が欲しいか考える。自分の力じゃ無理そうでもOK.とにかく妄想を爆発させる。
メッセージ機能、コミュニティ機能、あしあと機能、日記機能、コメント機能、つぶやき機能など。
コミニティ専用のチャットルーム、アカウント専用のプライベートチャットルーム(鍵をかけられる)、自動でチャットが開始されるフリーチャット、自分の指定した条件にあう人を自動で見つけてきてくれて、チャットができちゃうマッチングチャット。
などなど。
妄想するのは簡単だ。でも、全くわけがわからない。何から手をつけていいのかわからない。
「うはwwww これで勝つるwww」と思ったけれど、どうやってチャット機能を追加して良いのかわからなかった。改変しようにも謎の記号がめちゃくちゃにならんでいてどうして良いかわからない。
しかも、改変したら改変したでそれを全世界に公開しなくちゃならないらしい(オープンソースというらしい)。
無理だ。
とにかくサーバーサイドの言語と、データベースについて勉強しろや! とのことだった。
■使う言語について。
サーバーサイドを扱える言語はたくさんあって、PerlとかPHPとかPythonとかRubyとか色々あるらしいのだが、色々悩んだ結果
PHPにした。WebサービスならPHPが良いらしい。レンタルサーバーなどでも簡単に扱えるらしい。
後でPHPがクソ言語という話も聞いたが、とにかく最初に選んだのがPHPだったので。
・PHP
よくわかるPHPの教科書。http://www.amazon.co.jp/dp/4839933146/
MySQLとかについて一通り書いてあるので良かった。二週間くらいでなんとか全部こなした。xamppなども触って、ローカルサーバーで色々試した。
これが終わったら、
パーフェクトPHP http://www.amazon.co.jp/dp/4774144371/
パーフェクトって書いてあるから、パーフェクトなはずだと勝手に思い込む。
実際かなりすごい内容で、胃もたれ起こした。一ヶ月くらいで三回くらい読んで、大体のところを理解した。
フレームワークにCakePHPを使ったので、MVCについてのくわしい記述は大変参考になりました。
基礎からのMySQLで勉強。 http://www.amazon.co.jp/dp/4797344385/
最期に
ハイパフォーマンスMySQL http://www.amazon.co.jp/dp/4873114268/
とりあえず掲示板くらいはつくれるようになったので、チャットについてリサーチ。
ajaxとかよくわからん技術やnodejsを使った非同期処理などがあると知る。
nodejsはC10K問題という問題を解決するすごいものらしく、かっこいいらしいのでこれを勉強することに。
ついでにnodejsと相性の良い、mongoDBも勉強することに。
よくわかるjavascript http://www.amazon.co.jp/dp/4839941874/
終わったら、
パーフェクトjavascript http://www.amazon.co.jp//dp/477414813X/
パーフェクトjavascriptはnodejsについてものすごく詳しく書いてあったので、とても参考になった。このあたりで、LINUXというOSを扱わなくてはいけないと気付き、自宅PCをウィンドウズから、LINUX(ubuntu)に変えた。
これはとにかく触ってなんぼでした。MySQLと感覚が違い、苦労しました。
https://github.com/ichikaway/cakephp-mongodb
という素晴らしいものを利用させていただきました。
■このへんで一回限界がきた。
なんとなくnodejsを扱うこともできるようになり、それなりに楽しいと思ってはいたものの、「SNS作ったる!」と思ってから六ヶ月以上が経過していた。
さらにWebサービスを公開するにはデザインもそれなりにしなくてはいけないらしく、CSSなどについて勉強しなくてはいけないと知る。
一人でWebサービス作ってる「ゆーすけべー」さんとかすごいなと思った。
勘違いサブカル野郎だと思っていた「家入一真」とかもやっぱりすごい人なんだと思った。
自分はなんもできないなぁ。と痛感した。
で、悩んでても仕方ないので、デザインはバッサリあきらめることにした。
もうなんでもかんでもやるのは無理なので、捨てるものは捨てることにした。
基本的に Initializr http://www.initializr.com/ (テンプレートエンジン)
と
TwitterBootStrap http://twitter.github.com/bootstrap/ (Twitterっぽい今時な感じのデザインが簡単に使える)
を使うことに。
でも、これだとまさにTwitterそのまんまっぽかってので、
http://bootswatch.com/ (きれいなデザインテンプレートがあるサイト)
も使うことに。デザインについてはこれだけ。
無理はしないことに。
■大体できたら、あとはセキュリティ。
セキュリティは大事。自分のサイトでは一応、登録制なのでフリーメールアドレスなどを預かる。これは流出させたら困るし、なによりユーザー様が安心して使えないなんてだめなので。
これにはかなり注意したつもりです。
まず基本的なことは 『体系的に学ぶ 安全なウェブアプリケーションの作りかた』 http://www.amazon.co.jp/dp/4797361190/
で勉強。
本番環境に公開する前には グーグル先生が公開している skipfishというツールでチェックをしたり、
Dos攻撃対策に、
http://up-point-server.info/?p=54
などに書いてある
mod_dosdetector などを利用。
これははてなさんが公開しているものです。この場を借りて感謝します。ありがとうございます!
あとはSSHへのブルートフォースを防ぐために、DenyHostというツールを利用するなどした。
クラウドサービスを利用しているので大丈夫だとは思うのですが、一応rsyncコマンドでバックアップを定期的にとることに。
サーバー上の別の場所にGzipで保存し、それを自宅サーバーのCentOSで保存するという形式です。深夜にcronで自動的に実行しています。
参考サイトは、
http://mukaer.com/archives/2012/03/14/vpscentos/
です。
■パフォーマンス向上のために少しだけ
はじめはサーバーはapacheだけだったのですが、今は画像ファイルなどはNginxというサーバーを使うのが良いそうなので、Nginxを使いました。
あとはPHPの中間キャッシュを利用するAPCなども利用することに。
このへんについては、
このような解説記事がたくさんあったので、参考にさせていただきました。
■ようやく完成。
で、なんとか完成しました。
使ってみた感想や、ダメ出しなど頂ければ狂喜乱舞します。よろしくお願い致します。
■モチベーションを維持するためにやったこと。
あっさりと書きましたが、実際は失敗の連続でやる気が萎えてばっかりでした。
疲れて帰ってきて、なにもやる気の起きない時もありました。
そういう時は、とにかくサポートページのQ&Aの1文でも良いから書いてみるとか、とにかくパソコンとエディターだけ立ちあげてみるとか、していました。
ものすごーく覇気のない目でキーボード打ち続けていましたが、それでもなんとか完成することができました。惰性だろうとなんだろうと、少しずつは進むのだとわかりました。
やはり1から完全自作をするのは無謀だった。でも、プログラムをやったことのない素人でも約一年頑張ればそれなりのSNSもどきを作ることができた。
これも先人たちの作ってくれたフレームワークや様々なツール、そして参考書などのおかげ。
私のようなアホでも頭の良い人の力を借りればなんとかなりました。ありがとうございます!
そしてプログラムは一人でも出来るので、私のように非コミュでも楽しめる素晴らしい趣味である。
■現在。
今はRubyに夢中です。くり返し処理がすごくきれいにかけるので素敵な言語だと思っています。あと、javascriptも面白いので毎日いじくって遊んでいます。PHPももちろん触っています。
非コミュはあいかわらずですが、プログラムが楽しいので前より幸せです。
使用言語 PHP,Javascript
http://blog.livedoor.jp/ikiradio/archives/51780786.html
に書いてある、非モテ+というサイトですが( http://plus.himote.in/ )これって作るのどれぐらい大変なんですかね?
http://himote.in/ こっちの非モテSNSはOpenPNEですよね?
単純にオタク系SNSのみならず、オタクに近しいSNS(イラスト系とか)もまとめてみました。
間違ってたり、漏れてるSNSがあればバージョンアップしていただけるとありがたいです。
2005年から運営されている老舗、OpenPNE、現在動きなし。
http://www.filn.jp/
アクセスできたりできなかったりする。
消滅
http://www.pixiv.net/
2007年〜、ご存知、イラストに特化している。ここに含むべきではないかもしれないけど一応。
http://www.pixa.cc/
2008年〜、日仏合作らしい、国際的なオタクSNS、OpenPNE
2009年〜、SNSじゃなくてSMS(ソーシャルマッチングサイト)らしい。
2006年〜、同人系。コミケ系。最近はiphone、ipadアプリ配布したりしてる
2009年〜、circle.msと同じく、同人系 OpenPNEで運営されているっぽい
http://ja.curecos.com/
2010年〜、ブラウザ上で漫画が書ける、個人、OpenPNE
2008年〜、vip発、キモオタ専用というかキモオタも受け入れるSNS、招待制
多分個人、OpenPNEと思いきや独自システムに切り替えるらしい
http://www.fg-site.net/
2008年〜、フギュア系
微妙な線で失敗していて、それが積み重なった感じだね。
自社サービスのクオリティに自信があるなら、必要。マーケティングって、「(笑)」をつけるところ?
今後のことを考えて今までの5倍の広さにしました。
すでにサイトは過疎状態。
ここで雇ったマーケティングが何をしていたかを検証するべきだった。他社動向や自・他サービスのリーチの違いを確認する必要があった。だって、人が来てないんでしょ?
そりゃ当たり前。他社と同じものを使っても、同じサービスしか出来ない。ただ、
同じような機能をプログラミングする日々。
と言われているので、結局差別化が出来なかったのだろう。
ここは社長もそうだけど、設計者も悪い。事業コンセプトをものに落とし込んで、サービス品質をあげるのが実務の仕事でしょ? 君は何をしていたの?
申し訳ないんだが、サービスを作れなかった時点で、その社員について「エース級」と呼ぶのは疑問があるでしょう。
しかしPGがたりない!
他社に発注するべきだった。その技量を社長が持ってなかったんだね。
なんで、「よくある」は「よくある」けど、成功できるチャンスはあったという感じ。ただ、やっぱり事業コンセプトがどんなものだったか、確認しないとね。揶揄しているだけだと、またあなたも同じ会社にあたりますよ。
せっかくなんで軽くまとめてみる。
始まりは夢がいっぱい。
今思えばこのころが一番楽しかった。
このころがピーク。
今後のことを考えて今までの5倍の広さにしました。
現状脱出を目指していろいろ試行錯誤。
この辺りからいろいろ壊れはじめる。
このころmixiが人気絶頂。
開発陣からはOpenPNE使えば?とか声があったが社長が一蹴。
独自なものにこだわる。
とはいえSNS=mixiなんで、結局mixiのサイトみて同じような機能をプログラミングする日々。むなしい。
この辺りからバカバカしくなる。
はてなのようなブックマークサービス→ソーシャルブックマーク追加
とりあえずいろんなサービス追加しまくってサイトはカオス状態。
私もここで退職。あとは聞いた話。
しかし効果がなかった!
しかしPGがたりない!
しかしPGがたりない!
倒産した。
いまここ
これなんて俺の会社?って思った人は注意です。
これでだいたい3年ぐらいの話です。
そのくせ「成功しないのは制作陣が悪い!」とか言っちゃう人でした。
でも、ダメになっていったのは5~6辺りでそれまでは立派な人でした。