はてなキーワード: MongoDBとは
https://survey.stackoverflow.co/2024/technology
https://survey.stackoverflow.co/2022/#technology
https://survey.stackoverflow.co/2020#technology
- | 2020 | 2022 | 2024 |
PostgraSQL | 36.1 | 43.6 | 48.7 |
MySQL | 55.6 | 46.9 | 40.3 |
SQLite | 31.2 | 32.0 | 33.1 |
SQLServer | 33.0 | 26.9 | 25.3 |
MongoDB | 26.4 | 28.3 | 24.8 |
Redis | 18.3 | 22.1 | 20.0 |
MariaDB | 16.8 | 17.9 | 17.2 |
Elasticsearch | 13.8 | 12.2 | 12.5 |
Oracle | 16.5 | 11.5 | 10.1 |
※2022年は他の年とおなじ小数点1桁にそろえるために四捨五入してる
10年前のブログだけど、すでにそういう指摘がされてたみたいだね
前の現場ではそれで採用されてた。あと、型定義とかをフロント、バックで共通化できるから開発効率も上がるだろうと。(上がんなかったけど。)
正直、
みたいなことが多くて、言うほど使いやすく無いよな…、とは思った。
というか言語合わせたけど、フロント担当はバックエンドに謎の苦手意識持ってて触ろうとしなかった(逆も然り)ので、全く意味なかったよな。
シェアウェア(という表現はおいておいてのやつ。https://anond.hatelabo.jp/20230124045812)の記事が面白かったので、自分の得意分野の領域でいろいろ紹介します。
基本的に、SaaSのサービスは便利だけど、あれもこれもと契約していったらサブスク破産するので、
もともとownCloudっていうDropbox代替があったんだけど、そこから分派して今も機能開発が続いている。
興味深いのはLAMP構成なので、VPSや自宅サーバーじゃなくても、レンサバで動くのがいいよね。
データ保存領域はオブジェクトストレージ(S3互換)も利用できるので、例えばWasabiなんかと契約してお安く済ませてしまうのも全然アリかと。
最近はカンバンシステムって、単体で使うんじゃなくていろんなアプリの中で使われる印象なので、今更Trelloだけ使いたい、なんてニーズはないかもだけど、
そこまで複雑でなく小規模なプロジェクトとかだと、意外とTrelloだけでいいよね、みたいなこともあるかな。
そういう時は、これを使うといいかも。
ちょっとUIの雰囲気が違うだけで、まんまSlackです。絵文字の追加もできるし、APIもあるし。人によって好き嫌い分かれるスレッド機能も、まあ、あのスレッド機能のまま。
n8nと書いてnodemationと読ませるらしい。初見殺しすぎんだろ。
ZapierやIFTTT、無料枠あるけど、あれもこれもやり出すとすぐ無料枠埋まっちゃうので、これ結構いいと思うんだけどな。
kintone使ってる会社増えてると思うんだけど、まだまだ1ユーザー1500円ってのは高いので、零細企業は導入し辛いと思う。
で、それの代替になるのがExment。UIがkintoneとは少し違うので代替と言い切れないかもしれないが、
やれることはkintoneのソレと全く同じなので、用途代替はできる。
開発も日本企業なので、UIも日本語化されている。LAMP構成なので、レンサバでも動くよ!
そもそもAirtableって何やねんって人もいるかもしれないけど、kintoneとGoogleスプレッドシートをいいとこ取りして、Trelloとガントチャートを足した感じ。
これもまあまあいい感じでZoom再現してます。Zoomの方が新機能の追加早いけど、Jitsiも頑張って追いついている感じです。
ただ、やる内容が複数人でのリアルタイム動画配信なので、サーバースペック・回線スペックはまあまあ必要なので要注意。
こちらは使ったことないんだけど、よりオンライン授業向けらしい。
最近よく見かけるようになった、オンラインミーティングとかの予定をブッキングさせるSaaS。
あれのはしりがCalendlyで、日本でもいくつかそれのSaaSができてますね。
あれらも無料枠だと1カレンダーだけしかできなかったりするんだけど、これなら好きなだけブッキングさせられます。
ECサイトとか、Webマーケティングを重視してるサイトによくある、画面右下に吹き出しアイコンがあって、チャットウインドウがぴょこっと出てくるやつ。
日本ではWeb接客とか言われてるけど、あれの代表的なSaaSがIntercom。Zendeskは、どちらかというと内部ツール向きかな。
これのOSS版がChatwootとPapercups。自社サイトにWeb接客入れたいけど、費用抑えたい、って時にどうぞ。
この手のツールがないと仕事にならないという人も多いと思います。
これまでだとRedmineがそれのOSS版的立ち位置でしたが、さすがにイマドキあのUIはないなぁ、と。
OpenProjectは、Microsoft Projectの代替をイメージしてるみたいですが、
ガントチャートにカンバンがデフォルトで使えるので、BacklogやAsanaの代替にはちょうど良いでしょう。
ただ、そんな高度なことしてるわけではないのに、サーバーの要求スペックはちょっと高めなのでご注意を。
UA廃止でGA離れが始まってるとも聞きますが、疎開先として有名。
PHPで動くので、PHPやWordPressでできたサイトに一緒に入れちゃってもいいと思う。
HeadlessCMSは、データ表示を持たず、フロントエンドへAPIを通じてデータを渡すタイプのCMSのこと。
このジャンルでは、SaaSだとContentfulが有名だけど、OSSでもいろいろある。
Node.js製。歴史があるので、結構いろんなことができる。
WordPressのGutenbergエディターを取り込んだプラグインなんかもある。
User認証も持ってるので、CGM的なサイトを作ろうと思ったらできなくもない。
これもNode.js製。利用できるDBが幅広く、既存のデータベースも活用できる。
なので、既にPostgresSQLとかでデータを持ってるんだけど、
非エンジニアにもデータを触らせるためのフロントエンドが欲しい、ってニーズに良いかも。
PHP製。SQLiteとMongoDBで利用可能。MySQL/PostgreSQL使えないのがちょっと残念。
近年、本腰入れて自社ECサイトをやろうと思うと必ず選択肢に上がるShopify。
インテグレートパートナー向けのエコシステムも充実してるので、取り組み始めるエンジニアやシステム会社も多い。
ヘッドレスコマースや越境ECには向いているものの、これをセルフホストしたい、というニーズに応えたのがmedusa.js。
ざっと見てみただけだけど、モダンな構成で、今時のフロントとバックエンドを分けた構成でやりたい、というのには向いている。
プラグインにmedusa-marketplace.jsというのもあり、Amazon的なマーケットプレイスも実現可能。
昨年、Adobeに買収され、デザイナーたちを驚愕させたFigma。
先日はAdobe XDが終了のお知らせとなり、UIデザイナーたちの不安は募るばかり。
そんな提供企業に振り回されたくないなら、このPenpotでUIデザインしよう。
Figmaほど機能実装はされていないが、まあまあ一通りのことはできる。
Figma代が嵩むとお嘆きの制作会社なんかは、一考の余地あるんじゃなかろうか。
企業によっては、コンタクトフォームをたくさん作りたいという会社もある。
人材採用のフォームを職種別に細かく分けたい(しかも頻繁に募集職種が変わるとか)
Google Formで大体解決しそうだけど、それをGoogleに頼りたくないならこちら。
まあまあ機能豊富なので、人によってはGoogleFormよりもこちらを好むかも。
DockerベースのWebメールUI。送受信に必要なものを、丸っとDockerで用意してくれているので便利。
HubSpotは、いわゆるMarketing AutomationとCRMを一体にしたツール。無料枠もあるが、かなり限定されている。
MauticはMarketing Automationよりの機能が多く、ユーザーのサイト上での回遊をビジュアル化してくれたりする。
SuiteCRMはザ・CRMという感じ。SalesForceをデフォルトで使う感じに近い。
ツールが分かれてしまうのは辛いところだけど、それぞれにAPIがあるので、うまく繋げられると強力なツールになってくれるはず。
Webサービス作ってると、メールの通知や一斉配信などがあると思う。
通常これらはSendGridや、AWS SESなどで処理すると思うが、これらにもOSS代替がある。
PostalはDockerでメール周りのもの全部用意してくれているので、かなり楽。
WordPressをモダンにしたような感じで、EC機能もデフォルトでついてる。マルチサイトも標準。
Jimdo/Wix代替と書いたが、もちろん自分のサイトをMicroweberで作ってもいいが、
自前ホスティングして、JimdoやWixのようなサービスを始めることもできる。
テンプレートをいくつか作っておいて、Stripeを仕込んでおけば、今日からあなたもJimdo/Wixのような事業を始められるわけだ。
JImdo/WixとSTUDIO/Webflowは一緒くたに語られがちだが、明確な違いがある。
前者はプリディファインドなブロックをGUIで構成するのに対し、後者はDOM要素ベースで構築していく。
つまりよりHTML/CSSによる細かなデザインコントロールがしやすく、Webデザイナーが親しみやすい。
それのOSS版がWebstudio。まだアルファ版だが、フロントエンドはそれなりによくできているので、
バックエンドを自前で用意してStripeを仕込んでおけば、今日からあなたも(以下略
Facebookなんか使わねーよ、っていう人も多いかもしれないが、
特定のコミュニティの中でコミュニケーション取るには、FacebookのUIと機能は優れていると思う。
なので、サークルとか同窓会、あと自治会とかPTAなんかにもいいんじゃないだろうか。
Netflixの代替って、Amazon Primeとかじゃねーの、と思われるのかもしれないが、そうではなくて、
あなたがNetflixみたいな商売したいならこれを使うといいよ、というのがJellyfin。
いや、そんな商売しないよ、と思うかもしれないが、
使いようによっては、おじいちゃんおばあちゃん向けの子供動画配信サービスとして構築するとか、
Stripeと連携して、劇団やバンドのオリジナルの配信サイトを構築するなんかも面白いと思う。
今更誰もYouTubeやVimeoの後追いをしようとはしないでしょうが、
複数のユーザーから動画のアップを受け付けて、それを閲覧したい用途もあると思う。
例えば、軽音部で複数のバンドが練習風景を録画したのを定期的にアップしたりとか。
学習塾で、授業の録画を授業ごとにアップしていったりとか。
ZoomやGoogle Meetのような双方向ではなく、一対多の一方通行配信。
個人的には、企業のウェビナーツールとしての可能性を感じる。(Zoomのウェビナープランとか高いもん)
1つのメールアドレスを複数人で運用したい時のツールがメールワイズとRe:lationどちらも日本のSaaS。
FreeScoutはOSSだけど、海外製。一応日本語化もされてるっぽい。
ECサイトの顧客問い合わせや、営業チームのプライマリー対応なんかに良いと思う。
Bubbleってなんぞ? という人のためにお伝えしておくと、ノーコードベースのWebアプリ開発ツール。
データエンティティを設計したら、自動的にCRUDを作ってくれて、フォームを配置するというような感じ。
Bubbleはそれ系の老舗で、歴史が長い分ノウハウも溜まっており、連携できるサービスも多い。
ただ、ベンダーロックインされるし、季節的なキャンペーンとかでは、アプリを使用しない期間もサブスク費用がかかる。
Budibaseは、Bubbleの思想に一番近い感じ。凝ったUIが必要なければ、ざっくりコレでなんでも作れちゃう。
AppSmithも同じような感じだが、これはDBをあらかじめスキーマ定義しておかないといけないところが若干不便かな。
ToolJetはルーティングURLの概念がなく、本格使用を諦めたんだけど、最近アップデートしたらしいので、そこのところどうなってるかまた確認しときたい。
他にもこの手のやつあったら、いろいろ教えて欲しい。単純に好きなので。
>「Cloud Firestore」「Amazon DynamoDB」「MongoDB Atlas」
>↑俺、全部知らない。。。
>けど、こうしたDBは総じて高いよね?
パブリッククラウドエアプかよ
この記事を見てびっくりした。
https://laiso.hatenablog.com/entry/nope-sql
まずビックリしたのは「DBってそんなにお金かかる?」という点。
俺は1日100万PVほどのエロサイトを運営しているが、WEBサーバ1台、DBサーバ1台、画像サーバ2台で動いているぞ?
VPS4台で月額6000円くらい。
次にビックリしたのは、個人開発なのに難しそうなDBサーバを使っている事。
「Cloud Firestore」「Amazon DynamoDB」「MongoDB Atlas」
↑俺、全部知らない。。。
でもそれって、大規模サイト向けじゃない?
そりゃー、本業でこうしたDBを使っていて、それを個人でも~、ってのは分かる。
けど、こうしたDBは総じて高いよね?
>Render $7/month〜
>PlanetScale $29/mo〜
>Supabase $25/mo〜
うん高いね😂
VPSでよくない?
そもそもだけど、個人サイトの初期なんて、VPSですらオーバースペックじゃない?
まとめ
やたら難しそうなDBが増えたよね。
なんだかカッコいいし、業務で必要だし、トレンドなのはわかる。
けど、個人サイトにおいて「それが最適なの?」と言われると、95%くらいのサイトで「違うよね」となる。
個人サイトなら「さくらVPS」「conoha」「さくらレンタルサーバ」などで事足りる。
十分じゃね?
あと、「メンテナンス時間とコストのトレードオフも」って書かれてたけど。
バックアップとか?
それならcronで自動化しとけばよくね?
ほっといても勝手に動いてくれる。
DBを設計する場合、パスワードのカラムを何文字にするか決めなければならない
これを最大2万文字とかにできなくもないが、DB容量を圧迫するといった理由で8文字や10文字に限定していてもおかしくはない
MongoDBのようなオブジェクトDBなら別だがSQL系のDBならこの理由が最もあてはまりそうに思う
同様の理由で文字種にも制限をかけてそう(UTF-8とか送られたら面倒)
境界値テストとしては最大文字数を試さないといけないが無制限だとそれができなくなる
100文字でテストするとなると、仕様としては100文字が限界ということになって文字数制限をかけることになる
ただ、それなら8文字とかで制限している理由として弱い気がする
無制限ということは極端に言うと1GBのパスワードを受け付ける、ということになる
1GBのハッシュ値を計算するのはブラウザ側になるのだが、1GBのハッシュ値計算が重くて使えない、という苦情が来るかも知れない
ただ、これも1000文字とかにしてしまえば良くて、8文字にしている理由にはならない
ウォーターフォールで実装する場合に上位レイヤでの仕様を決めるのはプログラマーでない場合が多く
定型のエクセル仕様書に「パスワードの最大文字数」というセルがあって、そこにデフォルトで8という数字が入っている
上位レイヤで仮にそこに100とか1000とかの数字を入れたとき、下位レイヤで何が起こるかわからない
つまりそこに8と書いた人が現代にいるのではなく、誰も決定していないから文字数制限が起きている
下位レイヤでの実装側は平文保存の危険性を十分に理解しているのでハッシュ値(とソルトなど)を格納する
多分、仮説4だと思うが、仮説1でないことを信じたい。
オープンソースcURLの作者、某大企業から「24時間以内にこの質問に答えるように」との無礼なメールを受け取る - Publickey について思ったことをつらつらと。
log4shell と呼ばれる脆弱性が 2021 年 12 月にあった。これは Java というプログラミング言語でプログラムする際に、動作のログを記録するのに非常によく使われるライブラリ log4j にとても危険な脆弱性があった。なにがそんなに危険かっていうと
マインクラフトのサーバが乗っ取られたとか被害も有名。詳細は Piyolog さんの Log4jの深刻な脆弱性CVE-2021-44228についてまとめてみた - piyolog あたりを参照。
そんなわけで即座に影響範囲、脆弱性のない新しいバージョンになっているか調べろ!って IT 関連企業はとてもバタバタしていた。
という背景の中、オープンソースのソフトウェアである cURL の作者にとても失礼な log4j の問題に関する質問メールが送られてきて、「サポート契約すれば即座に教えてあげますよ」ってかっこいい返しをして盛り上がっている。
cURL (https://github.com/curl/curl]) はオープンソース(以下 OSS)の通信ライブラリとコマンドラインツール。 Linux などのサーバ上からファイルをダウンロードしたりするのにとてもよくつかわれるライブラリ。
C言語で書かれている。
ライセンス は MIT を参考にした独自ライセンス https://curl.se/docs/copyright.htm]
OSS は基本的に無保証で提供される。そのことはライセンスに明記されている。
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
そんな OSS に対して、
「あなたがこのメールを受け取ったのは、■■があなたが開発した製品を採用しているためです。私たちはこのメールをあなたが受け取ってから24時間以内に、お読みいただいた上でご返答いただくよう要求します」
といった上から目線のメールを開発者に送るというのは、IT 企業として無知にもほどがあるといったところ。加えて log4shell 問題、名前のとおり log4j の脆弱性なので Java でかつ log4j を使ってなければ影響はないのに、C言語でかかれた cURL に問い合わせているので問題を全く理解していない。(Java の j が消えるので log4shell という命名はどうなんだというのは個人的にある。つーか Poodle とか Spectre とかファンシーな名前つけてあそんでんじゃねーとも思う。)
なお cURL はどうやら開発者の Daniel Stenberg 氏が wolfSSL というところを通じて商用サポートを提供しているらしい。 https://curl.se/support.html]
ということで、「サポート契約を結んでいただければ、喜んですべて速やかにお答えしますよ」 というのはネタでもなんでもなく、普通の対応。
そしてブログに書いてある2回目の返信で、David と名前を間違えられたのに対して、Fotune 500 の巨人ということで "Hi Goliath," と返しているのも最高にクールですね。
こういうフローが事前に規定されていて CVE とか問題が検知されると発動する。このときに担当が大丈夫です!って回答するときにエビデンス(証拠)を求められるのだけど、クソな情セキは自社の担当の言葉を信用せず、開発会社からの言質をとれ!って命令するので、くそメールがスパムされるという背景があったりする。(担当が無知だったりイケイケだと、とにかく下請けにやらせればいいというパターンももちろんある)
そして情セキも経営層に報告するのに必要で、経営が0リスク信者だと報告が大変なのはわかる。わかるがそれを説得するのが情セキの仕事やで。
加えて担当レベルになると大手は「そんなん下請けにやらせればいいだろ」ってマインドのところが多く、上から目線かつ丸投げすることが多いように思う。
もちろん担当者はピンキリだからこうとは限らないけど比較的多い印象。
ま、これ今回 Daniel Stenberg 氏が公表したからばずってるだけで、日本でもしょっちゅう行われているし、Hacker News みると海外でも一般的なムーブのようです。 LogJ4 Security Inquiry – Response Required | Hacker News
小さいところは
とかであんまり上から目線でこない感じはするけど、これはあくまで個人の資質なのでやべー人はやべーです。オラオラ系の中小とかやっぱいます。でもこんな細かいことはあんまり聞いてこない。(個人の感想です)
この手のメールになんでカチンとくるのかって言えば
ということで、皆ちゃんと保守・サポート契約して、契約範囲で質問しような!
そして金払ってても相手は人間なんで、お互い敬意をもって接しような!
Public Key でこの件にからめて記載されている奴について
https://www.itmedia.co.jp/news/articles/2201/11/news160.html]
ちな、これ詳しくないんだけど、OSS 作者が 「もうただ働きで支援をするつもりはない。これを機に、私に6桁ドルの年間契約書を送るか、プロジェクトを分岐させて他の人にやってもらうかしてほしい」 というのもよくわからないんだよなぁ。
火事で財産失ってむしゃくしゃしてやったのかなんなのか。人気 OSS になったのに全然金にならんぜ!ってのが辛いのはわかる。が、OSS のライセンス的に支援を義務としてやる必要はないので、そんな義務的になってる報告は無視してええんちゃうんと思ってしまう。今回みたいにサポートフィーよこせみたいなスキームが必要だったのかもしれない。
あと個人開発で、善意でこれ便利だろ?って公開しているものに対して、辛辣な言葉の心ないバグ報告やら改善要望は心には刺さるので辛いのはある。それで辞めてしまう人も居る。
ブコメでフリーライドって書いている人が居るけど、MIT ライセンスでだしてんだから OSS の理念である自由なソフトウェアという意味で、再配布、改変、利用は自由でいいんだよ。イヤなら MIT 以外のライセンスでだせばよい。古くは MySQL の Dual ライセンス、最近の Redis とか Mongo みたいに。
ただ、金欲しいとか大体 Donation 募集したりするとかやってると思うんだけど、そういうのもあったのかなかったのかがよくわからにぃ。ポートフォリオになるので、採用にはつかえるんじゃないのかね?
じゃなきゃ GitHub に Public でコード公開しないと思うんだけどな。いまいちピンとこないのであんまり言及しない。
https://www.publickey1.jp/blog/19/redismongodbkafkaaws.html]
で、商用ライセンスの問題。これ今回のくそムーブの問題じゃないのここに並べられるのに非常に違和感がある。なんか OSS と大企業の対立を煽るようなミスリードを誘っているように感じてしまう。
大手クラウドベンダは OSS のライセンスに則って利用・改変するのは問題がない。つーか儲かってるから金よこせっていうのはちょっと違うんじゃないかなと思う。
オリジナルを開発した会社がリスペクトされず、商業的に儲からないってのは、心情的、道義的、人気的にどうなの?クラウドベンダも金払ってあげれば良いんじゃないの?とは思うよ。(2社は協業したけど)
ただ、オープンソースで公開するということは次のような利点を求めてするこって、それがイヤならプロプラで良いわけさね。
Apache License 2.0 とかのライセンスの OSS として公表しているものの利用をフリーライドと表現するのも、それがなんか嫌儲で Evil ってのはちょっと判断できないかなぁ。
大手が自社でメンテできてしまう(できるようにする)というのは経営戦略であり、開発元がクローズにするってのも経営戦略。罵り合い合戦はちょっとなぁという感じ。
OSS の理念的に改修した分は元のソースにもっとフィードバックしろよってのはあるけど AGPL とかで出してないんだよなぁ。
この辺は賛否両論色々あるので気になったら調べてみて。
以上。ご査収ください。
https://twitter.com/MAEZIMAS/status/1113114798672113665
一流の老害は「君たちこそが真のニュータイプだ」とか言って、若者を自分の既得権益確保のための鉄砲玉にする。
…いやマジ本当に、若い人気をつけてね。若者説教おじさんは、せいぜいまだ極限の不愉快ですむけど、若者応援おじさんに乗せられると最悪人生詰むので…
というツイートが流行っているので、私が遭遇した若者応援おじさんについて書こうと思う。
当時の私は親との折り合いがつかず、学力もそこそこあったし、勉強もしていたのにも関わらず大学に進学せずにフリーターをしていた。実家を出たかったし、大学にも進学したかったから金の工面が当面の目標だった。そんなときに出会ったのが若者応援おじさんのAさんである。Aさんはバブルの頃に就活をしていて、まだインターネットやパーソナル・コンピュータというのが流行る前から電子工作やプログラミングをやっていた人だった。実際、経歴を聞いてみると10回以上転職を繰り返しているものの、有名企業(今にして思えば、カビ臭いSIerだが)で部長をしていたことがあって、年収が1700万ぐらい稼いでいたこともある人だった。
最初に出会ったときは自分が如何にすごいかということを熱心に語っていた。80年台後半ぐらいのコンピュータ開発の大型プロジェクトに関わっていたとか、セキュリティの専門家とか、今までに触ったことのあるプログラミング言語が300個を超えるとか。でも、当時の技術的なトレンド(MongoDB、Ruby on Rails、AngularJSとか)についての知識が限りなく少なく、「フレームワークなんてその場で覚えればいい」みたいなタイプだった。中学生の頃にラジオ工作したとか、はんだごてで電子回路を設計したとか、そういう話は熱心にするのに、Bram Moolenaarの名前を知らなかったりした。要は、最近のプログラマがどういう関心やインセンティブでプログラミングやってるかを知らずに、過去の栄光を語ってるようなタイプだったと思う。
まぁ、それでも、その人のコネで中規模程度のSIerに入社して、そこそこいい感じの待遇だったように思う。当時の私の技術力は『わかりやすいJava入門』『たのしいRuby』を一通り終わらせて簡単な言語仕様を把握したぐらいでろくにコードも書いたことのないような人間だったから、定時で帰れて手取り二十万もらえるのは甘い汁を吸えたとは思うんだ。
でも入社を決めた一番の理由が、そのAさんが私の関心に理解があると思っていたからだ。というのも、当時の私は「人工知能や人工生命に興味があります。三年後に大学に入学するまでにプログラミングスキルを磨きつつ生活費と学費を稼ぎたい」ということを明言した上で、それを叶えてくれる会社を探していた。技術力はないものの、「自頭がいいから入社してからプログラミングを覚えればすぐに戦力になるよ」と複数の人間から言われていて、それぞれ就職先を紹介してもらえるような状況になっていた。今から思えば、そんなコードを書けない人間を自頭なんて胡散臭いもので褒めるような人間は信用してはいけないと思うし、口車に乗せられたと思うのだけど。そこは自分にも甘いところがあったように思う。あ、あと、補足しておくと、当時はDeep Learningなんていうのは全く人口に膾炙してなかった時期で、スチュアート・カウフマンや金子邦彦に憧れてたような、周回遅れの複雑系に魅せられた若者が私だった。
①親との折り合いが悪く、大学に進学したいが、金が足りない
②実家を出るために生活費を稼ぐ必要があったが、飲食のバイトとかではスキルが身につかない状態で、価値の高い若い時間を無駄にしてしまう
③そんなところに現れたのが過去の栄光を話す若者応援おじさんのA
④自分は殆どコードを書いたことのない業務未経験で、21世紀になっても複雑系の話に興味をそそられるような斜に構えたスノッブ
では、入社後の話をしよう。私が配属されたプロジェクトは80万行程度のJavaのコードで動いてるBtoB向けの製品を保守開発してるプロジェクトだった。やってることはGoogleやAmazonやMicrosoftみたいな大手ならやってるようなサービスの完全下位互換みたいなソフトウェアを、情弱だけど社員数は多いみたいな企業に売りつけるような仕事だ。国産とか、セキュリティとか、そういうよくわからない言葉を並べ立てて、海外のUIも洗練されていて、優秀なエンジニアが管理してるものをセキュリティ的に怪しいと不安を煽り立てて売りつけるようなやつだ。そんなクソみたいな製品でも年間5億円ぐらいの売上になるのだから、IT系って糞だなって思う。ネット上では優秀な人間ばかりがアウトプットしてるし、NDAの名の下に詐欺まがいのソフトウェア(今回の例なら無料でUIも洗練されていて、使いやすいサービス)が明るみにならないのだから、こんな国はさっさとスクラップ・アンド・ビルドすればいいのにって思うよ。IT化されてないのが時代錯誤で〜みたいな記事はネット上でもバズるけど、実際には10年前のスパゲッティコードを惰性と不安につけ込んで売りつけるようなSIerがたくさんある。そんで、そんな意味不明なソフトウェアを導入すれば、どこに何があるのか分からないUIの操作に大切な業務時間を奪われて、日本全体の生産性が落ちてしまう。ユーザーの時間と生産性を奪い、開発者にとっても技術的負債にしかならないようなソフトウェアを売りつけてる悪性腫瘍みたいなSIerはさっさと滅んでしまえばいいと思うよ。
まぁ、私が配属されたプロジェクトはそんな感じだ。まるで意義を感じないが金にはなってるプロジェクトに配属された。そのプロジェクトの根幹部分は一人のエンジニアが設計開発しており、そのエンジニアは既に退職して、どこに何が書いてあるのかわかってない人間が後任として保守を行っている。盲腸みたいに全く有難みのない機能を増やすことでより高く売りつけるようなプロジェクトだった。
そのプロジェクトの中にいる人について話そう。プロジェクトマネージャーは仕事漬けで毎月350時間ぐらい働いている60連勤とか当たり前で、常に酔っ払ったような、眠そうな目をしてる人だった。にも関わらず、同じプロジェクトの人間は仕事がなさすぎて業務時間中に関係ない談笑をしたりしていた。プログラマやテスターや文書作成をするスタッフが40人ぐらいいるところで、閑散期(機能追加のサーバーリリース前以外)は暇そうにしてる人が多かった。プロジェクトマネージャーを除いて。要は、PMは一生懸命働いているが、その一生懸命さは惰性で行われており、無能なのに業務時間が長いPMがいて、その人が全部仕事をやってしまう。他人に頼めない性格らしくて、存在意義が分からない業務を他人に頼んでは「なぜこんなこともできないんだ?」って怒鳴るのが生きがいみたいな人だった。頑張ってることがアイデンティティになってて、その頑張りに意味があるのか、必要なのかという吟味ができず、タスクを他人に振ることもできず、情報もそのPM一人だけが握っているから、周りの人も「私が仕事を請け負いましょうか」ということもできない。それで新入社員をイビるような存在意義のわからない仕事を振って、できなかったら人格否定をするような感じの。
私が受けた仕事ととしては、週に1回ベンダーのところに会議をしに行くんだけど、そのときの社内の資料を全部紙でプリントアウトして持っていくというのがあった。文書作成スタッフが製品の仕様をWordでまとめて、600ページぐらいのpdfにしたものが1500万円ぐらいで売れるらしく、その増えた言語仕様をプリントアウトしてベンダーのところまで持っていく。追加された仕様以外にも、今週やったテスト内容をExcelで纏めたものをプリントアウトしたりしていた。紙の量で言うと、一回の会議で2500枚ぐらいで、それをキャリーケースに詰めて客先であるベンダーまで持っていくらしい。聞いた話では、その2500枚の会議資料は殆ど読まれずに捨てられるのに、そのPMはベンダーにその慣習を廃止しようとは提案しない。ベンダーとの週一の会議の他にも、進捗報告を主とする社内会議があって、PM以外の人はあのプリントアウトする悪習は廃止すべきという話が上がっているのにPMが首を縦に振らないから一向に改善されない。まぁ、そのプリントアウトするのをやるのが私の仕事だったわけですよ。毎週4時間ぐらい掛けてWordやExcelの文書サイズとか調整してさ。元の文書のサイズや余白が狂ってるのに、客先に失礼だと言われて、手直しして、プリントアウされたコロコロコミック何冊分だよ? みたいな紙の束をホチキスで止めていくんだけど、ホチキスの止め方が汚いとやり直し。
じゃあ、なぜPMは頑なに意味のない業務をし続けて、それによって新入社員を使い潰そうとするのかと言えば、弊社の業績が悪くて倒産しそうだったときにそのベンダーが手を貸してくれたからそのときの恩義があるとかなんとか言っていた。だから、靴を舐めるようなことをするし、他人の生産性を奪うようなクソ製品を世の中に出して何も感じないらしい。読みもしない産業廃棄物を作り出して、それを無碍にされて喜んでいるような業務が、今の日本の何割を占めているのだろう? そのPMの口癖は「俺はプログラミングは全くわからないが、こんなプリントアウトの段取りもできないようなやつはプログラミングなんてできないと思うよ」だった。FizzBuzzどころか変数や関数すら知らないような人間にこんなことを言われるのは屈辱だったし、これが高卒未経験で就職することなのだろうと思った。
他にも、私が受け持った仕事に、製品が動くかどうかを確認するテスターという仕事があった。RSpecやSeleniumで自動化しようと言っても、そんな技術を持ってる人がいなかったから、一々自分でその製品を触って仕様通りになっているかを確認しないといけなかった。画面遷移が600ページのpdfになっているから、それを見ながら正しい画面遷移ができているかを確認する業務だったが、正直人間のやる仕事ではないと思う。画面遷移だから前のページから次のページに移行したときに前にどのページだったなんてスクショを撮ったぐらいじゃわからないのに、「このテストをExcelにした内容じゃ、本当にテストしたのかわからないだろう?」と言われた。言われたとおりにExcelファイルにスクショをひたすら貼り付けていたというのに。しかも、その他にも特定のファイルをアップロードするときにどの条件だとアップロードができないかを判別するテストをどうやって行うのか考えろというのがあった。今までにテスターをやっていた人に聞いても指針なんてないと言われ、「賢い人はそういうのを考えつくものだ。俺はパソコンに詳しくないが」とPMに言われ、嫌気が差した。
まぁ、ここまで書けば、如何にブラックと言うか、理不尽で不合理な職場かというのはわかったと思うけど、いい面もあったんだ。前にも書いたように、未経験の高卒が手取り20万貰えたのは嬉しかったし、研修のない会社だったから、最初の二ヶ月ぐらいは一人で勝手に勉強しててと言われたから、実働換算で時給3000~4000円ぐらい貰える計算だったのかな。一番瞬間時給が高かった日はメールの返答に20分ぐらい使ったときだったから、日給1万、実働換算の時給が30000円ぐらいになった。それぐらい放任されていた。
最初は社長が「君にはソースコードのUMLを書いてもらおう」とか言って、クラス図を書く練習をしていたんだけど、現場の人は「今更UMLなんて必要ない」「ソースコードを読めばわかる」と言って、全く必要とされていなかった。だから、業務とは関係ないTCP/IPやRubyやGitの勉強をしていた。家のことで勉強に対してモチベーションが落ちていた私は、金を貰えるという環境では目の前の勉強に集中できるようになって、元の勉強するための生活リズムっていうのか、そういうのを取り戻せた。それは当時の私にとっては有難かったと思う。
ここまでをまとめると
⑤無料で使えるサービスの下位互換といえるような、他人の生産性と金を無駄にするような製品を開発してるプロジェクトに配属された
⑥PMだけが忙しく働いて、周りの人の割り振りができていない。
⑧社会悪のようなソフトウェアを売りつけて金を稼いでいるプロジェクトだった。
⑨仕様書やテスト内容のプリントアウトという必要ない業務をしたり、指示内容と叱責内容が矛盾する理不尽を受けなければならなかった。
⑩しかし、勉強してるだけで月20万貰える環境は有難く、当時の私にとっては願ったり叶ったりだった。
では、次に私がその会社の入社から辞めるまでの経緯について書こう。最初のうちは、自分の勉強時間を取れていたし、振られる仕事も理不尽で意義を感じられないものであるものの、すぐに終わることが多かったから問題ないと感じた。それが徐々に仕事が増えていき、勉強時間が取れなくなっていった。
ここで若者応援おじさんAの登場である。Aさんは私と会ったときは有名企業に勤めていて、そこを辞めて私を紹介してくれた中小企業で働き始め、その数カ月後に私を紹介してくれた。元々、その会社の社長とは懇意にしていたから、一緒に働こうという話が何十年も前からあって、今回ちょうどタイミングが合ったから、その友人の会社の重役として就職したらしい。私が就職したのはその数カ月後だった。
Aさんは「何か問題があったら、部下や上司という立場を気にせずに忌憚なく言ってほしい」「俺は人を見る目はある方だ。君は一本芯の通ったところがあるから、周りに流されずに新しいことをできるだろう」「君には将来性がある」「俺は新しい会社でも権力を持ってるからへんなことを言ったり、したりしてる人がいたら遠慮なく言ってほしい」とかそういうのを入社する前に言っていて、まぁ、色々とおかしいところ、FAKE野郎みたいな発言が多かったけど、そこだけは信じてたんだよね。本当に騙すんだったら、そんなすぐに辞められるようなリスクを上げるような発言はしないだろうってさ。ちなみにFAKE野郎って感じたのは、一方的に自分の話だけをして、私が質問すると煙に巻いたり、私のことを買ってるという割には私の話をすぐに中断させて自分の話をし続けるとか。その人はFラン出身だったから、ちょっとインテリなことを言うと「君は変わってるね」って言ったり、きょとんとした顔で10秒ぐらい固まった後、すぐに自分の自慢話を再開したりと、決して自分の知らないことや分からないことを認めようとしなかった点だ。他にも、「私と働きたいと言ってくれていた会社はあったけど、そこは技術的に成長できそうだけど給料は月7万程度でバイトの身分だから、迷ってるんですよね。バイトだから自由時間は多く取れるんですけど」みたいな発言をしたら、鳩が豆鉄砲を食ったような顔をして、私が感じていた不安を取り合ってはくれなかった。Aさんは「俺は社内で影響力を持っているから、君を正社員にすることもできる」みたいな話を延々としてたのに、いざ蓋を開けてみると、「君の面接での受け答えが駄目だから、契約社員として雇用することになった」「あれから上層部に渋られてしまって、請負契約にすることになった」と話が二転三転していった。だったら、他にも選択肢があったのに、他のところに就職したのにと思ったが、自分の能力や経歴で負い目を感じていたから強く言うことはできなかった。高卒で就活するというのはそういうことだ。他にも選択肢があるのにも関わらず、どうせ労働に関する知識がないと足元を見られて、条件を徐々に下げられ、他に選択肢をなくした後で、悪い条件で働かざるを得ない状況になっていた。結局、勤務時間がタイムカードで管理されてるのにフリーランスとして請負契約を結ぶという偽装請負で契約させられ、もっと技術力を磨ける選択肢は潰されてしまっていた。
私は会社の問題点を丁寧に分析してpdfにまとめてAさんに送ったんだ。それが間違いだった。如何に会社がそのベンダーに良くしてもらったか、大変なのをわかった上で俺たちが会社を立て直してきたかということばかりを話していた。百歩譲ってそこはいいとしても、ベンダーとは関係なく職場環境を良くするための話までいい加減に聞かされてうんざりしていた。
「Aという問題があります。その背景にはBがあります。そのためにはCという解決策があります」
という話をしたときに、「Bぐらいみんな当たり前にしている。君だけ特別扱いすることはできない」みたいな返し方をされて、問題が発生してる事自体はないものとされていった。結局、職場にはびこる不合理で理不尽な業務やルールは改善することはなく、私への人格攻撃で終わってしまった。
毎日どうでもいい作業で疲れ切って勉強時間が取れなくなってしまった私は、最初に出会った頃のAさんの言葉を信じて、「私が本当にしたいことは、仕様書やテスト時のスクショをプリントアウトしたり、よくわからないテスターをやったりすることではない。このままでは、プログラマとしてのキャリアを積むための勉強時間を作ることもできないし、業務内でコードを書くこともないから業務時間を短くしてほしい」と言った。少なくとも、最初Aさんと会ったときは、「君には人工知能や Permalink | 記事への反応(1) | 23:52
MEAN(MongoDB, Express, AngularJS, Node.js)を解説する
前に触った感想です。
基本いつのまにか変更されて変な動きして死んでる前提で、動く/戻せる環境構築できない奴は死ぬ
基本いつのまにか変更されて変な動きして死んでる前提で、動く/戻せる環境構築できない奴は死ぬ
基本いつのまにか変更されて変な動きして死んでる前提で、動く/戻せる環境構築できない奴は死ぬ
有益な話だし、GPL関係でググってこのページを見た人のために勝手に補足と個人的な疑問を放流してみる。
適当に調べてた知識を記憶をたよりに書いているので、間違いがあれば容赦なく指摘して欲しい。
# どうでもいいけど、元増田の話でOSがLinuxだったりしたら笑うw
GPLは元増田で書かれている通りで、WEBシステムを閲覧しただけではソースコードを請求することはできない。RMSらもこれには気づいていて、この穴を塞ぐためにAGPLというライセンスができた。このライセンスのソフトウェアを利用した場合、WEBシステムであろうと利用できる人はソースコードの請求を行えるようになる。
これは別にWEBシステムに限らず、ユーザーが何らかの形で利用できるシステムなら、ソースコードの請求が行える。
申し訳ないが詳しい所は知識不足でよくわからない。だけど、下記の記事の通り現在の開発元のOracleの見解である。すなわち、MyODBC(GPLのMySQL用ODBCドライバ)を使わず、GPLでないドライバを用いて接続してしまえば、開発したソフトウェアがGPLにならない。
http://plaza.rakuten.co.jp/matsunopage/diary/201011300000/
# 個人的にGPLがRMSの著作権Hackなら、OracleのコレはGPL Crackだと思っている。「GPL汚染が嫌なら有償ライセンスで契約しろ」と言われた話を聞いた事があるからだ。
おそらく持ち帰れないのではないかと思う。なぜそう思うかというと、普通、プログラマが書いたコードの著作権は会社に取られるし、GPLでライセンスされたソフトウェアを受け取ったのは会社であってプログラマ個人ではない。GPLでライセンスされたソフトウェアを物理的にもっていく事は可能でも、きちんとライセンスを受けた訳ではないので機密情報の漏洩にしかならないと思う。
単純な興味なのだけど、例えば最初はGPLだったが途中からはプロプライエタリ(ないし、GPL非互換なライセンス)に変更可能なのか知りたい。個人的な考えでは、著作権者全員の合意がとれれば可能という結論。著作物をGPLに書かれた通りに扱ってよいとしただけで、著作権者によって著作物の扱い方は変更可能だという考えから。無論、GPLでライセンスされたプログラムを受け取った人はソースコードの請求は依然として可能。
http://nippondanji.blogspot.jp/2010/06/gpl.html
http://d.hatena.ne.jp/karasuyamatengu/20110126/1296004598
なんで、グレーなのか。なんで、無理なのか。どのような考えでグレー、無理という結論を出しているのかきちんと書いてもらえますか? 私の考えが間違っているならなぜ間違っているか指摘していただけますか? あるいは、下記の増田さんのように具体事例を出してもらえますか? プロプライエタリに戻せないというのなら下記の具体事例はどのようにお考えですか?
http://anond.hatelabo.jp/20140722071548
とした場合に、PHPを飛び越えて(間接的にしか接続していないにも関わらず)開発したシステムにGPLが適用されるということですか? その場合、PHPにもGPL汚染が発生するということになると思いますが、間違いありませんか?(FOSS除外規定を設けているのはMySQLであって、FOSS除外規定と無関係な開発したシステムがGPLになってしまうと、開発したシステム側からGPL汚染が発生するという考えから。)
元のパラグラフは下記の通りです。
あと、MySQLのデータベースサーバに接続しただけではGPL汚染は発生しません(AGPLはそのためのものなのは前述の通り)。また、PHPは接続するクライアントになりますよね。ということは、MySQLと一緒に開発システムを一つのパッケージとして納品しない限りはGPL汚染は発生しないのではないでしょうか?(WEBシステムでそんなこと普通しませんよね。yumとかでインストールするし)
根本的な問題として、FOSS除外規定はGPLソフトウェアと他のFLOSSをリンクする際の問題を解決する物であって、MySQLのデータベースサーバに接続する場合には関係のない話だと思います。おそらく、問題だとお考えなのは、PHPのドライバがOracle製のGPLプログラムをリンクしていたためPHPのドライバを利用すればそのような問題が発生するという事だと思います(さらに追記。この通り書かれていますね。よく読んでおらず、失礼いたしました)。現状、PHPライセンスとなっているMySQL Native Driverを利用すればそのような問題は発生しないはずです。
http://php.net/manual/ja/mysqlnd.overview.php
かりに、おっしゃる通り、開発システムもFOSS除外規定に含まれるFLOSSにしなければGPLになってしまうとした場合、それはMySQL独自の問題であり、他のFLOSSに一律で当てはまる問題ではないということでよいでしょうか? なぜこのような質問をするかというとMongoDBが同じような問題を抱えているからです。下記のURLの通り、MongoDBのコアサーバはAGPLですが、ドライバにApache licenseを適用し、開発システムにAGPL感染が発生しないようにしています。
http://www.mongodb.jp/mongo/licence
上記の様なケースにも実用的に対応する為、(AGPLを採用しつつも)我々はあなた方の(MongoDBを利用する)クライアントアプリケーションは(MongoDBとは)別物扱いする事を約束します。これを円滑に行う為、mongodb.orgサポートのドライバー(あなたのアプリケーションとリンクする部分)はApache licnese(コピーレフト)の元公開します。
返信お待ちしております。
冒頭に書いた通り、間違いがあれば容赦なく指摘してください。
動的言語は使わない。
動的本をすべて捨てる(人の手に渡るような捨て方はしない ちり紙交換がよい)
動的DBは使わない。リレーションのない動的DBは使わない(mongoDBやNoSQL系)
動的オープンを紹介してくるメデイアのステマに気づき騙されない
Silerが勧めてくる技術は独立できない技術だからやらない 関わらない
職務経歴書に黒歴史(PHP Java JavaScript Ruby RoR Html5)を書かない
PHP Java JavaScript Ruby RoR Html5の仕事は請け負わない
C# Objctive-cだけ使う
VisualStudio Xcodeだけ使う
VisualStudio Xcodeを機能をフル活用する
WindowsServerを使う
デザパタを覚える
コミュニケーションはOffice 365 redMine,イラレGit Svnを使う
動的言語をこれ以上広げるな 罪を重ねるな 脆弱性をばら撒くな トラブルを撒くな
セキュリティに問題のある動的言語はどこにいってもトラブルになる
原発のシステムにRuby,RoR,PHP,JavaScriptを使いたいと思うか?Silerはなら提案してくるだろう儲かるから
使えば必ず原発はハックされる
C# ASP.netは2007年頃から海外では大流行だった 一方日本のメディアは盛んにLAMP!LAMP!RoR!RoR!煽っていた
C#(静的言語)は14年前のソースが今でも使うことができる。VisualStudioにはソースを自動バージョンアップ機能があり書き換えてくれる。 コードが負債にならない コンパイル時バグがわかる DLLのバージョンをチェックしてくれる ブレイクポイント リモートデバッグ
動的言語・オープン系は 手作業で直す どこにバグあるか実行しないとわからない 脆弱性が出るたび バージョンアップ、機能追加のたびに修正することになる リファクタが使えない 負債言語
この数字を見て動的言語関係者はびっくりしているだろう。 14年前のPHPソース 使えると思うか?関係者は首を横に振るだろう。時間と人手をかけて改修すれば使えるかもしれない(多くの場合作り直したほうが安上がりという結論になると思うが) 脆弱性や仕様変更がたくさん埋まっているソースだ 修正には手間と時間と予算がかかる
C#なら一瞬で最新の.netフレームワークのバージョンに書き換えてくれる。エラーや警告の表示も一緒に出力されるから手直しが簡単
PHPを捨てたほういい理由
今はRoRのステマが醜くそれに騙されて使ってしまった人がいるが、今後、仕様変更やバグ、脆弱性は出続け、そのたびに全ソースを検索し手動で手直しをしなければならなくなる それは新しいことをやっている時に起こるだろうし、今やっている新しいことが負債に変わる。作れば作るほど負債が増え、前に進むことができなくなる言語 それが動的言語 メンテナンスが常に必要でほっとけばハックされる。保守や改修に人が多く必要で中間業者は儲かるのでメディアや無料育成を通して広めてくる 煽っておいて自己責任の国 日本
静的言語のサーバーサイドで何がいいかというと 自分は C# Asp.net(asmx or webApi) Ado.net 接続 & 非接続のDataSet 管理.exeアプリ(C# WinForms)をお勧めする やり方
もうお分かりいただけただろうか?動的言語とはSilerが定期的に仕事を得るために広めたガラクタ言語だったということを この言語をいつまでも高い稼働の保守作業が必要だ。機能追加、言語の仕様変更、脆弱性を修正するのにお金も時間もかかる Silerはパンク屋だったのだ。 メーカー製の静的言語を使えばここまで時間も手間もかからなかった。
これ以上元請けはSilerが言われるがままにガラクタ言語を導入しないほうがいいだろう。技術者はSilerが無料で教育してくれるからといってガラクタ言語を学ぶのはやめたほうがいい。(洗脳されて信者になるな) 特に技術者はこの言語をマスターしたからといって独立はできない。なぜなら、5人以上のプログラマーが働いてやっと出来上がるものがほとんどだ。手間がかかるということは自分が一番よくわかっているはずだ。言語とともに使い捨てられる運命にあるのだ。IT経営者やSilerはその方が都合がいい。こき使ってやめられても独立できないのだから。雇ってはこき使って使い捨てる。まさにIT版のねずみ講 上のしか儲からないようになっている。 それに加えて酷いピンハネ。100万で売って7割以上搾取 一人送れば70万円入る世界だ。Silerにとって開発現場は炎上すればするだけよい。言語は脆弱性があればあるほどいい、システムが手間が掛かるなら掛かるほどいい その分人を送り込めるからだ。その辺にいる素人を適当に教育して3年開発の下駄はかせて送り、現場を炎上させて新たに人を送り込んで利益を得ている。
#1 PHPで改修しようにも簡単には改修できなくて、その間にハックされ情報が流出すること結構あるようだ @WikiはPHP
#2 2013年 Javaフレームワーク Strutsのサポートが終了した こういうフレームワークをメデイアで煽っておいて最後は自己責任される。オープン言語はやってはいけない
#3 これはどの業界にも言える事だが、気合い、根性の気合馬鹿から組織を乗っ取られないようにするにはどうすればいいか考えないといけない。コミュニケーションで社員を懐柔し組織を乗っ取った筋肉馬鹿は面倒なことを気合い根性で乗り切ろうするから失敗する。日本はそのしわ寄せがまず下くるから会社が壊れる。脳筋バカは最後まで居残る。(○ーイズ、○ルマー、○ニー、旧日本軍、ジオン軍)タバコ室や残業は特定の社員を仲良くさせるからだめなんだろう 履歴書の項目が少ないのも問題なんだろう 理系か体育会系,血液型,さう脳とか履歴書は書く項目が少なすぎる
#5 仕事の最終目的はコミュニケーションではない コミュニケーションするコストが高いといつのまにかそれが目的に置き換わってしまう事がある。コミュニケーションの得意な奴が本当に優秀な人をさしおえて前にでてくることだってある。Office 365やRedMineイラレSVNなどでコミュニケーションコストを下げることで優秀な人が大声を張り上げなくても力を発揮できる環境を作るべきだ
#6 事務仕事のツール化、自動化、ロボット化、コミュニケーションコストを低くするツールの導入で、声が大きい人や事務だけ得意な人が権力を握ることを防ぐ事が出来る
#9思えばSiler業界は自分たちが儲かりがたいためにガラクタ言語(Java,PHP,RoR,Ruby,Js,Html5,Flash)に人材を誘導しすぎた。出来損ない言語の非効率な生産性と保守作業は社会の進化が遅れ世界とのソフト技術に差がついてしまった。人材も非効率的なスキルしか身に付かなかった。それしかやらせてもらえなかった。
しょーもない言語は社会の発展を止め、技術者を路頭に迷せた。有益な言語を一つだけ覚えさせ、いろんな業界で使い回した方が業界的にも技術者的にも幸せになれたのではないか?
C#はロボットや組み込み機器,医療機器,WEB,スマートフォン,ゲーム,CG デスクトップアプリ,業務用ツール 様々なところで使う事ができるのだ。
特にロボットはMocrosoft Robotics StudioというVisualStudioのロボット版の開発環境が2006年頃から出ており、ロボット産業を発展させることだってできたのだ。(そのころのIT業界はJavaとLampが主)
続き
C# Objctive-cだけ使う
VisualStudio Xcodeだけ使う
VisualStudio Xcodeを機能をフル活用する
WindowsServerを使う
デザパタを覚える
コミュニケーションはredMine,イラレGit Svnを使う
動的言語は使わない。
動的本をすべて捨てる(人の手に渡るような捨て方はしない ちり紙交換がよい)
動的DBは使わない。リレーションのない動的DBは使わない(mongoDBやNoSQL系)
動的オープンを紹介してくるメデイアのステマに気づき騙されない
Silerが勧めてくる技術は独立できない技術だからやらない 関わらない
職務経歴書に黒歴史(PHP Java JavaScript Ruby RoR Html5)を書かない
PHP Java JavaScript Ruby RoR Html5の仕事は請け負わない
動的言語をこれ以上広げるな 罪を重ねるな 脆弱性をばら撒くな トラブルを撒くな
セキュリティに問題のある動的言語はどこにいってもトラブルになる
原発のシステムにRuby,PHP,JavaScriptを使いたいと思うか?Silerはなら提案してくるだろう儲かるから
使えば必ず原発はハックされる
C# ASP.netは2007年頃から海外では大流行だった 一方日本のメディアは盛んにLAMP!LAMP!RoR!RoR!煽っていた
C#(静的言語)は14年前のソースが今でも使うことができる。VisualStudioにはソースを自動バージョンアップ機能があり書き換えてくれる。 コードが負債にならない コンパイル時バグがわかる DLLのバージョンをチェックしてくれる ブレイクポイント リモートデバッグ
動的言語・オープン系は 手作業で直す どこにバグあるか実行しないとわからない 脆弱性が出るたび バージョンアップ、機能追加のたびに修正することになる リファクタが使えない 負債言語
この数字を見て動的言語関係者はびっくりしているだろう。 14年前のPHPソース 使えると思うか?関係者は首を横に振るだろう。時間と人手をかけて改修すれば使えるかもしれない(多くの場合作り直したほうが安上がりという結論になると思うが) 脆弱性や仕様変更がたくさん埋まっているソースだ 修正には手間と時間と予算がかかる
C#なら一瞬で最新の.netフレームワークのバージョンに書き換えてくれる。エラーや警告の表示も一緒に出力されるから手直しが簡単
&blanklink(PHPを捨てたほういい理由){http://www.slideshare.net/neuecc/c-22979400?v=qf2&b=&from_search=42}
今はRoRのステマが醜くそれに騙されて使ってしまった人がいるが、今後、仕様変更やバグ、脆弱性は出続け、そのたびに全ソースを検索し手動で手直しをしなければならなくなる それは新しいことをやっている時に起こるだろうし、今やっている新しいことが負債に変わる。作れば作るほど負債が増え、前に進むことができなくなる言語 それが動的言語 メンテナンスが常に必要でほっとけばハックされる。保守や改修に人が多く必要で中間業者は儲かるのでメディアや無料育成を通して広めてくる 煽っておいて自己責任の国 日本
静的言語のサーバーサイドで何がいいかというと 自分は C# Asp.net(asmx or webApi) Ado.net 接続 & 非接続のDataSet 管理.exeアプリ(C# WinForms)をお勧めする やり方
もうお分かりいただけただろうか?動的言語とはSilerが定期的に仕事を得るために広めたガラクタ言語だったということを この言語をいつまでも高い稼働の保守作業が必要だ。機能追加、言語の仕様変更、脆弱性を修正するのにお金も時間もかかる Silerはパンク屋だったのだ。 メーカー製の静的言語を使えばここまで時間も手間もかからなかった。
これ以上元請けはSilerが言われるがままにガラクタ言語を導入しないほうがいいだろう。技術者はSilerが無料で教育してくれるからといってガラクタ言語を学ぶのはやめたほうがいい。(洗脳されて信者になるな) 特に技術者はこの言語をマスターしたからといって独立はできない。なぜなら、5人以上のプログラマーが働いてやっと出来上がるものがほとんどだ。手間がかかるということは自分が一番よくわかっているはずだ。言語とともに使い捨てられる運命にあるのだ。IT経営者やSilerはその方が都合がいい。こき使ってやめられても独立できないのだから。雇ってはこき使って使い捨てる。それに加えて酷いピンハネ。100万で売って7割以上搾取 一人送れば70万円入る世界だ。まさにIT版のねずみ講 上のしか儲からないようになっている。Silerにとって開発現場は炎上すればするだけよい。言語は脆弱性があればあるほどいい、システムが手間が掛かるなら掛かるほどいい その分人を送り込めるからだ。その辺にいる素人を適当に教育して3年開発の下駄はかせて送り、現場を炎上させて新たに人を送り込んで利益を得ている。
#1 PHPで改修しようにも簡単には改修できなくて、その間にハックされ情報が流出すること結構あるようだ @WikiはPHP
#2 2013年 Javaフレームワーク Strutsのサポートが終了した こういうフレームワークをメデイアで煽っておいて最後は自己責任される。オープン言語はやってはいけない
#3 これはどの業界にも言える事だが、気合い、根性の気合馬鹿から組織を乗っ取られないようにするにはどうすればいいか考えないといけない。コミュニケーションで社員を懐柔し組織を乗っ取った筋肉馬鹿は面倒なことを気合い根性で乗り切ろうするから失敗する。日本はそのしわ寄せがまず下くるから会社が壊れる。脳筋バカは最後まで居残る。(○ーイズ、○ルマー、○ニー、旧日本軍)タバコ室や残業は特定の社員を仲良くさせるからだめなんだろう 履歴書の項目が少ないのも問題なんだろう 理系か体育会系,血液型,さう脳とか履歴書は書く項目が少なすぎる
#5 仕事の最終目的はコミュニケーションではない コミュニケーションするコストが高いといつのまにかそれが目的に置き換わってしまう事がある。コミュニケーションの得意な奴が本当に優秀な人をさしおえて前にでてくることだってある。 RedMineイラレSVNなどでコミュニケーションコストを下げることで優秀な人が大声を張り上げなくても力を発揮できる環境を作るべきだ
#6 事務仕事のツール化、自動化、ロボット化、コミュニケーションコストを低くするツールの導入で、声が大きい人や事務だけ得意な人が権力を握ることを防ぐ事が出来る
#7思えばSiler業界は自分たちが儲かりがたいためにガラクタ言語(Java,PHP,RoR,Ruby,Js,Html5,Flash)に人材を誘導しすぎた。出来損ない言語の非効率な生産性と保守作業をしている間に社会の進化が遅れ世界とのソフト技術に差がついてしまった。人材も非効率的なスキルしか身に付かなかったしそれしかやらせてもらえなかった。
しょーもない言語を技術者に学ばせて社会の発展を止め、技術者を路頭に迷よわすよりも、有益な言語を一つだけ覚えさせ、いろんな業界で使い回した方が業界的にも技術者的にも幸せになれたはずだ
C#はロボットや組み込み機器,医療機器,WEB,スマートフォン,ゲーム,CG デスクトップアプリ,業務用ツール 様々なところで使う事ができるのだ。
特にロボットはMocrosoft Robotics StudioというVisualStudioのロボット版の開発環境が2006年頃から出ており、ロボット産業を発展させることだってできたのだ。(そのころのIT業界はJavaとLampが主)
http://gigazine.net/news/20121231-kiva-system/
それを開発している会社の採用情報 採用言語はC++ C# Java
http://www.kivasystems.com/careers-at-kiva/
PHP RoR JS Rubyなんてどこにも書いていない 数年もすれば仕様が変りバグや脆弱性を出す危ない言語だとわかっているのだろう こんな危ない言語は使ってはいけない
Mocrosoft Robotics Studio
http://www.saturn.dti.ne.jp/npaka/robotics/index.html
https://www.microsoft.com/en-us/download/details.aspx?id=29081
続きはWEBで
Pixearch(ピクサーチ)
node.jsとMongoDBの勉強がてらpixivの画像のタグ検索のサービスを作りました。
はてブのタグ検索のようにpixivに投稿された最近の画像をpixiv内でのブックマーク数でフィルタをかけて検索できるのが特徴です。
検索したり、タグをたどって、ダラダラと良い絵を眺めるのを目的としています。
普段はブログを書いたりしてないので、今回学んだことのメモがてらの投稿です。
MongoDBを試そうと思ったのがサービスを作り始めた発端です。
Web部分はmongoDBと相性が良さそうなnode.jsを採用。
MVCのフレームワークで何か適当なものはないかとググってSails.jsが良さそうだったので今回採用しました。
今回はせっかくnode.jsを採用したので、噂のnode.jsのPaaSのnodejitsuを試しに使っています。
500MB分の容量のMongoDBを最初から使えるのも大きかったです。
とりあえず最小のプランにしてるのでどのくらい捌けるのか気になるところ。
Web開発用のモジュールを自分で用意するのがめんどいなー、という人向けな印象。
このくらいの規模のものだったらサクッと作れました。
ただある程度の規模のちゃんとしたサービスを作るのには色々足りてないので、自分でカスタマイズしたりできる人じゃないと使うのは辛そうです。
後、ドキュメントも公式のものだけだと説明されてない機能が結構あったりします。
デフォルトだとDBはMySQLに対応していて、MongoDBを使うにはsails-mongoを入れる必要がありました。
開発中に困ったことは、nodejitsuで動かそうとしてsails-mongoでエラーが出て、調べてみたらauthenticationに対応していないというバグがあったことでした。
手元で直したのでpull requestを送ろうかと思ったら既に他の人が送っていて、3日前ぐらいに取り込まれているので今は大丈夫なはず。
https://github.com/balderdashy/sails-mongo/pull/36
現在進行形で色々Issueが上がって修正がされているのでそのうちこなれてくるのに期待。
細かいところで設計や考慮がちゃんとされてるなーと感じたところも多かったので、node.jsで開発してる人は一回試してみると勉強になりそうです。
最初にコレクションの操作に戸惑ったのですが、結局JSの連想配列なので思ったより早く馴染みました。
$setとか$gteとか特殊な意味を持つキーがいくつかあるので、その辺を把握できてから色々と捗りました。
MySQLに比べて特に更新系で複雑なクエリが発行できるので、ORMで使うと十全に機能を発揮できないのではないかな、と思ったり。
ご存知スキーマレスなので、何も考えずにデータを突っ込んでるとIntegerで保存したい値がStringになっててソートのときに困ったりするので要注意。
指定した容量を超えたら自動で消してくれるCapped Collectionがあると知ったので、今回みたいな容量が限られてる場合に便利かなと試してみたのですが、このオプションを有効にしたコレクションだとデータのアップデートや削除ができなくなりました。
おそらく、追加しかしないログのようなデータの保存に使うもののようです。
まだ微妙な部分も多かったですが、デプロイとかコマンド一発でできて、設定管理がpackage.jsonでできたりして面白かったです。
今回は、特に問題が起きたときに環境にsshで入ったりできないので、表示されてるログだけで問題を調査するのに苦労しました。
MongoLabとMongoHQというMongoDBの外部ホスティングサービスが上述したように使えるのですが、無料の容量を超えて使うにはそこそこお金が掛かるのでモリモリ容量を使うものを考えている場合は注意がいります。(もちろん値段に見合ったプロダクトを提供してくれると思いますが)
ということで、せっかく作ったので是非試してみてください。
エロが好きです。
ボクはDMM.R18のヘビーユーザーなのですが、どうしても自分の好みの中だけで、グルグル回ってしまい、
世の中にAVは山ほどあるはずなのに、知らないなんてもったいない!もっとたくさんのエロに出会いたいという思いがあって日々悶々としていました。。
そんな中、AVというのは毎日の気分によってオナニーしたい見たいものが違うわけだから(例えば毎日食べたいおかずが違うように)、
今の自分の気分を簡単に答えれば、それに対してオススメのAV動画を紹介してくれるというサービスはどうだろう?とモヤモヤと考えていました。
ある日、会社の人に相談したら、それ「いいね!」ということになって、「そういえばDMMのAPIってのが公開されたから、それ使ってできるんじゃね?」ってことになり、
本格的にサービス開発を行うことになりました。
そしてこの度無事リリースすることができました。
「今夜のおかず」
3つの質問に YES / NO で答えるだけで、今のあなたに最適なアダルト動画を紹介するサービスです。
・フレームワーク:express(node.jsのフレームワーク)
・クライアント:jQuery、CoffeeScript、SCSS
・ビルドツール:grunt
node.jsは少し趣味でやった程度で、今回やってセッション管理やルーティング周りが勉強になりました。
データベースにはMySQLを使っています。node.jsならばmongoDBというイメージが強いですが、質問をランダムに表示する機能で、
mongoDBは現時点で正式な機能としてはランダム検索が出来なかったので、MySQLを選びました。
あと、CoffeeScriptやSCSSはJavaScriptやCSSの記法を簡単にしてくれるやつで、慣れてしまうと離れられません。
あとはTwitter Bootstrap。これなしでは生きていられません。
スマホでもなるべく早く結果ページまでたどり着けるようにしたつもりです。
オススメの動画が表示された後に、今日はこの動画の気分じゃない!と思ったときはチェンジボタンにより、同じ条件で他の動画にチェンジ!できます。
質問からやり直したいときは、さいしょから!ボタンで他の質問からやり直せます。
一刻一秒を争うエロビ探しですのでパフォーマンスには気を配りました。
最初はサーバーサイドでHTMLテンプレートを使わずに完全にREST API化して進めていましたが、
最初の表示までの若干のライムラグとSEO対策の為、最初の質問だけnode.jsでHTMLテンプレートを使用して組み立てています。
また、シンプルなサイトなのでライブラリはjQueryのみ使用し、concat/minify化はgruntのタスクとして登録しています。gzip化はNginxで行なっています。
我らがDMM様への敬意を払い、白ベース+ポイントで赤のシンプルなデザインにしています。
・CSS(SCSS)が初めてだったので、微調整するのが大変でした。
・質問のパターンを考えるのと、紹介する動画が偏りすぎないようにするのが難しかったです。(これはまだ要調整)
・質問に対するおすすめ動画の精度をもっとあげていく。 (ユーザーの癖を把握して、機械学習とかできればいいかなと)
・おすすめ動画を表示した後に、その商品を誰かにつぶやいたり。
今回、同じ会社に勤めるエンジニア3人が約2ヶ月で作成しました。
実験的なサービスでもありますので、今後も色々と機能追加をしていくつもりです。
どっち?
SIでは09:00から23:00まで毎日働く程度に社畜してきたけど、最近楽できるポジショニングを覚えて定時退社したり仕事してると見せかけ違うことしてたりする。
最近は仕事していると見せかけて全然関係ないFuelPHPとか触っていたしな。
おかげでAuthとかPaginationとかViewのFormクラスとか覚えた。FuelPHP簡単で良いな…!
(でもHaskellとか今まで理解のない難しい概念とかは仕事をサボりながら、ではいまいち理解できない…)
RedisとかMongoDBとかも触りはしているけど活かし方が分からない。
MySQLが一番いいよおおおおおおお。
仕事をサボる。それって良くないだろ…とは思うけどまだ仕事を楽し始めて1,2ヶ月目。
仕事やりたがっている人に仕事させるのがいんじゃね、とか思ってしまう。
なんか聞きに来るしな、これでいいですかとか、ここどうしたら良いですか、とか。その質問に答えて手を動かすのはその人にやってもらおう。
この前とか「言ってくれたらなんでもやりますよ!」とかいう子分気質の人とかいたしな。
だがしかし「何を言うのか」を考えるのが面倒くさいんじゃ、何をやればいいのかまで考えてくれ…と思ったので「まじっすか!あざす!何かあったときはお願いします。」とか言って終った。
暗に自分で考えてもらうように言ったり、今まで自分がしてきた人との調整が必要な作業とかもなるべくお願いするようにして楽できるように頑張った。
あっちも言われたとおりにやれば進捗(自分の実績)が上がるし、美味しいとか思っていたんだろう。甘い甘い!もっと自分でやれ。
せめて「自分はこう思うがこれではいけないですか?もしくはこうすべきですか?」ぐらいの「自分の期待値」と「期待値とのズレ」を持って質問しに来て欲しい。
だがしかし、オレは仕事がしたくないし、作業を持ちたくないんだ…!(クズ)
適度にそういう質問が来るのは、仕事をしてるっぽい、忙しっぽいと思われるための重要な要素の1つではあったりするから、丁寧に対応するけどなッ!
プログラム覚えられて社畜出来るなら、23時ぐらいまで土日休めるならなら全然余裕だと思っているけど、1時とかまでやらされたらさすがに…/(^o^)\
WebはWebでも、上場していてあるてーどでかいところなので大丈夫なんじゃないかなぁ、とは思っているが…!
まぁ一応、職場の環境が良くて仕事が面白いなら、逆に帰る意味って?って感じだけど。具体的にはPCとイスと作業環境。適度に人がいない感じ。人と目線があまりぶつからない作業スペース。ディスプレイとPCを上手く使って作り出すパーティション。
ポテンシャル層を採用したいってお前ら…実は楽したいんだろ!とか思うけど、実際僕とか実績/実力無いのであなた達の世界に入れるだけでも幸せでございます、その層で働かせてください、なんとか追いつきます。という感じですが。。。
「あまり同じ環境にいすぎるのは良くない。楽をしたがるくせがついてしまう」
ととある人が言っていたのですが、まさにその通り!
The・今いかに楽をするかにフォーカスをあてて仕事してる!!!
作業をお願いされて、明らか揉めそうな案件なら断る方法を真っ先に考える/(^o^)\
これはいかん。
今までは意味不明に個人受注の副業も持っていたので、仕事中にその事考えたりコーディングしたりしていたからサボり時間を有効活用できたが、今やそういうのやめたのでサボり時間はあまり活かせない!というのも、インターネットを見続けるのはさすがにサボっているっぽいが、ターミナルでカタカタやっているのは仕事しているっぽく見える。そういう意味でサーバーサイドのコーディングはサボりつつもサボりをフェイクして出来た。
それを考えると、いいタイミングでWeb屋へのコンバートが決まった。
やりたいことと仕事がマッチング出来れば、もうヤバイじゃないっすか。
隠れてコソコソする必要ないっすよ。
もっともっと技術を好きにならないとヤバイ気がするんですが、頑張ろうと思います。
まだコーディングは飽きてないですが、いつか飽きて「これは楽する対象の事項だ」と脳が判断した時、何をするんだろ…。
いずれにしても若いうちからこんなあぐらかいていたらヤバイと思うので、Webのステージで頑張ってきます。
怠け癖が付く前に…。
そしてこんな怠けているのがバレるとヤバイと思うので…。
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
週末に行ってきたイベントだが、ちょっとインパクトが強すぎて、あとたぶん昼から通しで追っかけてるのは自分だけなので、この話誰かに伝えたい!と柄にもなく思ってしまった。
ここまで、日本語でウケを取り、アメリカ人にしか聞こえない英語をしゃべりつつの話。まじありえないレベルの覚悟と実践なんだが・・・!
この人のセッション、ブラジル事情の紹介みたいな話で大ホール側のセッションも覗いてみようかなと思っていた所にこれで、ただちに絶対参加すべきレベルのセッションに格上げされた。こんな人がいるとは。
で、昼休み後の問題のセッション。結局ツイートどころじゃなかったが、こんな感じ:
Javaはあれが酷いとかPHPがとかいう態度でRubyを使うのも無駄だ。
なんという激熱トーク。本当に小さかった南米のRubyコミュニティを仲間と共に成長させ、いまやRubyConf Brazilとか南米で何個もイベントが立ち上がるまでに育てた。この伝道のため、ここ数年で80箇所は回って普及に努めたとかとか。ブラジル事情への関心と関係なく、この熱量を体験できてよかった。
最後の時間オーバー後の「あと一言だけ(本当はあと1分だけと本人は言っていたのだが、わざと誤訳してタイマー役の人に会場から叫んだ自分w)」でどんなにダメだとされていても、諦めずに進めという、過去の偉人が貶められたり失意にあった時代の動画もよかった(もっとも、この話は知っていたのでインパクト自体は薄めだった)。
この後はLTとクロージング。
インパクト強すぎw
これ漫画系展開をバックボーンにしたエンタテイニングなスタイルだと理解せずに真に受けると大変だなと心配になったり。なにしろ上は三行だけど全部通しで書くと
真面目に受け取ったらヤバイ発言多すぎだろ・・・
こ れ が 締 め の 講 演 か よ !
そういえば途中にまどマギネタも入ってた記憶があるのだが、上のインパクトが強すぎてどこかに飛んでった。
その後の高橋さんの最後の挨拶とスタッフを集めてのスタンディングオベーションはちょっとうるっと来た。初参加だから今回の運営自体への思い入れはないのだけど、この回だけでも感激することが多かった。この完成度に達するまでどれだけの努力と熱意が投入されていたかと考えると。
隣の席が実はtdtdsさんでびびってたのだが、最初に立ち上がったのを見て、続く二人目のタイミングが大事!とすぱっと立ち上がってみてよかった。その後前列の人がみんな!立とうよ!みたいにやって一気に雪崩状態。
これで会議は閉幕したのだが、さらにherokuの緊急パーティーが開催され、思い切って行ってみた。まあ、懇親会に輪をかけたリア充な雰囲気でまともに話せなかったのだが、
こんな一日だった。熱かった・・・