「nodejs」を含む日記 RSS

はてなキーワード: nodejsとは

2020-06-07

anond:20200607045358

web系に進むなら追加でcss終わったら

2020-03-22

anond:20200322200547

結局Webに縛られてる感じがするのはこっちの認識おかしいんかな

うん、その認識おかし

Nodeで動かすJSRubyとかPythonとかと同じようなもの

Webサーバーサイドが最大の用途だけど、別にWebでなくても使える

 

exeファイルチックにローカルにおいて起動できるような一人用のゲーム作れるかっていうとそうではないような気がしてるんだけど

RPGツクールXPからVX ACEまではrubyだったけど今のMVとかはnodejsJavaScriptだよ

それでなくても普通にローカル動作するゲームは作れる

2020-02-01

社長が自らWebサービスを開発したら社員批判された

とある受託開発の会社経営してんだけど、まぁ俺が元々フリーエンジニアやってた時の延長線上みたいな会社でさ。

と言っても、もう20年目で社員は25人で小さいながらもまぁまぁな規模なんだけど、売り上げは安定しないし、給料うなぎ登りだし。。

5年前にとある製品を俺主導で開発して、毎年本業受託の30%くらいの売り上げが立つようになっていい感じだったんだけど、

一昨年あたりから売り上げが下がり出して、もう今はほとんど0になってしまい、次の製品の開発が必至な状態なんだけど、

ほとんどの社員本業受託で一杯一杯だし、手が空いてる人といえば俺くらいしかいなかったのね。

まぁなんだかんだで、営業マネージメントも仕組みとしては回ってて、俺はキャッシュフロー管理と、勤怠が悪いような

不真面目な社員をガミガミ怒るくらいしか仕事はないわけよ。

元々Webエンジニアなので、NodeJSとかReactとか勉強し直して、今時のアーキテクチャーでまぁ今時のスタートアップ的な

サービスを作ってさ、今日社員みんなに次期製品のPoCとして発表したんだけど、アラフィフで元々ASP(Active Server Page)とか

JavaWebシステムを開発してたのが、フロントエンドWebpackから始まって、SCSS、ReactのHookとか理解して、バックエンド

ちゃんRestfulAPI設計してさ、DBMySQL結構頑張ったんだけど、反応がそれはもう微妙で。

まぁそれまで誰にも言ってなかったのも悪いんだけど、長い付き合いの社員社長がやるんじゃなくて社員からボトムアップ的に

やらないと盛り上がらないよと言われて、まぁ至極正論なんだけど、ただでさえ受託でパツパツなのに、誰がやるねん見たいなさ。

だったらトップが自ら動こうと思ったらこんなんで。ちなみにアイデアは本当に悪くなくて、実装も綺麗にしたんだけど、

まぁ多分社員的にはつまらない受託仕事の傍ら、イケイケの技術で自社プロダクトの開発をやりたいんだろうなぁ。

それが社長がやっちゃったから気にくわないんだろうなと思ったわ。

もう社長やめてまたフリーエンジニアやりたいなぁ、

バックエンドも、フロントも、AWSで超簡単サーバー作ったりめちゃくちゃ楽しかったわ。。

2019-04-03

スキル棚卸し記事が見つからない

ここ一年以内くらいにはてブで見たんだけど

翻訳記事で、フロントエンジニアスキルシートを見直してみた、的な記事見直したくて探してるんだけど見つからない。

nodejsとかvuejsとかを

名前だけ知ってる とか ちょっとできる

みたいなコメントつきで解説してたやつ

ブクマしてなかったのが悔やまれ

2018-10-14

anond:20181014203515

うわぁ。きっとこの人の中ではRubyが輝かしく見えてるんだろうなぁ。

PHPnodejsSDK提供しているWebサービスからほとんど見向きもされていないのにw

2018-02-07

コインチェック事件WebエンジニアSIerの融合の幕開けかもしれない

 Webサイト技術の高度化

Webでは単純にテキストサイトではない本当に色々なことができるようになってきた。

