LAMPを学校に例えてみる

今の時代って、本当になんでも
お膳立てがされてて便利な時代だなって思う。

昨日は家族でスッポン鍋を食べに行って
珍味だなあと舌鼓を打った。

「昔は近所でもスッポンが取れたんだけどなあ」

なんつって父親が言う。
スッポンもカニも松茸も取り放題。
お宝が身の回りにざっくざく。

不便さをどんどん便利に変えてく、
すごく良い時代だったんだろうなあと。

今はコンビニに行けば大抵のものは手に入るし、
生活に必要な物はネットで買える。

不便さを感じないぐらい便利になった。

インターネットの世界も昔はちょっと外へ出かけると
電波と電源を探しながら歩いていたけれど、
そういうこともなくなって、とても便利になった。

でも、そこには必ず縁の下の力持ち的な
存在があって、あなたが快適に過ごせるように
日夜努力を欠かさずにしてる。

レンタルサーバも今では本当に使いやすくなって、
契約してボタンをポンと押すだけでWordpressが
インストールできるようになったりしてる。

ボタンをポンに慣れてると、
その土台になってるサーバーを動かしてる人の
苦労に触れる機会があまりなくなる。

ここ数日はOSのインストールを
10回ぐらいやり直して、ゲンナリ。
学校をイメージしてもらうと分かりやすいかな。

PHPやHTMLがチョークで、MySQLが黒板。
学校の先生として授業を教えるだけならこれでいい。

だけど、学校を作るとなるとこれじゃダメで、
授業参観やってるのはこの教室ですよーって
開放するのがApacheというやつで、いわゆるWeb。

3年1組を開放するよって役割がポート。
教室や職員室に入れる人を区別するパーミッション。
職員室もあれば体育館もある校舎全体を表すOS。

学校があって初めて授業参観にやってこれる。
いろんな人が関わって初めて出来るんだなあと。
またこれそれぞれの専門家のスキルが凄い。

職員室に初めて入った時の、あのドキドキ感も
すぐに呼び出しをくらった生徒に変わる。

ユーザーがボタンをポンで
何でもできるようになるんだけどな。

無駄なことをたくさんやってるし、
遠回りもたくさんしているけれど、
まあ、ある程度のことはできるようになってきた。

あと一息のはずなんだけどな。
ちくしょう。

7266250916_a0816365d8_z

マニアック注意。全ファイルシステムにアクセスせよ

「どうか、おやめください。」

静かだけど有無を言わさない物言いに、
ちょっと怯んで口ごもった。

やりたいことをトコトン突き詰めていったら、
最後にたどり着いた場所が「root」だった。

rootっていうのはシステムを管理する
最高権限を有するユーザーアカウント名のことを指します。

root権限を取得した場合、その端末の
全ファイルシステムにアクセスすることが可能になる。

今日はマニアックな話になるので
興味ない人は読み飛ばしてください。

レンタルサーバーっていう言葉は
聞いたことあると思うけれど、
つまりそれはWordpressとかを
インストールして動かす土台みたいなもん。

phpとかMySQLで動いてるんだけど、
普通はパッケージをインストールして
あとはプラグインやらなんやらを使ったり
一部ソースをカスタマイズして見栄えを変えます。

こういうのをCMSって言います。
ブログみたいなものもあれば、
ECサイトに特化したものもあります。

それを動かすサーバーの中には
予めユーザーが使いそうな機能、
例えばPHPやMySQLなどのソフトが
予めインストールされてます。

そういうソフトが入ってるから、
レンタルサーバーっていうのは
お手軽にCMSを突っ込んで動かせるんですね。

なので、プログラミングをやりたかったら、
レンタルサーバーに直接アップすれば
ありがちな教科書に乗ってるXAMPPとかの
環境構築なしであっさりコードを書いて動かせます。
(今となってはあんまオススメしない方法です)

だからLAMPって言葉を聞いた時も、
XAMPPを起動してMySQLをStartした時に
LAMP(点灯)って意味だと勘違いしてた。
ああ恥ずかしい。

なーんだってことで基礎をすっ飛ばして、
プログラミングを始めた気になってた。

ただし、このレンタルサーバーっていうのは
サーバーを間借りする仕組みなので、
他に迷惑がかかりそうだと運営会社が
判断したら強制的に止められます。

