はてなキーワード: Node.JSとは
まじな話をすると、N予備校のプログラミング入門コースやるのがオススメ。
一日8時間勉強時間があるなら、だいたい一ヶ月で終わる内容。
月額1000円だけどしっかり勉強すれば一ヶ月の無料期間中に終わると思う。
もともとN高等学校のノンプログラマーの生徒をWebエンジニアとして就職させるために作られたカリキュラムで講師曰く去年はこれで二人エンジニア就職を決めたらしい。
内容も相当親切に説明していて、プログラミングで何か作るだけじゃなくて、就職に必要な環境構築やセキュリティまでみっちりやる。
で講師が書いてる入門コースで習うことがまとめ。テキスト教材もあるけど授業も1項目を2時間で説明している。授業は週2の生放送とそのアーカイブがある。
↓みたいなことが学べる
----
Web ブラウザとは (Chrome, デベロッパーコンソール, alert)
はじめてのHTML (VSCode, HTML, Emmet)
さまざまなHTMLタグ (h, p, a, img, ul, tableタグ)
HTMLで作る自己紹介ページ (HTMLタグ組み合わせ, コンテンツ埋め込み)
はじめてのJavaScript (JS, ES6, エラー)
JavaScriptでの計算 (値, 算術演算子, 変数, 代入)
JavaScriptで論理を扱う (論理値, 論理積, 論理和, 否定, 比較演算子, if)
JavaScriptのループ (ループ, for)
JavaScriptのコレクション (コレクション, 配列, 添字, undefined)
JavaScriptの関数 (関数, 関数宣言, 引数, 戻り値, 関数呼び出し, 再帰)
JavaScriptのオブジェクト (オブジェクト, モデリング, プロパティ, 要件定義)
はじめてのCSS (CSS, セレクタ, background-color, border)
CSSを使ったプログラミング (transform, id, class)
Webページの企画とデザイン (企画, 要件定義, モックアップ, 16進数カラーコード)
診断機能の開発 (const, let, JSDoc, インタフェース, 正規表現, テストコード)
診断機能の組込み (div, 無名関数, アロー関数, ガード句, truthy, falsy)
ツイート機能の開発 (リバースエンジニアリング, URI, URL, URIエンコード)
LinuxというOS (VirtualBox, Vagrant, Ubuntuのインストール, OS, CUIの大切さ)
コンピューターの構成要素 (ノイマン型コンピューター, プロセス, lshw, man, ps, dfの使い方)
ファイル操作 (pwd, ls, cd, mkdir, rm, cp, mv, find, ホストマシンとの共有ディレクトリ)
標準出力 (標準入力、標準出力、標準エラー出力、パイプ、grep)
vi (vimtutor)
シェルプログラミング (シバン, echo, read, 変数, if)
通信とネットワーク (パケット, tcpdump, IPアドレス, TCP, ルーター, ping)
サーバーとクライアント (tmux, nc, telnet)
HTTP通信 (http, https, DNS, hostsファイル, ポートフォワーディング)
GitHubでウェブサイトの公開 (GitHub, リポジトリ, fork, commit, 情報モラル)
イシュー管理とWikiによるドキュメント作成 (Issues, Wiki)
GitとGitHubと連携 (git, ssh, clone, pull)
GitHubへのpush (init, add, status, インデックス, commit, push, tag)
Gitのブランチ (branch, checkout, merge, gh-pages)
Node.js (Node.js, nodebrew, Linux, REPL, コマンドライン引数, プルリク課題)
集計処理を行うプログラム (集計, 人口動態CSV, Stream, for-of, 連想配列Map, map関数)
アルゴリズムの改善 (アルゴリズム, フィボナッチ数列, 再帰, time, プロファイル, nodegrind, O記法, メモ化)
ライブラリ (ライブラリ, パッケージマネージャー, npm)
Slackのボット開発 (slack, mention, bot)
HubotとSlackアダプタ (hubot, yo)
モジュール化された処理 CRUD, オブジェクトライフサイクル, filter)
ボットインタフェースとの連携 (モジュールのつなぎ込み, trim, join)
同期I/Oと非同期I/O (同期I/O, 非同期I/O, ブロッキング)
例外処理 (try, catch, finally, throw)
HTTPサーバー (Web, TCPとUDP, Webサーバーの仕組み, Node.jsのイベントループ, リスナー)
HTTPのメソッド (メソッド, GET, POST, PUT, DELETE, CRUDとの対応)
HTMLのフォーム (フォームの仕組み, form, input)
HerokuでWebサービスを公開 (Webサービスの公開, heroku, dyno, toolbelt, login, create, logs)
認証で利用者を制限する (認証, Basic認証, Authorizationヘッダ, ステータスコード)
Cookie を使った秘密の匿名掲示板 (Cookie, Set-Cookie, expire)
UI、URI、モジュールの設計 (モジュール設計, フォームのメソッド制限, リダイレクト, 302)
フォームによる投稿機能の実装 (モジュール性, textarea, 303)
認証された投稿の一覧表示機能 (パスワードの平文管理の問題, 404, テンプレートのeach-in)
データベースへの保存機能の実装 (データベース, PostgreSQL, 主キー)
トラッキングCookieの実装 (トラッキング Cookie, IDの偽装, Cookie の削除)
削除機能の実装 (データベースを利用した削除処理, 認可, サーバーサイドでの認可)
管理者機能の実装 (Web サービスの管理責任, 管理者機能の重要性)
デザインの改善 (Bootstrap, レスポンシブデザイン, セキュリティの問題があるサイトを公開しない)
脆弱性 (脆弱性, 脆弱性で生まれる損失, 個人情報保護法, OS コマンド・インジェクション)
XSS脆弱性の対策 (XSS, 適切なエスケープ処理, リグレッション)
パスワードの脆弱性の対策(ハッシュ関数, メッセージダイジェスト, 不正アクセス禁止法, パスワードジェネレーター, 辞書攻撃)
セッション固定化攻撃脆弱性の対策 (セッション, セッション固定化攻撃, ハッシュ値による正当性チェック)
より強固なセッション管理 (推測しづらいセッション識別子, 秘密鍵)
安全なHerokuへの公開 (脆弱性に対する考え方, HTTPの廃止)
Webフレームワーク (Express.js, フレームワーク導入, 簡単なAPI, セキュリティアップデート, Cookie パーサー, ミドルウェア, 外部認証, ロガー)
ExpressのAPI (app, Properties, Request, Response, Router)
GitHubを使った外部認証 (Passport, OAuth)
テスティングフレームワーク (Mocha, レッド, グリーン, リファクタリング)
継続的インテグレーション (CircleCI)
クライアントのフレームワーク (Webpack, Chrome 以外のブラウザでもES6)
DOM操作のフレームワーク (jQuery, jQueryアニメーション, this)
AJAX (jQuery.ajax, クロスドメイン, 同一生成元ポリシー, x-requested-by, CORS)
WebSocket (WebSocket, WebSocketの状態遷移, Socket.io)
RDBとSQL (DDL, DCL, CREATE, DROP, INSERT, DELETE, UPDATE, WHERE)
テーブルの結合 (外部結合, 内部結合, 片側外部結合, JOIN ON)
インデックス (インデックス, 複合インデックス, Bツリー)
集計とソート (SUM, COUNT, ORDER BY, GROUP BY)
「予定調整くん」の設計 (要件定義、用語集、データモデル、URL設計、モジュール設計、MVC)
認証とRouterモジュールの実装 (Mocha, supertest, passport-stub, モックテスト)
予定とユーザーの保存 (セキュリティ要件, UUID, 複合主キー)
予定とユーザーの一覧の表示 (非同期処理, Promise, then)
出欠とコメントの表示 (入れ子の連想配列, Promise.all, 子どもからデータを消す)
門外漢からするとこんな風に聞こえてる。(所々適当に書いてるし書いてる内容は嘘デタラメ)
「gulpでbowerしてsassをgruntでビルドすれば、cssがストリーミング形式でデタッチされるから便利だよ。それにgulpはCoffeScriptとかtypescriptみたいな流行りのサードパーティも従来のJSみたいに変換してくれるしウォータフォールじゃなくてアジャイル的なプロジェクトでも使いやすい。スクラッチから書かなくてもいい感じにアジャストしてくれるよ。あと、OSSとしてgit上に上がってるんだけど、DLなんかもAWSと連携させてWebGLとTensorflowやらchainerやらと組み合わせればブラウザでDQNとかA3CとかDCGANも動かせるスクリプトがリリースされてた、バックエンドではDNNを走らせてフロントで表示する分をNode.jsでカスタマイズしたりタスクランナーでプロセスをマネージメントできるからもはやjsでtensorflowを含めたpythonのラッパーみたいな感じで使えて便利。最近ではbluemixがBitcoinのマインングをサポートしていてブラウザ上でウォレットからマイニングのセットアップまでできるんだって、ブロックチェーンの仕組みを拡張して社内のタスクマネージャーとかNAS上のデータを分散してサーバーに保存できるみたいなこともあるんだって。」
うちの会社、Web系なんだから当然っちゃ当然なんだけど、案件の8割くらいはCMS案件なのよね。
それもWordPressは脆弱性出しすぎとかで保守しにくいってことでもうちょいマイナーなCMSが中心。
プログラマーとして入社してから今まで、デザイナーが渡してきたHTMLファイルをCMSのテンプレートとして構築する、
っていう作業が社会人生活の半分以上を占めていて、業務としてはPHPの簡単なプログラミングすらあんまり経験ない気がする。
CMSのテンプレートもif文とかループとかあるからこれもプログラミングといえばプログラミングなんだけど、
Web系っていうともっとPythonとかNode.jsとかVueみたいなキャピキャピした技術に触れるもんだと思ってたよ。
給料は安いけど割りかし残業も少なくて何かとヌルい会社だから今のところやめるつもりは特にないんだけど、
ディレクターとの調整とかExcel方眼紙で仕様書(多分一般的なSEが作るのよりはかなり簡潔なもの、勿論UMLとかはない)書いたり見積もりしたり操作マニュアル書いたりっていう経験はあっても
下流工程を生きるプログラマーとして例えば5年後10年後、技術的なキャリアとして「HTMLファイルをよくわからんCMSのテンプレートとして当て込むだけのことを長年やってきたおじさん」
が誕生したとして、果たして生きていけるのか心配になってきた。
僕は生きていけるのでしょうか。転職した方がいいんでしょうか。教えてください。
さっき、テック系ブログのRSSと一緒にホットエントリのRSSを外して、アプリを削除したよ。何年の付き合いだろう?サービス開始からだから・・・悲しくなるから確認せずに行くよ。
最初はダイアリーに書いて、反応なんて全然なくて、広告コメントばかりだったな。いまでもはてなの知り合いはいないんじゃないかな。
ネットコミュ障なんだ。Twitterとか色々やってるけどやりとりする相手なんて誰もいないよ。
僕は君になにもできなかったね。本当に君の事が好きだったのかな?本当に村民になりたかったのかな?多分、違う。本当はブクマされて、スターつけられて、承認欲求を満たしたかったんだ。
意識高い系を笑えないよね。何年も異性にお金を注ぎ込む人を笑えないね。僕もずっとホットエントリを見て、色んなものを買ったりしたんだ。
====
どうしてこうなったか?聞きたくもないだろうけど、最後だから言わせてくれよ。
初めて君を見たとき、天国に見えたよ。最新の技術トレンドがここにあってさ。自分の理想郷はここなんだって。技術力をつけて、認められる人間になって、ここの住人になる事が幸せなんだって思ったんだ。
そうやってさ、次々流れてくるトレンドに耳だけが年増になっていって、それを知らない周りの人たちをバカにしてたな。
でもさ、肝心の技術力は全然つかなくてさ、大学生になれば、就職すれば、東京に出れば、新しいマシンがあれば、お金があれば、時間があれば、やる気があればって制約条件がなくなる度に新しい言い訳を考えてたな。
結局、生半可な知識じゃ参加できないってチンケなプライドのせいで勉強会に参加せず、ブログも書かず、なれたのは一番軽蔑するExcelとにらめっこしてるSIer。おいおい、Web系のベンチャーでテックブログ書くんじゃなかったのかよ(笑)
耳年増で、周りをバカにしてたクセに仕事が全然できない自分とのギャップに10年耐えてきたけど、年末に休職したんだ。自律神経失調症。
眠れるんだよ?ごはん食べられるんだよ?ただ、会社の人みんなが怖くなってさ、朝だるくってさ、すげー疲れてさ。苦しくて。仕方ないから受け入れて。っていうか、甘やかして。つまるところ、ズル休みなんだよ。
時間が出来たから、ずっと積ん読になってた技術に正面きって立ち向かってみたんだ。すぐ投げ出したね。理由は分からないけどただ苦痛だった。
作りたいものなんかなかったし。多分、技術を使いこなしてスゴいって言われたかったんだね。
部屋にはPerlやRoR、SQLite、jQuery、node.js、AWS、Haskell、Hadoop、Docker、Raspberry Pi、R、Reactのホコリを被った本がある。彼らはブックオフ行きかな。
最近は時間はあるからさ、はてブばっかやってたんだ。見るのがホットエントリから新着エントリーになったな。いつもみたいに100文字制限ギリギリのコメントだけじゃなくて、10文字くらいの一言コメントも書くようになったんだ。その10文字コメントのうちひとつが100スターくらいもらえてさ。
そのとき分かったんだ、これはずっと片思いなんだって。叶わない恋なんだって。自分が住める世界じゃないんだって。おかしいよね、小学校の頃のプロ野球選手の夢だって、中学生の頃の小説家の夢だって、高校の頃のパンクロックスターの夢だってすぐ諦められたのに、この夢は35歳の今だって諦めきれないんだ。
応用情報取った時も、ネスペ取ったときも、オラクルブロンズ取った時もLPIC 2取った時も全く達成感なかったよ。コレ取るのに何年かかってんだってさ。村民は1ヶ月あれば取れるぞ。同期のアイツだって3ヶ月で取ってるぞ。何が言えるんだってさ。
銃・病原菌・鉄読んだ時もそうだった。で、お前はそこから何かアウトプット出来るのか?ってさ。読むだけなら幼女でも出来るんですけどwって。
伝わる?伝わらないだろうな。みんな高IQですぐに色んな技術を理解出来るじゃない?すごいよ。自分は二浪で駅弁大学しか行けないくらいのバカで、リアルでもネットでも知り合いを作れないコミュ障で自己承認が全然出来ないんだ。
ADHDって言葉を知った時、これだーって思ったけど違ったね。ITの勉強してても過集中が全然ないんだ。
話が逸れたね。認知療法してて、気づいたんだよ。何をしてても自分を認められないんだよ。はてなに受け入れられる事を成し遂げられてないからね。
だから、自分を認めるために、君のことを自分から切り離さなきゃいけない。自分の世界を作らないと。一方的になっちゃうけど、さようなら。勝手だけど、今にも泣きそうだよ。
これからどうしようかな。匿名で好きな事書けるのはココだけなんだ。自信のない間違ってるかもしれない事を書いてもいいのはココだけなんだよね。ここなら見たくないコメントを見なくてすむんだ。
でも、前に進まなきゃ。夢の世界への憧れは終わりだ。目の前の現実世界に適応しなきゃ。また逃げ戻ってくるかもしれないけど、いまはさようならしなきゃ。
最後に何か残せるとしたら・・・スタバのハチミツ、あれ何に使うと思う?あれ、ワッフルを食べるときに使うんだよ。
・・・スベったね。
さようなら。このエントリも2時間すれば次のページ行きだ。そうすると、誰かの目にも触れなくなる。単なるはてなの磁気データになる。
最後にブコメとかつくんじゃないかって浅はかな期待を持ちながらこの内容を登録するボタンを押します。じゃあね。
P.S. 認知療法について書いてくれたこの増田には本当に感謝しています。まだまだ自分について書く事が苦しいけど、正しい道を向いてると信じています。
まずサーバーサイドとクライアントサイドの区別が付くようになろう
javascriptをnode.jsで動かすつもりだったという話なら、すまない
後輩「先輩、このシステム僕が引き継ぐ事になりました。よろしくお願いします」
先輩「そうかそうか、やっと肩の荷がおりるな」
後輩「これ2016年に作ったシステムなんですよね。僕その頃まだ入社してないんで、最初の方から教えてもらっていいですか」
〜
先輩「まずはじめにnode.jsを入れる」
後輩「あ〜昔流行ったサーバーサイドでJavascript使えるやつですよね。このシステムnodeで動いてたんですね」
先輩「いや、nodeは使ってない」
後輩「え?」
先輩「nodeに付属しているnpmというパッケージマネージャーを使ってる」
後輩「なんでまたそんな回りくどいことを・・・」
先輩「当時はnpmが一番メジャーだったんだよ。今主流のN3(N3 is Not Npm)はまだ無かったしな」
〜
先輩「よしnode入れたな。じゃあnpm installだ」
先輩「printFizzBuzzというパッケージが404みたいだな」
後輩「何に使うんですかそのライブラリ」
先輩「知らん。依存してるライブラリが依存してるライブラリが依存してるライブラリかなんかだろう」
後輩「バタフライエフェクトってやつですね」
先輩「思い出した。これは昔話題になったやつだ。printFizzBuzzは何かの特許に抵触していて非公開になったらしい。
npm installで落とすのは諦めて、ローカルに残ってるやつで何とかするしかないな」
後輩「それ使って大丈夫ですかね。法的に」
先輩「仕方ないだろ」
〜
先輩「ようやく諸々揃ってBabelやReactやWebpackを使えるようになった」
後輩「それ何ですか?」
先輩「まずBabelだが、これはES2015をES5にコンパイルするツールだ」
後輩「え、なんでダウングレードするんですか?」
先輩「古いブラウザで当時の最新機能を使うにはこうする必要があったんだ」
後輩「なるほど。ではReactは?」
先輩「これは今で言うWeb Componentsみたいなものだな。あと仮想DOM」
後輩「Babelじゃダメだったんですか?」
先輩「ダメだったんだよ」
先輩「当時はモジュールが標準対応してなかったり、http/2もあまり普及してなくてサーバーが馬鹿だったんだよ」
後輩「へ〜大変ですね」
〜
後輩「いつの間にかこんな時間ですね。今日まだ1行もコード書いてないですよ」
後輩「今となっては余計な苦労が増えてるような気がしますけどね〜」
先輩「当時はこれが最善の選択だったんだよ」
後輩「そうなんですね」
Node.jsってクソなんでしょ?
socket.ioとか使い物にならないらしいじゃん。
npmでインストールとアンインストールできるだけの知識さえあればいいんでしょ。
golangを使えばいいの?
5ページほどの静的サイトを作るのにgolang使ってる人もいるそうだけどPHPじゃダメなの?
経営者から見たらエンジニアの自己満足なだけで無駄に金払ってるようなものじゃない?
は?scala?
結局、大企業なんて基本的にAラン大卒かネット界で知名度のある限られた人しか入社できないんだからgolangもscalaも覚えるだけ無駄なんだよ。
結局利用できる人が多いPHPでWebサイトを作ればいいよね。
自分が知っている言語だと、「param == 0」は前提にならないと思うのですが、想定している言語を教えて頂いても構わないでしょうか?
自分の知っている言語では論理積・論理和の評価優先順位は同じ物ばかりで、上げられている条件分に関しては
if ((param==0 && 判定(param2)) || !param3) {~}
そのため、仮にparamが0以外だったとしても、!param3がtrueと評価されるような値の場合は条件を満たすと思われるのですが。(実際node.jsのv5.11.0で試した所そのようになりました。)
最新のNode.js、Chrome、Firefox、Edgeなどはクラスも普通に使えるし、IEとかもbabel使えばいい。
コンピュータ言語って世の中に山ほどあるけれど、それぞれの言語ごとに特徴がある(特徴のない言語は廃れていく)。
あまり言語に詳しくない人相手に、俺の考えるそれぞれの言語の特徴を書いてみようと思う。
なお、取り上げるのはある程度広く使われている言語に限りたいと思う。
言語名 | 概要 |
---|---|
C言語 | 高速動作するバイナリ生成を目的としたコンパイル言語。だいたいどんな環境でも使えるがバグ出やすい |
C++ | マニアック言語、高速、習得大変 |
Java | サーバで高速かつ安定に動作するコンパイル言語、大規模でよく使われる |
C# | 主にWindowsクライアント用のバイナリ生成に使われるコンパイル言語 |
Perl | 広く使われていたが今は若干時代遅れのスプリクト言語。汚い |
Python | Perlにかわって主流になりつつあるスクリプト言語。綺麗 |
PHP | Web開発にフォーカスされたスクリプト言語。一世を風靡した。 |
Ruby | とても綺麗なスクリプト言語 |
JavaScript | ブラウザで実行出来る唯一の言語。言語自体はいまいちだが、ブラウザの事情で需要あり |
Go | サーバサイドで安全かつ高速動作するバイナリ生成を目的としたコンパイル言語 |
メモリに直接アクセスして書き換えるといったコンピュータの機械語に近い言語構文を持つため、高速な処理が可能な言語。
コンパイラの歴史も古く環境も整っており、組み込み系などを含むほぼ全ての環境で利用可能な万能言語。
一方で、メモリの確保や解放といった基本的なことも自前で処理する必要があるため、コーディングの効率が良くなく、多種多様のバグを生みやすい側面も持つ。
ある程度以上のエンジニアであれば常識として知っておきたい言語だが、初めて覚える言語としてはあまり適当ではない。
C言語にオブジェクト指向を導入した言語。C++言語とはあまり呼ばれず、しーぷらすぷらす、もしくは略してしーぷらぷら、しーたすたす、などと呼ばれる。
C言語の速度を維持したままオブジェクト指向やテンプレートなどの効率的な記述を可能にしようとした意気は真っ当だったのだが、
当時最先端だった色々な技術や思想を叩き込んだおかげで、あり得ないほど複雑化した言語としても有名。
「C++を理解しています」という人はほぼ初級者で、本当に理解していくほど「C++には自信がありません」となっていく。
速度を追求する分野では良く使われている。完全に理解するのは難しいとしても、テンプレートくらいまでは理解しておくと仕事上なんとかなる…かもしれない。
サーバサイドで安全にコードを実行する目的でよく使われる言語。長い歴史を持っており、比較的高速に動作する。
当時は画期的だった「バーチャルマシン」や「ガベージコレクション」という機構を備え、CやC++でよく問題になるメモリの解放忘れというバグを生まず、
サーバサイドなどで何千時間と動作するソフトウェアに適した言語として受け入れられた。
必然的にエンタープライズ用途で利用されることが多く、各種ツールなども豊富。人海戦術がしやすい言語という側面も出てきた。
一方でブラウザにHello Worldを出すだけでも大変な労力を必要とするので、スタートアップなどではあまり使われない。
ガラケーのアプリや(ちょっと違うが)Androidなど、クライアントサイドでも使われることがある。
プログラミング言語で最初にJavaを覚えるという人は結構多いが、仕事としてJavaを使うのは大抵SI系の業務になり、なかなか辛い労働を強いられる可能性が高い。
クライアントサイドで安全にコードを実行する目的でよく使われる言語。こちらも比較的高速に動作する。
元々はWindowsのクライアント用の言語であり、Javaとは違ってクライアント向きのAPIが多数ある。
マイクロソフトが開発した言語ということもあり、マイクロソフトの優れた開発環境が利用出来るので開発効率は非常に高い。
Unityなどでも利用可能であるが、基本的にはクライアントの実行形式ファイルを生成する目的が大きく、サーバサイドではあまり使われない。
自作のゲーム開発をしたいのであればうってつけの言語。初めて覚える言語としても十分に良いだろうが、C#を使う仕事は近年無くなりつつある。
ほぼ全てのLinux系ディストリビューションに含まれており、ツールや様々な用途で使われていた。
上に紹介したC、C++、Java、C#のようなコンパイル言語とは違い、(少し語弊はあるが)1行ずつ実行してエラーがあれば止まるスクリプト言語である。
ちょっと開発してすぐに実行ということが出来るのと、コマンドラインでワンラインのコードを読み込ませてちょっとした処理が出来るなど応用範囲の広い言語である。
20年近く前にWebでCGIが普及した時には、ほぼどのようなサーバ環境でも実行可能だったこともあり、Perlを使うことが極めて多かった。
しかし、主に読みづらい言語仕様のせいで、近年新規ではほとんど使われなくなった。既存のコードもどんどん別の言語に置き換えられていることが多い。
日本の大手Web企業の一部が使っているので、そこに就職するために覚えるのもアリっちゃアリだけど、今からPerlをわざわざ覚えるのは強くオススメしない。
後発のスプリクト言語。こちらもほぼ全てのLinux系ディストリビューションに含まれており、それゆえに広く使われている。
インデントまで言語仕様で規定することで、誰が書いても読みやすいコードになるように考えられている言語である。
Perlの代わりに使われることが増えていて、周辺ツールなども充実しており、小規模から大規模までカバーする勢いがある。
ただ、Python2とPython3のバージョン間での非互換性があまり綺麗に設計されていなかったため、そこで混乱を招いていたこともあった。
最近だとマシンラーニング系のライブラリでPythonが使われていたり、海外ではPerlに代わる言語として受け入れられつつある。
Web開発に特化したスクリプト言語。CGIの代わりに使われ始め、一世を風靡した。
以前CGIでWebに何かを表示するには比較的大変な労力を割かなければいけなかったのが、PHPを使うと誰でも即座にWeb開発が出来たので爆発的に普及した。
またphp.netの豊富なドキュメント&スニペットのおかげもあり、開発初期の効率が大変に良い言語である。
残念なことに、言語やAPIの設計がいけていない点が多く、一部の人からは蛇蝎の如く嫌われている。
今でも根強い人気があり、海外でも小規模プロジェクトの最初の開発にPHPを選ぶのは比較的よくある選択肢であるようだ。
Webアプリを開発をしたいという明確な目的を持つ人が、最初に学ぶ言語としてPHPを選ぶのは理にかなっていると思う。
なおこの言語を本気でディスってる人は大体視野の狭いエンジニアであることが多いので、地雷エンジニアを見分けるのにも役立つ。
綺麗なスクリプト言語。日本発で世界的に普及している数少ないIT技術の一つ。
言語仕様が美しく、それゆえにファンが多い。Ruby on RailsというWeb用フレームワークの登場で、Webアプリでの採用例も一気に増えている。
基本的には他のスクリプト言語と同じくサーバサイドでのプログラミングに用いられることがほとんどである。
スクリプト言語で何かを作成するのであれば、Rubyを選んでおけばそう失敗することはない万能言語。
サーバサイドで何かすることに興味を持っているならば、最初に覚える言語としてはとてもオススメ出来る。
一方で、なぜかRubyが採用するWeb側のフレームワーク(具体的にはprototype.jsやCoffeeScript)はいつもクソなので、そちらは深入りしないのが吉。
ブラウザで動くスプリクト言語。ブラウザ戦争が勃発していた18年前、奇跡のようなめぐり合わせでベンダー間の合意が取れ実装された言語。
言語としてはプロトタイプベースのオブジェクト指向という少しめずらしい形式を取っているが、実際にはあまりその特徴は利用されていない。
言語仕様がイマイチで、大変バグを生みやすい言語であり、また関数のスタックが深くなる特性もあり、あまり積極的に使うべき言語ではないが
ブラウザで動く言語が現在これしかないので、大きなシェアを持っている。
一部の物好きがサーバサイドでこの言語を使おうと(主にnode.jsで)四苦八苦している(とはいえ、1つの言語でWebとサーバが完結するのは大きなメリットだ)。
ブラウザで動く唯一の言語のくせにとにかく書くのが面倒ということもあり、多数のAltJSと呼ばれるJavaScriptに変換される別言語を生み出されている。
まあJavaScript本体人が手で書く言語ではない…というのがECMAScript5までの印象だったが、新しい規格が順次導入されており、今後に期待。
Web業界で生きていくならば、好むと好まざるとにかかわらず覚えなければいけない言語である。
最初に覚える言語としては、ブラウザ上でゲームなども作れるし、node.jsでサーバサイドもできるしで、意外とオススメだったりする。
C、C++やJavaと同じでコンパイル言語。サーバサイドで高速かつ安定なバイナリを出力することを目的とされ設計されたGoogle発の言語。
その目的においてはかなり高性能を誇るので、特に速度を要求されるサーバサイドでのプロジェクトでは導入が進んでいる。
それ以外の目的ではあまりこの言語を採用するメリットはないが、ニッチな用途をピンポイントで抑えており、これから広く利用されることも期待される。
コミュニティも活発であり、初めて言語を覚える人が参入すれば喜ばれるだろう。言語としても美しい言語なので、サーバ系のプログラムに興味があればオススメである。
繰り返しだけれど、それぞれの言語ごとに特徴があり、特徴のない言語は廃れていく。
ここに挙げた言語は何らかの特徴があり、何らかの用途で必要なので生き残っている。
その背景を知った上で、ここにある言語は全部ある程度読み書きが出来るようになると素晴らしいと思う。
**誰かみんなの主張のまとめを作ってくれないですか?** (まあそれこそお前がやれよって話かもしれないので、誰もやってくれなかったら私がしますが。。)
最近、JQueryはもはや不要でReactさえあればOK,みたいな記事をよく見ますね。
論旨としては、どうせトランスパイラ使ってるんだからもっと便利な書き方しようぜ!ってことなんだと思います。(virtual DOMがメインだ!という話もあったけど、じゃあ何でReactなの?というのは聞きたいかな。メジャーだから?)
ちなみに私は昔coffeeとbackbone.jsか何かで業務用のページ(SPAではなかったような気がする)を作るお仕事をしたことがありますが、フロントエンドエンジニアというわけではないです。どちらかというとサーバー管理とかのほうがよく知っていると思いますが、Javascriptもそれなりには書くくらいの感じの人です。Reactは不幸にして一度も触ったことがないので、以下の文章はすべてコードサンプルをみたうえでの感想です。
まずこれ。正直そんなにたくさん動的にがりがり書き換えているページをあんまり見ない気がするんですよね。その上正直そういうウェブページ、あったとしても大体使いづらいです。
世の中のページが全部FBならいいのかもしれませんが、具体的にはどんなところで使ってるんでしょう。業務ページとかですか?あと、なぜSPAにしなければいけないのかもよくわからないです。画面遷移するのだめなの?という感じで。
トランスコンパイラを使うのって、結局「将来的には全部ES6になるのだから、今のうちからES6で書いておけば将来のメンテナンスコストとかも減ってうれしいよね!」っていうことなんだと思います。
こういう例、JS以外にもいろいろあって、例えばboost、Androidのsupport library, Pythonのfrom __future__ importなどなどあると思うんですが、どれもやっぱり将来的なコストを見据えて、非標準のライブラリ・記法を使いましょう、ってことですよね。
でもJSXってそういうのじゃないじゃないですか。いわばsupport libraryを使うのとmonoで全部書くのと、位の違いがあるように見えます(そこまでは違わないかw)。そういう考察を一切入れずに、「どうせトランスパイラ使ってるんだから拡張記法使っちゃおうぜ!!」っていうのはかなり危ういように見えます。
そもそも、JSって結構独特な言語ですよね。もちろん今はnode.jsとかあるわけですけど、まあやっぱりスクリプト言語の標準の座ってPythonやRubyですよ。世の大多数の人はそっちのが使いやすいとおもってるんでしょう。ということでそもそもトランスパイラ通すんだったらもっと普通の言語から変えるようなソフトウェアが流行ってもいいんじゃないかなあとか思いますけど、そういうのがないのも謎です。dartとかどうなってるんですかね。(まtypescriptとか一種それだという話もあるか)
五年、十年あとにReact.jsって流行ってるんでしょうか。例えば五年前はcoffee scriptが結構流行ってましたけど、たしかもうサポート打ち切りとかになっちゃったんですよね。もちろん営利企業がバックなので、そこまで急になくなるかはわからないですけど、五年したらみんなまた別のライブラリがすごい!!みたいに言ってるんじゃないでしょうか。
まあだからこれはフロントエンドエンジニア業界全体の問題なのかもしれませんが、そういう将来的な保守コストをどう考えているのかが気になります。特にもし業務ページであるなら、せいぜいがなるべく枯れたライブラリ(≒JQuery)と、テンプレートエンジンあるいはフォーマットストリングでも使ってpure ES6で書いたほうがいいんじゃないでしょうか。そうすると結局SPAにはしないですよね。
まあこれを突き詰めるとじゃあetaxもactivexで、銀行のシステムはcobolで、マシンはpc98で、、、とかなっちゃうかもしれないんで、難しいところではあるとは思いますが、、、
とりあえずこんなところで、有識者の皆さんよろしくお願いします。
React.jsでした。angularと混ざりました。。あと特に喧嘩売ってるつもりとかは全くないですがそう見えたらごめんね。
id:murishinai 主張は単純で、せいぜいES6+トランスコンパイラ(+JQuery)とかでいいんじゃね、遷移はサーバー側でやったほうが楽じゃない?という感じです。
id:wordi virtual domが最大のメリット、ってのはよく見る意見ですね。例えば実際どんな場面で(どのくらいの規模のプログラムで)domの改変コストが効いてくるのか、みたいな実例を教えてくださると助かります。(もちろんFBとかはそうでしょうけど、もっとなんだろう、身近な例でお願いしたいです。)なんかReactががりがり(かつユーザー目線から見て有効的に)使われている例がイメージ出来ないのが問題な気がしてきました。
id:logic ええっと、それはそうなんですけど、なんだろう。標準のもので、少なくとも今後10年はあるだろうと言うもの(たとえばES6+フォーマットストリング)があるのにも関わらず、今後5年持つかもわからないライブラリを全面に押し出すの、ちょっと怖く見えるなあという気持ちです。
id:erukiti 具体的に頭の悪い点をご教授くださるとたいへんありがたいです。小規模だとそもそもvirtual domのメリットもなさそうですし、ES6標準でええんちゃうのんという気がしてならないのですが。
id:manaten もちろんFBやGMailをJQueryだけで作るのは不可能だと思います。だからFBはReactを、GはAngularを作ったのでしょうが、逆にそんなに気軽に使うようなものにも思えないのですよね。それこそ何百ブクマも付くのやべえなあ、と。(ところで私にはReactよりAngularJSのほうがずっと気持ちよく見えます)
SPAが使いづらいってのは言いすぎかな。正確には、「ページ遷移型のUIに比べて、SPAであることのメリットが明らかに生きているページって少なくないですか?」ということです。もちろんFBとかGとかtwとかは例外だと思いますけど、DOMを1000個とか10000個とかいじくり回しているページばっかあるようには思えない。もちろんどーーしてもSPAじゃなきゃダメなんだっていうならこの手のライブラリを使うといいとは思うんですが、どっちかというとニッチな需要じゃないでしょうか。
あとなんか保守点検に関する意識がちょっと違うのかなっていうコメントが散見されたんですけど、うーん、一発書いて書きっぱなしっていう案件そんなにあるんですかね?ちょっとそこがよくわかんないです。一度書いてもやっぱりn年先、さらにもっと言えば自分がその職場からいなくなった後のことまで考えてプログラム書くべきだと思うんです。そうすると、例えば数年後のプログラマにとってのReactは今のprototype.jsになってるかもしれない。そういうリスクが怖いです。勉強すればいいじゃんっていう意見もそうなんですが、なんでしょう、どちらかと言うと保守を気にしているので、そっちじゃないです。まあ幸いにして私は人の書いたJSをいじくり回した経験はないので、ただの推測なんですが。
それともしかしたら「枯れた技術」あるは「標準化」という意識があんまりないのかなとも思いました。まあ確かに「Webの世界は日進月歩!」ってことなのかもしれないんですが…。別のページのブコメとか見ても、「枯れた技術を使う」=「不勉強」みたいなのがあって、不思議です。。
あとcoffeeのころ、っていうコメントありましたが、あの頃はみんな夢がありましたよね。AltJSが世界を救う!みたいな。翻って今はどうか。それを思うと、やっぱり何でもかんでもReactじゃ、という意見には違和感を感じるんですよ。
増田に書いたのは単にみんなが見てくれるというだけの理由です。そもそも今諸般の事情でお仕事としてのエンジニアはしていないですし。ほんとに純粋な質問だと思ってもらえればうれしいです。
まあ長くなってきたので私のブログにまとめ直してもいいのですけど。
そういえばモバイルという話も出ていましたが、先日のandroid instant appsって、アレ「HTMLでモバイル向けに軽快なリッチUI作るの無理だからやめような」ってことかと思ったんですが、どうでしょうか。もちろん今現在は必要ですけど~。
昨年まではLinux界隈を露骨に毛嫌いしてて、node.jsとかアレとかコレには見向きもしなかったMicrosoftが。
何があったんだろう。アップルに市場を食いつぶされてて焦ってきたのかねえ?
アップルのMacにはWindowsをインストールできるが、普通のPCにOSXをインストールする事は不可能。ライセンス的にも許されていない。
だから結局、一般のPCを買うよりは、Macを買った方がずっと合理的なんだよね。
それに、特にWebデベロッパーは、Mac以外の合理的な選択肢は無い。
なぜかMicrosoftはmodern.ieというサイトでIEやEdgeの仮想マシンを配布しているようだけど
いわく
等々上げればきりがない。
こういう人達に共通しているのは、知識の根っこにある方が上だと思っていることだ。
プリミティブなことをやれば数学の公式のごとく、下流にあるすべてを把握できると思っている。
もうやめませんか、そういうのは。
知識がツリーになっていることは純然たる事実だ。新しく見える知識でも昔の知識をちょっと変えたものだったりするのは確かだ。
だけど、そんなのは当たり前の話なのだ。それぞれの知識はレイヤーで重なっていて、それぞれの役目を果たしている。
知識のツリーというは一種の生態系なのだ。シマウマはライオンに食べられるが、動物的にライオンのほうが優れているということはない(←(`・ω・´)お前それサバンナでも同じ事言えんの?)。
生態系と違うのはそれがものすごいスピードで起こるということ。だから時間が経てば今ある最上位のレイヤーの上にも更にレイヤーがどんどん重なっていく。
javascriptがいい例だと思う。
昔はブラウザでさえまともに動かせなかったが、node.jsやbowerやgrunt,gulpができて、javascriptというレイヤーの上に積み重なっていった好例だと思う。
つまりそういうことなのだ。あるレイヤーで満足してしまうと、いつの間にか最上位のレイヤーがはるか上の方にあって浦島太郎になっていたりする。
今の話題についていけずに、若者をひがんだりする。今お前らがやっていることはワシが育てたと言いたくなる。かっこ悪い大人の完成。
でもそれはしょうがない面もある。
おじさん達が若い奴らと一緒に知識を追いかけるのは無理があるからだ。走り続けるのには体力がいる。背負わなければならないものも増えてくる。
生物として、自分がやっていることが無意味だと言われないように、追い抜かれないように、必死なのだ。
だから知識のツリーを優劣と混同して、たとえ追いぬかれても自分の存在価値を示せるように攻撃を行うのだと思う。本来は全く逆なのに。
(※すべてのおじさんがこうだとは言いません。最後尾から安々と追い抜いていくすごいおじさんは確かに存在します。)
話を元に戻す。新しい知識の話を聞いたらどうか偏見を持たないで聞いてほしい。それはもう自分ではどうしようもなく、手が届かないかもしれないけど。
少なくともそれは優劣の問題ではない。別のレイヤー、次元の話なのだ。
そしてもし自分が持っている知識のさらに上にあるレイヤーの話をされたら喜ぶべきなのだ。
どんなレイヤーの知識も一つ下のレイヤーに依存していることは確かなのだから。
---ーー
下記のようなファイルを用意してOKボタンを押下してもgettxt.jsのOnOKが呼ばれません。
誰か教えて下さい。
gettxt.js
http.createServer(function (req, res) {
fs.readFile('./HTMLPage.html', 'UTF-8', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});//text/plainから変更
res.end(data); // 「Hello, world!」から変更
});
}).listen(8124);
function OnOK(){
var text = document.getElementById("text").value;
// textを使って何か処理を行う
}
※<>は全角にしてます
<head>
<script src="gettxt.js"></script>
</head>
<body>
<input type="text" id="text" size=50></input>
<button onClick=javascript:OnOK() >OK</button>
</body>
プログラムの癌(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でも癌治療に効果があったと多くの高評価が書かれている 要確認
心臓 癌
癌 熱
癌 熱
などを調べてみると実際受けた患者の感想が書かれている。どれも末期だとか手の施しようのないといわれたとこから生還している。
ちなみに血液性の癌や白血病には高濃度ビタミンC点滴が有効 保険はきかない
日本の医療は米に10年 欧州に20年遅れていると言われている。
なので他の病気に関しても日本の医者の言う事よりもまず欧州がどんな治療をしているか調べてから判断した方がいい。医者はSilrだと思え
欧州では2008年の段階で癌が減っている事が記事になっている。
www.news-medical.net/news/2008/04/10/30/Japanese.aspx
http://hayabusa6.2ch.net/test/read.cgi/cancer/1251284895/
他にもここに詳しく書いてあるぞ!
http://apps.wiki.fc2.com/wiki/その他
プログラムの癌と言えば動的言語のことだろう。それを広めようとする関係者、開発者もまたがんだ。
メーカー製の静的言語フレームワークを使えば誰でも簡単に高度なことができる。
わざわざ出来損ない言語を引っ張りだしてきて、無駄に苦労したり、無駄な苦労を広めたりする輩はほんとうにがんだ。
その苦労は数年後無駄に終わる。動的言語は数年ごとにバージョンアップを繰り返し、今書いているものは
すべて動かなくなる。2007年頃に意図的に起こされた第一次Rubyブーム 1.7のRubyはもう動かない。
互換性の問題で起動できないし、サポート対象外だから脆弱性だらけ 今もRailsやNodejs 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が儲かる理由で脆弱性が多い動的言語を推奨するのは同じムジナだろう。
いや、まだ何者でもないし、僕の名前なんて誰も知らないだろうというか個人的には一生裏方のエンジニアで十分と思っているのだけど(だから匿名)、ただ単にこのタイトルかっこいーなーと思っただけだ。あと匿名である以上、この内容を信じるも信じないも読者の自由だ。
サンフランシスコベイエリアに来て2年半。まだそれだけしか経ってないのか。ずいぶん長い時間が経っているような気がする。普段のこちらの会社は事業売却でレイオフしたり転職したりパフォーマンス不足でクビになったりしない限りは至って毎日同じような天気で同じような生活リズムで働き続けているものだが、その割にずいぶんといろんなことがあった気がする。約5年勤めた巨大SIerを退職する決意をしたのがちょうど3年ほど前。いま自分がこのエリアで働いているというのが少し驚きだ。
退職するまでは仕事は忙しいながらもそれなりに充実していた。プロジェクトが変わるごとにいろんな人と出会いながらいろんなシステムを作った。出版系、公共系、銀行系、社内システム、ユーテリティ系、プロジェクト規模も数十人から数百人まで。他の会社ではなかなか出来ない経験をしていたと思う。でも、どこか自分のやりたいことと違っていて、年次が上がるごとに焦りも増しつつあった。
研究室で研究のプロトタイプのアプリケーションを書きまくっていた時は本当に楽しかった。研究の理論を考えるよりも手を動かしてコードを書いて思い通りにアプリを動かす方が楽しかった。仕事をするならプログラムを書く仕事をしたいと漠然と思っていた。それでもSIerに新卒で入社してすぐに転職しなかったのは、いろんなステークホルダーと調整して仕様を決めていったり、クライアントから隠れた要求を引き出すような仕事も実際に始めてみると楽しかったからだった。今でも自分の仕事の進め方はSIerでの5年間がベースになっているのは間違いなく、そしてそれはシリコンバレーであっても今のところ大きな武器になっていると感じる。ちなみに、SIerに入社したのは他に内定が無かったからだ。。
当時は20台後半。プログラミングを仕事にするにしても長く続けるなら将来的にはベイエリアで働くのが良かろう。ただ、いきなり現地の会社にビザサポート付きで採用してもらうのはほぼ不可能なので、語学学校→コミュニティカレッジ→インターン→現地採用というフローが遠回りながらも最も現実的なようだ。いずれにせよ、準備だけはしておかなければなるまい、ということで週末はとにかく盲目的にプログラミングの勉強を続けた。WiMaxを契約して家の近所の図書館に閉館までこもりそこが閉まるとWiFiが使えるからふね屋に移動し、という具合にラップトップを持ち運んでうろうろしていた(自宅では集中力が続かないタイプ)。iOSを触ったり、気になったオライリーの本を読んだり、蟻本を読んだりとにかく闇雲に色んな技術に触れていたが、最もよく触れていたのはJavaScriptだった気がする。仕事では業務系Webアプリケーションが多かったので、Web関連だとJavaScriptが良かろう。また「なぜ関数プログラミングは重要か」という論文をJavaScriptで写経してみて楽しかったとかそういった理由だ。当時はまさかこれほどNode.jsが使われるようになるとは思ってもみなかったし、当時読んでいた本の著者と同じ会社で働くことになるとは夢にも思わなかった。
でも、結果的にその努力が自分の身を助けることになった。偶然、ベイエリアの会社で日本人エンジニアがH1Bサポート付きのエンジニアの募集をしていたのだった。その時点では自分なんかがいきなり飛び込める世界ではないと思っていて、最初は自分のコードに何かしらアドバイスをもらえればいいと思ってメールを送ったのを覚えている。そこからダメもとで受けてみたところ、コーディングインタビューの手応えがわりと良くてオファーをもらうことができた。
その会社ではちょうど2年働かせてもらった。自分のような特にオープンソース活動もしておらず英語も上手くない日本人にチャンスを与えて本当にたくさんの経験をさせてくれ、人生でかけがえのない時間を過ごさせてもらい本当に感謝している。今は転職してそこそこ名の知れた会社でコンシューマ向けのWebサイトをJavaScriptで開発している。
こういったケースはすごい稀でたまたまめちゃくちゃ運が良くて今の自分があるんだろうけど、でも万に一つのチャンスを逃さないように努力を続けることはたぶん大事で、おそらくそれが無ければ転職することも不可能だっただろう。週末にプログラミングの勉強をするという習慣は今も続いている(むしろ東京よりも娯楽も友達も少ないこちらでは週末は他にやることがない)。勉強したいことリストの増える速度が完全に消化速度を上回っているのだけれど、何も勉強したくなくなった時がプログラミングを仕事にするのをやめるときなんだろうなと最近は思っている。
去年の今頃は「今年こそはすごいWebサービス作るぞ!!!!!!!!!!!」って意気込んでたのに
なんかもう今日が最終日。
ということでこの12月頭から何か作ろうと考えていて、丁度年末だからということで作った。
前にAmazonの購入金額合計を出すブックマークレットが流行ったけど、それとほぼ同じ。
Amazonの今までの合計金額と、書籍とかPCとかカテゴリごとの合計金額出してグラフにする。
年末だしTwitterで「2014年のKindle購入金額内訳は...でした」とか投稿すれば
みんなつられてアクセスするはず!宣伝しなくても勝手に大ブーム間違いなし!!!!!!!!
って思ってたけど
投稿してもだれもアクセスしてくれない。待っても待ってもアクセス0。
e?嘘でしょ???って思ったら
のはずだったけど今度はrobots.txt見に来るクソbotしかアクセスしてくれない。
虚しさ半端ない。
というかTwitterでURLつぶやくと即効でどこぞやのクローラー巡回してくるんですね。
構成自体はクライアント・サーバサイド共にjs。EC2上でnode.js。
D3.jsのグラフ画像がsvgだからどうにかしてpngにしないとTwitter投稿出来ないのが微妙に面倒だった
投稿時にクライアント側でbase64→canvas→pngにしても良かったけど
商品のカテゴリ取得するためにはProduct Advertising API使うしかなくて
redis上にキャッシュしておいたりwebsocketで適当に進捗伝えたりした。
今回得た経験値としては
あたり。
今年は残念ながら目標不達成だったけど、いい最終日の過ごし方になったと思う。
お疲れ様でした。
やってきた言語はPHP、Python、Rails、JavaScript、Node.JS、Objective-C、Javaあたりだろうか
やってきた言語はPHP、Python、Rails、JavaScript、Node.JS、Objective-C、Javaあたりだろうか。
23歳でWeb業界に入り6年目、ついに年収が1000万円を超えた。
他の高給な仕事に比べれば大した額では無いが、エンジニアとしてはブラックという程には悪くはない数字だと思っている。
目標を達成できた事は素直に嬉しいし、今のところ満足している。
大学卒業後は東京のベンチャー企業にエンジニアとして新卒で入社。
初年度の年収はわずか350万円だった。それを思えばここまで結構頑張ったと思う。
基本的にはずっとWeb畑を歩いてきたが、時代の移り変わりで今はiPhoneやAndroidも案件によっては書いている。
やってきた言語はPHP、Python、Rails、JavaScript、Node.JS、Objective-C、Javaあたりだろうか。
もともとコードを書くことは好きだったので、案件に応じてなんでもやった。
会社ではマネジメント業務をそろそろやれと打診されているが、まだ技術の現場にいたいので断っている。
6年目ともなると決まって難しい案件が回されてくるが、今のところは役職も無いヒラのエンジニアだ。
ITはブラックだとか、Webは薄給だとか、巷では色々と言われているが、ああいうのは殆ど嘘みたいな物だと思っている。
極端に酷いサンプルが、ゴシップ的に取り上げられているだけだろう。
慎ましやかに生きる分には、実際に業界にいる身としては今のところ悪くはない。