HTML5になって以降まさに飛ぶ鳥を落とす勢いだ。

ここ5年くらいでデスクトップアプリに負けないレベルSaasも出てきた。

SlackYoutube生放送GoogleドキュメントGoogle mapカーナビ代わりにしている人もいる。

Javascriptも相変わらず日進月歩TypescriptやらNodejsやらReactやらVue.js Three.jsなど、もうテキストサイト付属品ではないことは明らかだ。

個人的にはWebGLアプレットを使わず3Dの描画ができるようになったのは衝撃的だった。

 コインチェックで露呈したWebエンジニアの弱点

そんなわけで、Webはどんどん急激に高度化し大規模化してきている。

ここまで大規模化していったシステムセキュリティ的にもシステム的にもこれまでのような少数のチームがちまちま作るには手に負えない状況に来ているんじゃないかと思う。

それが表面化してしまった事件が今回のコインチェック事件ではないか

コインチェックはおそらくWeb系のエンジニア主体でイケイケで開発したんだと思われる。

デザインハイセンスUXも洗練されてる感じがする。

ただセキュリティが甘かった、つまりシステムとしてセキュリティ内面)に問題があった。

これはまさにWebエンジニアの弱いところを突かれたといっても過言ではない。

 WebエンジニアSIer

それに伴ってWeb企業SIer化していくんじゃないかというのが私の持論。

全てとは言わないが、これまでのWebエンジニアの開発スタイルはどちらかというとイケイドンドンでできたらいいや使えたらいいやの精神でやってきたんじゃないか

これでは大規模なシステムになるとセキュリティ保守も難しくなってくるだろう。

大規模なシステムはきちんとオブジェクト指向で作ってテスト駆動ウォーターフォール式で開発するのが筋ってものだ。長期的な目で見れば理にかなっている。

今後高度化していくWeb対応するためにはそうやって作っていくべきだろうし、自然にそうなっていくだろう。

大規模なサービスに関わるWebエンジニア自然SIer的になっていくんじゃないか

Googleスライドとかスプレッドシートヤバいくらい複雑なシステムだと思うしハイクオリティだとおもうんだけど、どんな開発体制で作られたんだろうか気になる。

2017-04-13

そろそろ初心者VimNeovimについて説明できる人が必要なのかもしれない

twittervimneovimの2語で検索すると勘違いしてる人がちらほらといる。

https://twitter.com/search?f=tweets&vertical=default&q=vim%20neovim&src=typd

特定ツイートURL引用したいがかわいそうだからやめとくけど、

誰かがちゃんとVimNeovimについて説明しないからこうやって初心者勘違いする。

pukiwikiよりもpukiwiki plusが良いみたいな考えね。

nodejsよりもio.jsとかvert.xが良いみたいな考えね。

それなりにVim精通してる人達VimNeovimが別物だということをちゃんと提示しないとダメだと思う。

こういうのは世界中のpatch投稿者モチベーションダウンにつながる恐れがある。

ちゃんと違いを知った上でNeovim選択するなら構わないが、よく知らないのにVimオワコンと決めつけるのは大至急やめなさい。

2016-04-01

月刊Vim 3月号 - ゼロ除算編

:echo 1 / 0
:echo 0 / 0
2147483647
-2147483648

きっしょwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

他の言語もチェックしてみるか

golang

package main

import "fmt"

func main() {
	fmt.Println(1 / 0)
	fmt.Println(0 / 0)
}

division by zero

php

echo 1 / 0;
echo 0 / 0;

PHP Warning: Division by zero

python 2

print 1 / 0
print 0 / 0

ZeroDivisionError: integer division or modulo by zero

python 3

print(1 / 0)
print(0 / 0)

ZeroDivisionError: division by zero

nodejs

nodejsだと1/0と0/0で異なるメッセージが表示された。

console.log(1 / 0);

Infinity

console.log(0 / 0);

NaN

luajit

luajitだとnodejsで表示されたメッセージの短縮形で表示された

print(1 / 0)

inf