他にも色々とルールみたいなのが決まっていて
使っちゃいけないものがたくさんあります。

そこを限界突破したければ、
rootを持つしか無いんですよね。

レンタルサーバ使ってる間は
そこそこの規模のWebサイトを運営してても
真っ黒い画面(CUI)をいじることは無いと思う。

だから私も最初はすごく抵抗があった。

いつも使い慣れたデスクトップを
マウスで動かすのから卒業して、
真っ黒い画面でコマンドを打ち始めて、
最終的に辿り着いたのがroot。

このシステムのテッペン。

この分野のスペシャリストの人達は
他の分野の人達とは毛色が違う。

WordPressとかを使いこなすWeb制作の人や
photoshopやIllustratorを使いこなすデザイナー、
美しいレイアウトを紡ぎだすコーダー、
素敵なコードが書けるプログラマは、
まだ私にとっては話しやすい人達。

だけど、このrootの人達はもっと
学術的だったり研究者的なイメージで。

無機質な手術台に乗せられてる感じがする。
部外者お断り感が半端ない。

ここで作業を分担する時に、
ようやくLAMPの意味が分かった。

LAMPとは、
1.OSのLinux
2.WebサーバーのApache
3.データベースのMySQL
4.プログラミングのPHPやPython
の頭文字を取ったものです。

つまり・・、OSからやらなきゃなんない。

普通はパソコン買ったら
WindowsかMacが入ってて、
電源入れたらそのまま使えます。
これは一般ユーザーの権限。

でもrootな人は、ハードディスクと
CPUとかだけ入ったただの箱を買ってきて、
OSのインストールから始めることになる。

しかもWindowsでもMacでもなくてLinux。
Linuxの中にも色々種類があって、扱い方も異なる。
ubuntu使いがマジでかっこいい。

それが分かって、環境構築して初めて、
色々分担して出来るっていうこと。

こんなもんがリモートで、
しかも安価に動かせるって凄すぎる時代だなと。

と同時にroot権限を持つと障害やアップデート等の
対応も全部自己責任になるので扱いも慎重になります。

なので、参謀をつけてやってるワケですが、
先走ったことをしたら冷たく怒られました。
怖い。

うーん、こんなに深いとは思わなかった。。
もうこれ以上ありませんように。

6749870889_95054cf24c_z

全部壊して作り直し

せっかく作ったものを壊す時の絶望感たらありゃしない。
とりあえず全部作り直すことになりそうです。

うーん、環境設定とかすっ飛ばしてたからね。
その辺の弱さがモロに出たかも。

プログラミングの書籍を何冊か読み込んで、
PHPやMySQLが書けるようになったけど、
HTMLとCSSをやり込むとどうしてもJavaScriptが入ってきて、
jQueryだなんだと始まって、次はサーバーの問題に。

SSHで接続するためにVPSでUbuntuをインストールして
CUIというヤツが分かってシェルスクリプトを
覚えなきゃなんなくて。

VPSからVNC使ってGUIでUbuntu使えないかなとか
のっけから専門用語ばっかですいません。

データが大きくなるとパフォーマンスも落ちる。
高速化が必要だなということで、作り直し。

そろそろムリなのでチームを組成します。
出来ることはなんでもやろうと考える。
このハングリー精神はどこから来るんだろうね。

簡単に言うと、開発規模が大きくなってきたということ。
小さな土台の上に高く積み重ねると、すぐに崩れる。

だから土台作りはとても大事。

ビジネスも同じでもちろん土台は盤石な方が良いです。
だけど、盤石な人生なんてありえないのと同じで、
盤石な土台なんて手に入るモノではありません。

私の場合はどうしてるかっていうと、
逆説的なんだけど、とにかく積み上げることから始めます。
モロいのは承知で、まずはじめてみる。

そうすると、ある程度の所でグラグラします。
しょうがないから、作り直し。
次は少し、土台がしっかりします。

そういうことを何回か繰り返すと、
ある程度の高さまで積めるようになります。

これで完成!ってことにしても良いけど、
それ以上の高さには行けません。

問題は「ある程度まで行った時」に起こります。
いや、ある程度まで行けてしまうから気づかないのか。