print(0 / 0)

nan

haskell

修正しました thx @anekos

main = do
    print(1 / 0)

Infinity

main = do
    print(0 / 0)

NaN

java

public class Test {
    public static void main(String[] args) {
        System.out.println(1 / 0);
    }
}
public class Test {
    public static void main(String[] args) {
        System.out.println(0 / 0);
    }
}
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at Test.main(Test.java:3)

bash

#!/bin/bash

echo $((1 / 0))
echo $((0 / 0))
test.bash: 行 4: 1 / 0: 0 による除算です (エラーのあるトークンは "0")
test.bash: 行 5: 0 / 0: 0 による除算です (エラーのあるトークンは "0")



haskellnodejsとluajitはエラーにならないけどまあいい。

Vimはやべえよ。


結論言語わずゼロ除算はするな









しまった、4月だった。

2016-03-24

サーバスペックが低くても負荷の高いサイト運用したい

何を作りたいかというとマルチプレイヤーブラウザゲームが作りたいんだよね。

phpsymfonyを使ってみたけど重い。

俺の開発用のceleron 1コアのメモリ1GB環境では重すぎる。

isoファイルを10000個同時にダウンロードしてるぐらい重すぎる。

ページの読込みがなかなか完了しない。

こんなクソ重いフレームワークはそれなりのサーバスペックがないとパフォーマンスに影響が出すぎるので除外したい。

phpフレームワーク一般に言えるんだけどプロジェクト毎にプロジェクトルートなかにフレームワークのコアファイルを置くのがなんか嫌だ。

railsdjangoのように分離させてほしい。

nodejsシングルスレッドなので負荷の高いサイトで使うのは厳しそう。

pythonでもgolangでもwebsocketは使えるのでnodejsにこだわる必要もないしvert.xを使う選択肢もある。

日本ではvert.xの話題あんまり盛り上がってないよね。どこかの企業さんが実践で使いましたって記事を書いたら会社の知名度が上がると思う。

scala,golang,elixirこの3つの選択肢でいいのかな。

でも負荷の高いブラウザゲームやってる会社ってrailsとかphpだよね。

railsphpでも問題ないのかな。

redisをうまく活用しとけばあんまりそれ以外でボトルネックとなるようなことって無いのかな。

艦これやってるdmmとかは何使ってるんだろうね。

スクエニさんのオンラインドラクエもどうやってるんだろうね。

あと海外ブラウザゲームってほとんどがaws使ってるのでaws使えばいいのかな。

でも怖いよね高額料金を請求されたらさ。

金儲けの為にサイトを作らないとawsは使ってられない気がする。

初めのスタートダッシュは定額制のレンタルサーバクラウドでいいか。

2015-04-01

プログラムの癌(Runy)をなくすには

プログラムの癌(Runy)をなくすの前に人間の癌をなくすやり方について書いておこう

癌は熱に弱い。42度の熱で消滅する。心臓に癌ができないのは熱に弱いから 外部から熱をあてて癌を直す治療がある。ハイーパーサーミアという治療法で厚生省から認可がおりており健康保険がきく。1回3千円くらい 10回セットで3万円くらい 病院にいけばやってくれる。動物病院でもやっている。42度の熱をあてるだけ 手術がない 体に負担がかからない 副作用もない 入院がいらない 時間が取られない 抗がんん剤や複雑な手術をする必要ない。体を痛めない

でだ ここから問題だ まずハイーパーサーミアの機器を導入している病院が少ない。少ない理由病院が儲からないから 3万円では医者が儲からないしやりたがらない。最近ハイーパーサーミアが知れ渡ってきてハイーパーサーミアの操作できる人が不足を理由に取りやめる病院が出てきている。また一緒に抗がん剤抱き合わせてきたり、効果がないと否定してお金や体に負担がかかる3大療法をすすめてきたりする。3大療法はやらないほうがよい。放置もよくない。それより熱線をあてることに徹した方がいい。近くにハイーパーサーミアがなかったり、受けられなかったら、三井式温熱治療器やダイエットサウナおすすめする。治療が受けれるのであれば3大療法よりハイパーサーミアだけやる。3大療法もやめたほうがよい。ハイパーサーミアは高いステージから生還してるし、費用が安く、副作用もなく、時間が取ることなく、体に負担がかからない。