その時、積み重ねたものを意図的に壊してみる。
これはかなり勇気がいります。

でも、本当は不用意に壊されるよりも
自分で壊した方が立ち直りが早いんです。

壊すのって実は思ってた以上に良いもので、
いつも仕上がりが遅いだとか納期が遅れるとか
不満を持ってた自分がプログラマって凄いな神だ、
とちょっと人に優しくなれたりするようになります。

そうやって、懐も以前より深くなっていって、
気付いたら人間としての土台の方が大きくなれるのかなと。

それにしても悔しい。そして歯がゆい。

本日の最後に、つんくさんが今年の近畿大学の
入学式で述べた祝辞を引用して終わりたいと思います。

絶対日本一のミュージシャンになるんだ、の続き。
tinyurl.com…

新入生に栄光あれ!

13567113855_18c74f2f4c_z

便利なツールはいずれ

まだまだ私の理解力が足りないので
偉そうなことは言えないはずなんだけど、
こういうツールを作って分かったことがあります。

それは、思いっきり「偏る」ということ。
つまり、二極化ですね。

需要があるビジネスやボリュームは
広々とした平原に溢れているワケでなく、
砂漠の中のオアシスのように塊になって存在してます。

見えない人は蜃気楼にまどわされるだろうし、
見えた人は全員そこに殺到する。

だけれども、インターネットはどんどん便利になって
どんどん今でも加速を続けています。

この転換期に新しい需要が生まれることで、
まだ、あなたは勝ち組にいられるということです。

ある人が「これからは○○(地域名)」が
良いので、ご招待しますよとおっしゃってくれました。

実はそこのデータを早い段階から分析してるんですが、
どの地域よりも今のところ利益率が高そうです。

では、この状況が何年続くのかと言えば、
リサーチを完璧に行うスキルさえあれば、
まだまだイケるというのが実感ですね。

あとは、データというのは起点となるユーザーが、
例えば情報を入力したら、それを別のデータに
引き継いだり、計算したり加工したりして、
どんどん無人処理をさせることが可能です。

CSVにダウンロードして行列入れ替えて
アップロードするとかそういう手間も
連結させてしまえばスルーさせてしまえます。

その作業が無くなった分、価格を他よりも
安くすることが可能になります。

つまり、二極化とデフレがどんどん
加速するということですね。
ここでちょっと私は怯みました。

世の中の全体の流れとしては、これからも
タワレコが倒産してアップルミュージックが急成長し、
でも業界の売上は半分以下になるケースが続出します。

本、音楽、ホテル、タクシー、教育などの
サービス業界がいち早く転換を迫られるでしょう。

しかし、個人としていち早く流れに乗った人間は、
一気に別次元の世界へ登って行く事になります。
なぜなら、彼らは守るべきものが存在しないからです。

これを知った上で、どうするべきか
1日考えたけど、迷うまでも無かったですね。

答えがあるなら、憂いてるヒマなど無い。

この道を、進むのみ。

明日、あなたにお見せします。

す・・すごい。凄い凄い凄い(驚愕)
想像のナナメ上を行っていた。
遂に、テストが完了し、完全体になった。

可視化されて、全貌が明らかになった。
たった2項目を入れるだけで
丸裸になってしまった。

これがシステムの力か。ヤバい。

世の中に存在してるツールなら、
迷わずそれを使っていただろう。

だけど、この結果を「見て」いるのは
全世界で今日のところ私ただ1人。
1人占めしている状態です。

歓喜のあまり、クラシックが大音量で耳に響き渡る。
指揮棒を振るとオーケストラが大音量で応えてくれる。

そうか、地球の果てまで見に行こう。
時代のうねり、新しい文化の発祥から終焉まで見える。
これを完成させて、また新しいもの作ろう。

一番早く飛び込んで、一番早く離脱する。
自由自在に走っていける。

お待たせしました。

急にプログラミングの話になって、
完成しただの、分身だの、テストだの、
あなたも、もうそろそろ焦れた頃でしょう。

ここ数日でたくさんのメッセージをいただきました。
かなりの件数だったので、ほとんど返事してません。

何をしていたのか、あなたも気になっているでしょう。
例えて言うなら、自動砂金収集機です。