抗がん剤は結局正常な細胞を弱らすだけでがん細胞を消滅させるわけではないのでけっしてやってはいけない。もちろん放置もいけない。

三井式温熱治療器やダイエットサウナでも体に42度の遠赤外線をあてる事が出来る。

三井式温熱治療器はアマゾン楽天で買える。レビューがたくさん書かれていて癌に効果があったとたくさん書かれている。

ハイパーサーミア医療現場で使われているサウナ機器スマーテイ)もアマゾンで売っていたりする。

これで外から42度をあて続けるだけでよい

三井式温熱治療器 部分的に当て熱線を続けることができる機器

三井式温熱治療器の楽天レビューを見てみる 癌治療効果があったと高評価が150件が書かれている 要確認

http://review.rakuten.co.jp/item/1/202385_10001070/1.1/

三井式温熱治療器のamazonでも癌治療効果があったと多くの高評価が書かれている 要確認

http://goo.gl/qrq7gj

6万円で買える42度の遠赤外線ダイエットサウナ

http://goo.gl/JMtOS3

これらのキーワード検索してみればわかる。

心臓 癌

癌 熱

癌 三井式温熱治療

癌 ダイエットサウナ 

それからブログ検索

ハイパーサーミア

癌 熱

などを調べてみると実際受けた患者感想が書かれている。どれも末期だとか手の施しようのないといわれたとこから生還している。

ちなみに血液性の癌や白血病には高濃度ビタミンC点滴が有効 保険はきかない

これらの治療動物にも有効

日本医療は米に10年 欧州に20年遅れていると言われている。

なので他の病気に関しても日本医者の言う事よりもまず欧州がどんな治療をしているか調べてから判断した方がいい。医者はSilrだと思え

欧州では2008年の段階で癌が減っている事が記事になっている。

www.news-medical.net/news/2008/04/10/30/Japanese.aspx

2ch ハイパーサーミアスレ

http://hayabusa6.2ch.net/test/read.cgi/cancer/1251284895/

他にもここに詳しく書いてあるぞ!

http://apps.wiki.fc2.com/wiki/その他

プログラムの癌と言えば動的言語のことだろう。それを広めようとする関係者開発者もまたがんだ。

メーカー製の静的言語フレームワークを使えば誰でも簡単に高度なことができる。

わざわざ出来損ない言語を引っ張りだしてきて、無駄に苦労したり、無駄な苦労を広めたりする輩はほんとうにがんだ。

その苦労は数年後無駄に終わる。動的言語は数年ごとにバージョンアップを繰り返し、今書いているもの

すべて動かなくなる。2007年頃に意図的に起こされた第一次Rubyブーム 1.7のRubyはもう動かない。

互換性の問題で起動できないし、サポート対象外から脆弱性だらけ 今もRailsNodejs angluerなどが

意図的ブームが起こされているが、それらも数年後には使えなくなる。負債しかならない。

IT経営者にとってはそのほが都合いいのだろう。仮に辞められてもその技術で手間がかかりすぎて独立はできない。アプリストアがあるわけでもない。課金プラットフォームがあるわけでもない。 だからIT経営者はいきばのない技術者酷使し放題だ。動的言語技術者自由にさせない鎖付きの言語なのだ

>鎖付きの言語

鎖のついてない言語は何か?それはC#だ。C#システムを簡単に作れる。管理画面サイドはexeアプリで作り、サーバーサイドはasmxとado.net ORMを使えば一日でWEBアプリケーションが作れてしまう。リファクタが効き、ビルドができエラーは直ぐ見つかりアップデート自動ソースを書き換えてくれる。C#ができるとUnityからlot Robot スマートフォン タブレット One Windows 医療 業務用アプリまで 様々な分野に進出することができる。Railsではこうはいかない。Webしか作れないし、3年後にはバージョンアップが行われ、その都度のコード修正時間を取られる。つきっきりになっていないといけない。他の事が出来なくなる。ビルドできないからすぐバグがわからない。バグ潰しに時間を取られる。動的言語現場がいつもギスギスしてるのは、バグが探しの疑心暗記がいつのまにか人に向けられていじめみたいなことになっている。