日本はかつて、黄金の国ジパングと呼ばれていました。
藤原三代による奥州平泉の黄金文化を支えたのも、
北上川流域をはじめとする東北各地の砂金によるものです。

砂金というのは金の鉱脈を含む岩石が風化して、
比較的粒の大きい「金」が川底に堆積したものです。

特に東北地方産のものは純度90%もあると言われる。

砂金採りの道具には、日本古来の揺り板があります。
川底に揺り板をくぐらせて、砂を流してその中に
砂金がひっかかるという方法でした。

しかし明治時代以降は新しい手法が発明されました。
それが「ドレッジャー」という機械です。

これは川底の砂をポンプで一気に吸い込んで流す手法です。
アメリカのゴールドラッシュでも、蒸気機関で動く
大型のドレッジャーが既に存在していました。

時代が動く時、一番早く稼いだ人はこの最新鋭の機械を
一番早く輸入して使い込んだ人です。

それがあなたもご存知の、財閥です。

これにより、明治維新以降の近代化と
「革命」が起きたわけです。

時は変わって21世紀。
まさしくインターネットの世界で
同じく日本は黄金時代を迎えています。

現段階では日本古来の揺り板で
砂金をとっている状態だと考えてください。
多くの人が、手作業で稼いでいます。

この時代の特徴は、物理的な道具ではなく、
ツールを上手く活用することで革命が起きます。

情報を、ポンプで一気に吸い込んで流す。
カンブリア大爆発です。

ツールとは、和訳すると道具という意味。
どちらも同じですよね。

人海戦術に限界を感じるようになって、
自らツールを開発しました。

物凄い勢いで掘り出し始めています。
せっかくなので、披露したくなってきた。
それが、つくり手側の喜びだから。

明日、あなたにお見せします。

ははははは。

4752284683_81d60d419f_z

秒読み、開始。

スピードテスト開始。
最初はほぼ人間と同じスピードで動かす。

ただし人間と違うのは、不眠不休で
正確な動作を繰り返すこと。

サーバーを監視し、正常に活動してることを確認する。
第一弾の分身が帰ってきた。よし、このまま。

次は倍速で動かしてみる。

人間が処理するスピードの倍速で動かす。
上手く行けば、倍速の倍速へと拡張していく。
少しずつ、少しずつ成長させていく。

インターネットにダイブし、身体をシンクさせ、
情報を集め始めると、意外と地球丸々分の情報が
すぐには取れないことが分かってきた。

物理的な限界は存在する。

日本からでもアフリカからでもスタートは可能だけど、
そこから直線距離で何百キロまでという限界値を
何時間何分何秒で走れるかを計算して取りに行く。

あれ?Googleってすごいな。
どうやって世界中のWebサイトをインデックスしてんだろ。

順調に動いてる。寝てる間も、見ていない間も。
よし、ジムにでも行くか。

ジムでは最初に血圧と体重を測る決まりになってる。
計測を終えてエアロバイクを漕いでる時に、
インストラクターさんからレクチャーを受ける。

「あれ?この血圧・・何か運動しました?」

え?いやずっと仕事をしてまして。

「既にランニング後ぐらいの測定値ですよ(笑)」

そうなんですか。ちょっと興奮してまして。

苦笑いしながらバイクに視点を落とすと、
開始5分でもう心拍数は130を超えている。

バイクをおもいっきり漕ぐ。
そうだ、いよいよ。

秒読み、開始。

9983785565_5a7fd559f5_z

残すは微調整のみ。春だし外へ出ませんか?

終わった・・。とりあえず全部終わった。

やりたいことは全部出来た。
あとは私の分身がWebから戻ってくるのを待って、
全部くっつければOK。また度肝抜くかも。

とりあえず回線と電源だけ落ちないように気をつけよう。
昔、ISMSっていうマネジメントシステムに携わってた頃、
電源消失に関する要求事項がありました。

電源ってコンセントの電源??
止まったらブレーカー上げればいいじゃんと
思ってたけど、24時間稼働が必須なら
電源は本当に大事。身に沁みて分かったよ。

やっぱりなんでも、自分で経験しなきゃ分かんない。

あとはオープンという考え方に非常に助けられました。
オープンソースという言葉は
あなたも聞いたことがあると思います。