IT派遣事業者にとっても動的言語はいつまでも脆弱性が発生し続け、保守作業がうまれる都合のいい金になる言語だ。

企業無料で教えるのには彼らだけが儲かるカラクリがあったのだ。今もRuby On Rails Ruby JavaScript Node.jsなど意図的ブームが起こされている。

メーカー製の静的言語やっている身からすると動的言語をやる輩はとても愚かだ。静的言語なら自分で書いたコード自分資産になる。

静的言語で書いたコードリファクタが効くし、コンパイルバグがすぐわかる。コードを最新のバージョン自動で書き換えてくれる。

共通ライブラリを他のプロジェクトで使い深い内容で書いても、元のプロジェクトで開いた時にビルドバグがすぐわかるから、深い内容で共通ライブラリを書く事ができる。

自分用の共通ライブラリを出来上がってくると開発速度があがっていく。無理に20倍速の早さとかメデイアで煽られて複雑に書かなくても、一度書いた物を組み合わせて使い回していけば生産性普通にあがっていく。

動的言語では共通ライブラリを深い内容を書くのは難しい。バグ発見時間がかかるから、浅い内容のことしか書けない。生産性があがらない。ファイル管理に追われて断片化したり バグを探したり バージョン管理に追われたり いつまでも手間が掛かる始末だ。

なぜこんな無駄言語を使い続けるのか なぜあのブックマークRubyの時だけ数字がはねあがるのか不思議しょうがない。Botブックマークさせてるのではと疑ってしまう。

2007年頃のステマRubyブームで騙された技術者は酷い目にあってたいはんはRubyから去っている。

求人がある訳ではない。アプリストアがあるわけではない。脆弱性は出し続ける。すぐ互換性がなくなる 使う用途が限られている。汎用性がない

加えて他の動的言語にも言える事だか

フレームワークの乱立 CMSの乱立 フレームワーク自体バージョンがあがると別ものになる。フレームワーク自体脆弱性がありサポートしてくれない。プロジェクトごとにフレームワークを学び直さないといけない

フロントサイドとサーバーサイド 両方 動的言語選択してしまってカオスな状態。スパテッゲテイすぎて再利用は不可、資産は築けない。

これが動的言語真実だ。

こんな安心して生きていけない言語は止めて、iPhoneアプリC#アプリの開発をやるべきだ

医者は儲かるからという理由で人の命よりお金になる抗がん剤を優先するのと、Silrが儲かる理由脆弱性が多い動的言語を推奨するのは同じムジナだろう。

2013-01-18

素人が完全自作SNSを二週間運営してみてわかったこと(後始末編、技術編、モチベーション編)


素人が完全自作SNSを作ってみてわかったこと。

http://anond.hatelabo.jp/20130104184115

元増田です。