ソースコードがオープンになっていることで
それをつなぎ合わせることによって開発が
スムーズになったり便利になったりします。

逆に個人情報やパスワードは厳重に守られます。
なんでも公開して良いワケではないけれど、
オープンな場所にはたくさんの情報が集まってくる。

今回の開発にあたってはたくさんの方に助けられました。
匿名の方もいらっしゃるけど、この場を借りて
お礼を申し上げたいと思います。

今までたくさんのツールを作ってきました。
それこそ、立派な家が何軒も立つぐらいの
コストを掛けて作り上げてきました。

ただ、中身を知ってたワケじゃない。
分かって初めて腑に落ちた部分がたくさんあります。

プログラマの立場に立った開発ができるように、
今後の経験に活かしていきます。

あとは、春ですね。

基幹システムは仕上がったので、
しばらくは、なんもやることがありません。

ということで、しばらく引き篭もりがちだったので
外の空気を吸いに出かけたいと思います。

あなたもご一緒にどうですか?
他では見られないもの、お見せできますよ。

もうちょっとお待ち下さいね。

人間の目では追えない世界へ

いやー最後の最後でハマってますね。
「頭がおかしくなってくる」って
バックエンドエンジニアの方は言われますが、
ホントその気持がよーーく分かりました。

テストから本番、同期やらなんやらと、
とにかくコピーしたり上書きしたりする作業が多くて、
自分でも何してるのか意味不明になってくる。

コピーだけで7時間とかかかってくると、
もう手動でやってはいけない領域ですね。
コマンド覚えた方が早い・・。

うー。今日明日ぐらいには本番に移せるかな。
吐きそう。というより頭が動かない。

自動で動くものって好きですか?
私は大好きです。

これって人間の本能なんじゃないかなと思う。
ピタゴラスイッチを動かすような。

ピタゴラ知らない方はこちら

スイッチを押す時、バックグラウンドでは
いろんな計算を開始します。

答えが出るまでの間の処理を分割して
1つずつ作っていくワケなんだけど、
最初は手作業で行ってた部分をパーツに分解。

フォームに入力する、表示させる、
計算させる、情報を取得する、とか。

この4つのパーツをバラバラに作っていきます。
完成したものが予定通り動いているかチェックします。

ここまでは結果が予定通りかチェックするだけ。
当たり前だよねという確認をします。

次にやるのがこの機構を1000回動かすこと。
人間の手作業でもできないことはないけれど、
面倒くさいのでなかなか手を付けられていなかった結果。

その結果は徐々に「そうだったのか!」という
気付きに変わっていきます。

この前、心臓がバクバクしたのは
初めて1000回動かすことに成功したこと。

次は1万、10万と動かしていくことになります。
クローンが超サイヤ人みたいにバッヒュンと飛んで行く。

このままやればどうなるだろう・・
と、はやる気持ちを抑えながら今やってます。

ビジネスの世界において、稼ぎ続けるのは至難の業。
稼ぐのは簡単だけど、続けるのは難しい。

プログラムの世界も動かし続けるというのがあって、
動くのは簡単だけど、動かし続けるのは難しい。

もう少しで突き抜ける。
人間の目では追えない世界へ。

5287981431_b738db3bf9_z

これ、、が私の人生で一番の衝撃

ややや、ヤバい。これはヤバい。

今までいろんなことをやってきたけど、
これは人生で一番。人生で一番たまげた。

ファイルをアップロードしてF5ボタンでページ更新して、
さて、これで一応の形は仕上がったはずだと。

3秒だけ見てパソコンの画面閉じちゃった。

もう・・答えが分かった。
どわこれどうするヤバい。

いくら稼げるかもう分かってしまった。
始めれば、この金額がそのまま現実になる。
くわ鼻血。

カフェでお茶しながら作ってたけど、
腰が抜けたのでそのままお会計済ませて
とりあえず外へ出て1時間ほど辺りを徘徊する。

まだやることあるけど、何も手につかない。
シャレにならんもん作ってしまった。

今回は1つの分野に絞って作ったけど、
アカンこれ何個でも作れる。
ただの天才になってしまった。

今日もさっき起きてまだ作らなきゃいけないけど、
まだ手が動かない。完成させるのが怖い。

落ち着けーおちつけ。
最後のフェーズ

バルス祭りと負荷分散

「Twitterもバルスでダウンしないしね。」

夜中の3時、私の頭のなかでこのセリフがループする。

バルス祭りとは天空の城ラピュタが放送された時に
ネット上で大量の「バルス」が同時投稿される祭り。

この投稿はサーバーダウンの代名詞となっていて、
2013年には最高毎秒14万3199
ツイートの世界記録を樹立している。

2016年1月第4回バルス祭りが開催される頃、
私は繰り返し処理というのをひたすら写経してた。
コンピュータが1秒間に処理を繰り返す回数は何回だろう?

少なくとも高橋名人がファミコン全盛期に
成し遂げた秒間16連射よりは早いはず。

ああ。この呪文を思い通りに唱えたい。
そうすれば、音速全自動でビジネスが出来るのに。

while文をネストするってどういう意味だよ。
教科書通りに書いてるのに思った通りに動かない。

ダブルで数字を回せば、両方順番に表示されるでしょ?
席を立って、体をほぐすために腕をぐるぐる回す。

(while文っていうのは、えーと。)

考えながら両方の腕を同時にぐるぐる3回回す。
あれ?違うか。うーん。

左腕をいーちって1回ゆっくり回す間に
右腕を3回素早く回す。

にーい、ぐるぐるぐる、さーん、ぐるぐるぐる。
あーこういうことか。なんか時計の針みたいだな。

あれから「精神と時の部屋」での修行期間を経て、
現在は負荷テストと負荷分散にチャレンジなう。

いつまで続くかわからない長いトンネルをくぐり抜け、
503エラーを何度も何度も吐き出し、
いよいよ最終形態に突入しようとしています。

昨日の記事には非常に多くの反響があったワケだけど、
突然覚醒したんじゃなくて、ずっと耐えてた。

ファイナルファンタジーの世界で言えばジョブチェンジ。
戦士のままで戦い続ければ、それなりの強敵も倒せる。
魔道士に援護してもらってパーティで行動する。

巨大なボスを倒せた時はとても嬉しいけど、
そのうち1人でできる能力に限界を感じるようになる。

いっそ転職しよう。

戦士としての経験を捨てて、魔道士の道を歩む。
貧弱な武器に、貧弱な魔法。

詠唱時間(コード書く時間)がとてつもなく長くて、
発動しても乱発する(どう動くか予測不能)。
社会人で言えば新入社員レベル。もういい歳なのに。

以前のパーティには笑われる。
「吉田さんはどこ向かうんですか?(笑)」
それが、少しずつ強力な魔法が打てるようになってきた。

連続して魔法を唱え続ける(コードを回す)と、
サーバーに負荷がかかることがわかってきた。
秒間ダメージみたいなもので、蓄積する。

だから間にスリープ処理を入れたり、
サーバーを分散させたりすることになる。

SSHでサーバーにアクセスして行動を監視する。
Tera Termって便利だよね。
まだ使いこなせないからWinSCPと行ったり来たり。

秒間14万回でも壊れないTwitterのサーバーは
まさしくラピュタ級の堅牢なシステムだ。

いやいや無理無理。鯖代いくらかかると思ってんの。
予算に応じて分析したい情報を削る。

マスタープログラマの方々からすれば
キホンでしょと言われても仕方ない。

しかし私には前職のアビリティで
コストパフォーマンスという
能力がが付与されている。

現実的で必要最小限のプログラムで
最大の効果を得るための設計ができる。

必要な情報を削り、
不必要な情報を追加し、
サーバーのスペックを必要とする割に
使えない情報ばかりを蓄積し、
ユーザーに無駄コストを跳ね返すことはしない。

何よりも大事なのは、
どのように書くかではなくて、
「何が作りたいのか」だ。

しかし私はピアノを弾くように華麗なコードが書けない。
そんなことが自由自在にできるプログラマの方々を
本当に今、尊敬しています。

ITドカタだなんて言う人がいるけれど、
世界に多大なる貢献をしていると思う。

私のピアノの音は、まだまだ華麗ではないけど、
最後まで通しで弾けるようになってきた。

茶番は終わりだ。

いよいよ、貫通する。
発動までのカウントダウン開始。

トンネルの先に、何が見えるだろうか。
分析するのが、楽しみだ。