ひっそりと公開したはずのtag-chat.net(http://tag-chat.net)ですが、

まさか、こんなに反響を頂けるとは思っていなかったので、びっくりしました。

素人のフリをしているとか、出版社ステマだとか色々言われましたが、嘘は一切書いてないです。

ステマというか、ウェブサービス公開後の状況を知っている方からするとマイナスステマしかなっていないような気がします…。

公開してから、色々と発見というか気づきがあったので、それを共有できれば幸いです。あと、tag-chat.netの中身についてなど。



増田記事を公開してから今までの経過~

・意気揚々と自作SNSを公開したものの、アクセスが全くこなくて途方にくれる。

             ⇓

・以前、完全に一致を作った増田の方が、増田記事を書いてからアクセスが急に来たと書いてあったので真似して書いてみる。

             ⇓

・翌日ごろからアクセスが集中。ビビる。「うちの会社で働きませんか?」と言ったお誘いのメールをたくさん頂く。

いきなりの出来事にパニックになっている間にも増田記事が拡散していき、アクセスが急増する。

             

             ⇓

アクセスが爆発する。1時間あたり二万アクセスというアクセスを捌ききれずにサーバーが落ちる。サイトのウリであるが、メモリ使用量

が最も高いマッチングチャットを一時使用停止にする。

             

             ⇓

・その後、サーバーを増強。エラー情報や、寄せて頂いた情報をもとに各種エラー情報や、使い勝手などを改善

             

             ⇓

現在、安定稼働中。おかげさまで、ユーザー数もゆるやかに増加していて、基本的な機能も正常動作していますユーザー数はもうすぐ

1000人に届きそうでありがたいばかりです。


と、いうわけでなんとかようやく落ち着き、ウリのマッチングチャットも正常に作動しているようなので、後記事を書きます





~後始末編(Webサービスを実際に運用してみて)~

ウェブサービスの公開前に注意すべきだったこと。

①・セキュリティについては書かないほうが良い。色々といじられる。

前回の増田記事で、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ちゃんねるとかで炎上したり、なんか面白そうなものを見つけてお祭り騒ぎする、ちょっと怖い人たちという

イメージだったのですが、それが今回のことでガラリと変わりました。

 本当に優しい人が多くて、どこの馬の骨ともわからない奴の作ったウェブサービスを使ってくれるだけでなく、感想や励ましのメール

どをたくさん頂きました。

 遥か雲の上の存在だと思っていた会社の方からメールなどを頂きました。本当に感謝してもしきれません。

 





技術編~

Tagchatの技術的なこと。

①・nodejsを使って外部にサービス公開するなら、認証必須。主に不正な負荷を減らすために。


さっき書いた、「セキュリティについてはあまり書くな」という話と矛盾するのですが。

nodejsでのセキュリティの話です。

nodejs、すごくアクセスさばけて、なおかつ軽いということで便利なんですが、サーバーなので、基本的にリクエストを受けたら非常に素

直に返事します。

例えば、nodejsとsocket.ioを使って、単純にメッセージサーバーに送るとして、クライアント側で

socket.emit('hoge','hoge');

のようにすると、サーバーはどこから来たアクセスなのか、とか悪意のあるアクセスなのか? とか一切気にすることなく、素直に'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

nodeのプロセスデーモン化してくれる便利ツール。

様々な使い方があるようですが、stop,list,startの3つぐらいしか使いませんでした。まだ、研究中です。

参考URL(基本的な使いかたが非常にわかやすく書かれています

http://nantekottai.com/2011/08/15/node-js-based-service-with-forever/


・mongoose

nodejsからmongoDBを扱うのに最適。

ドキュメントは色々ググったのですが、結局公式のドキュメントが1番わかりやすかったです。

http://mongoosejs.com/







モチベーション編~

■一人でウェブサービスを作る上で、心の支えになった記事。

はまちちゃんさんの、「セキュリティ過敏症の話」。

http://d.hatena.ne.jp/Hamachiya2/20080131/security

とにかく楽しんで、作ってみることが大事だよ、というお話です。すごい勇気づけられます


小飼弾さんの産声の話。

http://blog.livedoor.jp/dankogai/archives/51837985.html

弾さんは、お金持ちで、腕は一流で、PHPこき下ろすし、なんかすごく怖い職人イメージだったのですが、このエントリーを読んで、クソ

まみれでも産声を上げてみようと思えました。

実は優しい人なのかもしれません。私の高校時代担任先生にどことなく似ています

 





■お詫びと訂正

前回の増田記事で、OpenPNEについて間違った記載をしてしまいました。ソースコード公開に関する記述の部分です。

OpenPNEではそのソースコードを改変したら、そのソースコードを公開しなくてはならないと書いたのですが、これは間違いです。

OpenPNE方々には大変ご迷惑をお掛けしました。申し訳ありませんでした。




あと入家さんに謝りたいです。

勘違いサブカル野郎とか言ってすいませんでした。

フェイスブックにもとりあげて頂いたそうで、ありがとうございます

怖いのでどんな投稿なのかはまだ観ていませんが、本当にありがたいです。







最後に。

ウェブサービスをコツコツと作り続けて公開したところ、増田記事のおかげもありたくさんの反響を頂きました。


ただ、別にウェブサービスを公開したからと言って、実際のところ何かが劇的に変わったわけでもないです。


グーグルアドセンスは支払い規定の一万円を超えていないので、手元には一銭も入ってきませんし、実名出して行動できなかったので現実

ではほとんど反響はなかったです。

あいかわらず休日地元ゲームセンターレトロゲーをやって時間をつぶしていますし、学校から帰ってきたらももクロライブを観て

Chai Maxxを踊ってから寝るだけの毎日です。それでも結構楽しいのですが。

ただ、ネット上で様々な先輩エンジニアの方々や、同年代で同じようにフェイスブックが嫌いな方から励ましのメールをもらいましたし、

本当に、びっくりするような充実した二週間でした。

はてブで人気のエントリーにあがった時のスナップショットは未だに大事にとってあります

tag-chat.nethttp://tag-chat.net)を作って本当に良かったと思っています

2013-01-04

素人が完全自作SNSを作ってみてわかったこと。

ひっそりと、Webサービスリリースしました

http://tag-chat.net

で、チャットがメインのSNSです。

自動マッチングしてチャット相手を見つけてくれるマッチングチャットや、すぐにチャット相手を見つけてくれるフリーチャットコミュニティチャット、フレンドチャットなど、とにかくチャットがメインのSNSです。





自分について

昨年の4月からプログラムを学び始めた素人。22歳。札幌在住。





■今更SNSを作ろうと思ったきっか

FaceBookがウザい。というか嫌い。

これがきっかけ。

顔本が良いSNSだと話題になっていたので、実名登録してみた。大学の知り合いが見つけてくれて、友達登録などが増える。(ほとんど話したことがない人から友達登録が来て、「おぉ!これで俺も友達が増えるんだ!」とワクワクしていた)。

が、流れてくるのは自慢ばっかり。

コミュ障彼女はおろか、女友達ほとんどいない自分にとって顔本で「飲み会行ってきたぜウェーイw」とか、「○○ちゃんの誕生日なう!」とか、「○○勉強会行ってきたました! みんな熱い人ばっかりで最高!」とか書いてあるのを見て「こんなSNSは嫌だ……」と思った。


ようするに嫉妬です。

で、自分の好きなようにSNS作ってみたいなぁ。と思いました。

自分趣味レトロゲーなので、自分と同じ趣味の人と話せたら素敵だな。ということでチャット式のSNSを思いつく。

が、Webサービスを独力でつくるのはこれがはじめて。というより、プログラム自体がはじめて。

案の定、前途多難だった。

やはりザッカバーグは天才だった。

そして私はアホだった。

■とにかく計画を立てる。

ざっくり、どんな機能が欲しいか考える。自分の力じゃ無理そうでもOK.とにかく妄想を爆発させる。

妄想した機能

・基本的なSNS機能

メッセージ機能コミュニティ機能あしあと機能日記機能コメント機能つぶやき機能など。

・核となるチャット機能

ミニティ専用のチャットルーム、アカウント専用のプライベートチャットルーム(鍵をかけられる)、自動チャットが開始されるフリーチャット自分の指定した条件にあう人を自動で見つけてきてくれて、チャットができちゃうマッチングチャット

などなど。






■そんなに簡単にSNSが作れるわけがない。

妄想するのは簡単だ。でも、全くわけがからない。何から手をつけていいのかわからない。

とりあえずグーグル先生相談

OpenPNEという簡単にSNSが作れるものがあると知る。

「うはwwww これで勝つるwww」と思ったけれど、どうやってチャット機能を追加して良いのかわからなかった。改変しようにも謎の記号がめちゃくちゃにならんでいてどうして良いかからない。

しかも、改変したら改変したでそれを全世界に公開しなくちゃならないらしい(オープンソースというらしい)。

無理だ。

と思ったので1から勉強することにした。

とにかくサーバーサイドの言語と、データベースについて勉強しろや! とのことだった。






■使う言語について。

サーバーサイドを扱える言語はたくさんあって、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

基本的には、よくわかるPHP概要をつかんで、それから

基礎からMySQL勉強。 http://www.amazon.co.jp/dp/4797344385/

最期

ハイパフォーマンスMySQL http://www.amazon.co.jp/dp/4873114268/

インデックスの貼り方などについて勉強した。






チャットに向いている技術

とりあえず掲示板くらいはつくれるようになったので、チャットについてリサーチ

ajaxとかよくわからん技術nodejsを使った非同期処理などがあると知る。

nodejsはC10K問題という問題を解決するすごいものらしく、かっこいいらしいのでこれを勉強することに。

ついでにnodejsと相性の良い、mongoDB勉強することに。







javascript勉強

よくわかるjavascript  http://www.amazon.co.jp/dp/4839941874/

終わったら、

パーフェクトjavascript http://www.amazon.co.jp//dp/477414813X/

パーフェクトjavascriptnodejsについてものすごく詳しく書いてあったので、とても参考になった。このあたりで、LINUXというOSを扱わなくてはいけないと気付き、自宅PCウィンドウからLINUXubuntu)に変えた。


mongoDB勉強

これはとにかく触ってなんぼでした。MySQL感覚が違い、苦労しました。

CakePHPmongoDBを扱うのは

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なども利用することに。


このへんについては、

http://bren.jp/blog/%E3%81%95%E3%81%8F%E3%82%89vps%EF%BC%9Anginx-apache-%E6%A7%8B%E6%88%90%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95/

このような解説記事がたくさんあったので、参考にさせていただきました。

調子にのって、最期グーグルアドセンスも貼ってみました。




■ようやく完成。

で、なんとか完成しました。

いちおう妄想していた機能は実装できたかと思います

製作期間は勉強期間なども含めて、大体9ヶ月くらいです。

使ってみた感想や、ダメ出しなど頂ければ狂喜乱舞します。よろしくお願い致します。









モチベーションを維持するためにやったこと。

あっさりと書きましたが、実際は失敗の連続でやる気が萎えてばっかりでした。

疲れて帰ってきて、なにもやる気の起きない時もありました。


そういう時は、とにかくサポートページのQ&Aの1文でも良いから書いてみるとか、とにかくパソコンエディターだけ立ちあげてみるとか、していました。

ものすごーく覇気のない目でキーボード打ち続けていましたが、それでもなんとか完成することができました。惰性だろうとなんだろうと、少しずつは進むのだとわかりました。

SNS作ってみたわかったこと。

やはり1から完全自作をするのは無謀だった。でも、プログラムをやったことのない素人でも約一年頑張ればそれなりのSNSもどきを作ることができた。

これも先人たちの作ってくれたフレームワークや様々なツール、そして参考書などのおかげ。

私のようなアホでも頭の良い人の力を借りればなんとかなりました。ありがとうございます

そしてプログラムは一人でも出来るので、私のように非コミュでも楽しめる素晴らしい趣味である

現在

今はRubyに夢中です。くり返し処理がすごくきれいにかけるので素敵な言語だと思っています。あと、javascript面白いので毎日いじくって遊んでいますPHPももちろん触っています

非コミュあいかわらずですが、プログラム楽しいので前より幸せです。


仕様した技術など一覧

サーバー さくらVPS4Gプランを使用しています

Apache,Nginx,nodejsを利用しています

データベース mongoDBMySQLを使っています

フレームワーク CakePHP,socket.io

使用言語 PHP,Javascript

できたもの http://tag-chat.net

 
ログイン ユーザー登録
ようこそ ゲスト さん