【G’s Academy LABコース体験記】32・33日目

今日、PHP選手権(開発の総合コンテスト)の発表だった。

昨日は流石にブログを書く余裕がなかったため、
今日にまとめておく。
結果から言うと、
純粋な入賞こそできなかったものの、
主席講師の山崎先生の賞を獲ることができた。
正直言って、かなり嬉しかった。
前回フロントエンドのみのJS選手権のときは、
企画に時間を掛け過ぎて自滅してしまった。
結果的に、技術力が伸びないという悲劇が起きた。
だが、今回は同じ轍を踏まないように、
企画は前のままで、とにかく作ることにした。
それが功を奏して、
PHPフレームワークのLaravelは使うことに抵抗がないぐらいにはなれた。
フレームワークは早めに使えという先輩の助言は正しかったように思う。
今日からはチーム開発だ。
僕は協調性がないので、
正直不安しかないが、
これから起業するならそれは避けて通れない。
チーム開発のイロハと技術と、
両方学んでいきたい。

【G’s Academy LABコース体験記】31日目

先週すっぽり抜けてしまっていたので一つ近況をお伝えすると、
実は、現在個人開発の総仕上げとも言える、PHP選手権の真っ最中だ。

プロダクトの発表は明後日。

前回のJS選手権のときは、
ビジネスとしての企画にこだわりすぎた結果、
時間がなくなってしまうという問題があった。

今回はその反省を踏まえ、
・企画にこだわらないこと
・プロダクトをひと通り作ること
の二点に重点を置くことにした。

プロダクトとしては、前回と同じ、
書籍のシェアサービスを作る。

ぶっちゃけ、実際のサービスのフローとは、
結構整合性の取れていないものになりそうだが、
ものとしてはよくありそうな構造になるため、
技術的な勉強にはなると踏んでいる。

ちなみに、LaravelというPHPのフレームワークを導入している。

フレームワークの仕組みに慣れるのに時間がかかっていて、
カスタマイズに手間取っているが、早期にフレームワークに触れたのは正解だったと感じている。

それではまた明日。

【G’s Academy LABコース体験記】30日目

前回の更新から随分と期間が空いてしまった。
この一週間ぐらいはPHPとの格闘で、結構忙しかった。

とりあえず最新分を更新する。

今日はアルゴリズム入門ということで、
前からずっと触ってみたかったPythonを使ってアルゴリズムを考える回だった。
講師は吉崎さんという方。

講義内容

Pythonの基本的な文法をひと通りやって、
幾つかの簡単な問題を解くということをやった。

Pythonの感想

pythonを使ってみて感じたことだが、
やはりコードがキレイになることと、
値操作のライブラリが充実していることだ。

まだ基本的な操作しかしていないのに、
配列の抜き出しやソートがJSよりも更に簡単にできて、
かなり好きになった。

個人的に一番面白かったのは、
素数判定でエラトステネスの篩を実装して、
その実行速度が愚直な実装に比べて数百倍以上違ったことだ。

学生の頃に数値解析なんかで勉強したアルゴリズムは、
全てプログラムを使わずにやっていて、
何の役に立つのか全くわからなかったけれど、
こうやって実践で使ってみるとその良さが分かる。

多分、そのうち二分木探索とかバブルソートとか、
基本的なアルゴリズムをやるのだろうけれど、
実行速度の比較が楽しみだ。

Pythonこれからやろうかな

スキマ時間にプラスアルファで
ここの問題をいくつかピックアップしてやってみた。

Pythonの特性からか、
ユークリッドの互除法とか、円周率とか、
中学校で習うちょっと応用寄りの内容が多い。

僕はやっぱりパズルっぽいことが好きみたいで、
この辺の問題を解いているだけで楽しい。

数学が好きな人には分かるだろうが、
応用問題をうんうん唸って考えている感じだ。

今はPHPのフレームワークをやるって決めたのに、
あまりに魅力的な学習コンテンツが目の前に現れてちょっと困った。

僕が思考する術を完全に失った話

僕は世の中のことは、

基本的に物理現象として科学的な説明がつくと思っていた。
だが、それが僕の傲慢だということを思い知らされるすごい出来事があった。
僕を謙虚にさせてくれたのは、
意外にも「手品」だった。
僕に仕事をくれている知人に、
とあるプロのマジシャンの経営するバーに連れて行ってもらった。
僕はそこで文字通り「魔法」のような現象を目の当たりにした。
もちろん凄いし楽しいのだが、
一番の感想は、
「打ちのめされた」だった。
目の前で起きる現象が、
何一つ全く説明出来ないのだ。
僕は物理に関して専門家ではないけれど、
機械工学の修士課程を修了するぐらいは物理は分かっている。
それですら、
「どうやっているか分からないけど、
多分これをこうしているのだろう」、
という見当すらつかない。
僕が一番あり得ないと思った手品が、
僕が好きな食べ物、あるいは商品名を頭の中で思い浮かべて、
その名前を文字通り当てるというマジックだった。
僕が思い浮かべたのは、
「辛」というカップラーメンだった。
僕が指示をされたのは、
・その食べ物を食べているときの顔をすること
・その食べ物の文字を思い浮かべること
のたった二つだ。
彼はそれだけで、「辛」を当てた。
もはや、僕の想像を絶するレベルだった。
物理的な現象なら、
まだ高等なテクニックでありえるかもしれない。
だが、複雑な人間の心の中の映像を読み取るなんて、
僕の常識ではあり得ないことだった。
しかも、彼の一番凄いのは、
自分の認識していないものを当てられることだ。
今回の「辛」という漢字は日本人なら知っているものだ。
だが、彼は韓国語が分からないにも関わらず、
韓国人のお客さんの想像したハングルの文字列を当てたのだそうだ。
絶対にあり得ないと信じていたことが、
自分の目の前で起きていた。
今まで僕が説明できると思っていた現象は、
全部僕の思い込みだったんじゃないか。
そう思うと、目の前で起きている現象は、
全て自分の思い込みでしかなく、
本当は全く異なることが真実として隠れているんじゃないかと思えてくる。
自分が今目の前で握っている、
スマホの感触すら幻想かもしれない。
一体、これから何を手掛かりに思考すればいいのだろうか。
自分の認識は全て不確かなものだとすれば、
何を信じればいいのだろうか。
世の中の説明なんて簡単だと思い込んでいた僕は、
見事に自分の傲慢さを思い知らされたのだった。

【G’s Academy LABコース体験記】24日目

一昨日水曜日の分。

例によって水曜日はもくもく会の日だ。
(自分でやることを決めてひたすらそれを黙々と進める)

今日は前日に引き続き、PHPの欠席分を勉強し、
木曜日提出の課題をやった。

課題はサーバーサイドをちゃんと動かしたフォームを用いた登録。

僕は基本的なコードを、理解した上で何も見ないで書けるようになることに時間を使うことにした。

授業の説明では、コードの使い回しをするときにコピペをしていて、
先生もそれでいいと言っているのだが、
僕はそれはある程度書けるレベルの人がやっていいことだと思う。

クラスメートとも話した事があるが、
新しい技術を学んだときに、
「どうやって動いているか分からないけれど、
とりあえず動いているからOK」
ということはやりたくないし、
やるべきじゃないと思っている。

何の技術も身につかないからだ。

ものごとを深く理解するとは、
その対象物の存在意義や原理原則から理解することが不可欠だ。

じゃないと、対象物の相対的な位置関係がわからず、
他の選択肢との比較が出来ない。

より適切な選択肢を選ぶためには、
こうしたプロセスが必要だ。

PHPを始めてまだ時間が浅い。

目の前の課題の成果で見栄を張ることに囚われず、
ちゃんと自分のゴールに向かって進めていきたい。

【G’s Academy LABコース体験記】23日目

昨日火曜日の分。

今回は久しぶりに、
あんまりプログラミングが関係のない、
ちょっと個人的な内容になる。

午前中は、とあるITベンチャーの社長・役員の方と、
事業提携的な話をしていたため欠席。

午後は午前中の講義の内容を自習していた。
内容はMySQLの基本的な操作だった。

午前中のアポイントでの出来事について今日は書く。

とってもありがたいことに、
なぜか何の実績もスキルもない僕のことを面白いと買ってくださり、
僕が事業を起こすのを、色んな形でサポートしてくださるとのことが決まった。

詳細は全く詰まっていないが、
基本的には僕達にとっては非常にありがたい話だ。

今後は、事業アイディアと、細かい体制を詰めていく予定。
(無論、共同創業者の友人と相談しながら進める)

その中で、社長の方とお話していて、
どうしても気になって聞いたことがあった。

それは、
「なぜ、実績もスキルも何もない僕に期待してくださるのですか?」
ということだった。

正直、理屈に合わない。

僕自身は、自分のことは、
特別駄目だとは思わないけれど、
別に何かに秀でているとも全く思わない。

僕は何事においても、
平均以上にはそこそこ出来るが、
そこから先には行けない。

人生で何をやっても、本当にずっとそうだった。

超平均型の人間なのだ。

強いて秀でている部分を挙げるなら、
何事にもある程度興味が持てることだろうか。

そんな僕は、少なくとも大企業では、
基本的にゴミみたいな評価しか受けたことがなかった。

そんな自分になぜ期待をするのか、分からない。

だが、彼は意外な答えを持っていた。

「リバースエンジニアくんみたいな、
ビジネスとテクノロジー両方に理解があるタイプは、全体を俯瞰できる。
だが、こういうタイプは少ない。」

なるほど。

確かに僕は世界を構造的に眺めることが人より出来る。

これは、浅くてもいろんな領域の知識を、
まんべんなく持っているから出来ることかもしれない。

それで、このタイプが少ない理由は、
「ビジネスが好きな人と、テクノロジーが好きな人の嗜好性が異なるからじゃないかな」
だそう。

確かに。

僕にとっては両方は「構造」という共通点から、
どっちも分析・実験対象として面白いもので、大きな違いは何もなかったが、
一般的には結構別モノなのかもしれない。

更に、最後にとても嬉しい一言をもらった。

「いろんな人を見てきたけれど、
リバースエンジニアくんは成功するタイプだ。
見れば分かる。」

こんな風に、自分が評価されたのは初めてだった。

成功するかどうかは当然これからの僕次第だから、
まだ分からないけれど、
少なくとも彼が僕に期待してくれていることは明確だ。

その一方、僕は今まで、
自分のこうした性質を評価されたことはなかった。

一社目では、僕は先輩にこんなことを言われた。

「お前何もスキルないでしょ?
他の人と比べて出来るのって、
ちょっとプログラミング分かるぐらいじゃん」

二社目でも、似たようなことを言われた。

「何もスキルないから、このままじゃどこにも行けないよ」

僕の平均的な性質は、今までこういう評価だった。

自分では、掛け算をすれば希少価値は高まるとは理屈では分かっていたけれど、
結局何かに秀でられない自分に強いコンプレックスを持っていたし、
どこか自信を持ちきれなかった部分がある。

その意味で、僕は今回の彼の発言で、予感は確信に変わった。

自分は平均的な資質と付き合いながらやっていける。

他人に言われて自信が持てるようでは、
セルフコントロールという意味では三流だが、
それでも、やはり自分がすごいと思った人から評価されるというのは自信につながる。

評価してもらえたことを素直に喜びつつも、
決して今の自分に満足することなく、
引き続きスキルを磨いていこうと思う。

【G’s Academy LABコース体験記】22日目

この前の金曜日の分。

インターネット概論というタイトルのもと、
Webがなぜ遅いのかという話と、
その問題解決としてのnode.jsの話を少し。
講師は、菅原のびすけさん。
まずは通信のざっくりとした性質から。
http通信にもバージョンがあり、現在2.0まで出ているが、
Facebookなどの一部のサービスでしか未だに使われていない。

1.1というよく使われている規格は、
もう15年以上も前に決まった規格であり、
随分時代遅れなのだそうだ。

2.0になって進化した部分は以下の通り。
・通信の基盤のようなものを繋ぎっぱなしにすることで、都度接続していた従来よりも早くなる。
・同時に複数の通信が行える。
・表示させるコンテンツの順序をコントロールできる。

(もしかしたら抜け漏れがあるかも。)

特に重要なのは、体感通信速度の向上。

複数の通信が出来るから早いのは当然だが、
それ以上に表示するコンテンツの順番を、
ユーザーにとって重要な順番に変えることで体感速度が大きく変わることだ。

なるほど。

後は、Node.jsの出現の簡単な背景。

この辺は長くなるし、来週(今週)もまた触れそうなので割愛。

フリーランスの仕事が落ち着いたので、そろそろ本気出す。

【G’s Academy LABコース体験記】21日目

JS選手権で一旦フロントエンドは終了。

PHPを学習し始め、サーバーサイドに触れる。

元Googleのエンジニアの知人がPHPをあまりいいように言わないので、
正直ネガティブな印象を持っているが、
意見を言っていいのは、自分である程度使えるようになってからだ。

そう思い直し、とりあえずPHPの勉強を始める。

来週の火曜日までに、サーバーサイドの基礎、
アンケートフォームの作成が課題だ。

僕が最近気にしているのは、
卒業時にちゃんとGoogleに入社できるレベルになれるかどうかだ。

僕は起業するので、全然関係のない話だが、
レベルとしてそれぐらいになっていないとまずいと思っている。

なぜなら、サンフランシスコのHack Reactorでは、
卒業生がGoogleやFacebookに入社しているからだ。

彼らは三ヶ月しか勉強しないので、
六ヶ月も勉強する僕が入れるレベルに到達していなかったら、
それは相当問題だろう。

世界で使われるプロダクトを作る人間が、
そんなことすら出来なかったんじゃ、お話にならない。

いやいや、Hack Reactorの卒業生で、Googleとかに入れるのは一部だし、
もともと数学とかComputer Scienceとかを専攻していた生徒だ、という話もある。

だが、僕は機械工学専攻で、数学も曲がりなりにも勉強していたし、
電子回路も勉強していれば、C言語だってやっていた。
すっかり忘れてしまったけれど、コンピュータのハードウェア的な仕組みも勉強したことになっている。

しかも、英語じゃなくて、僕の思惑通り母国語で勉強している。

言い訳が一切できない状況なのだ。

これで彼らのレベルに到達していなかったら、
僕は一体何なのだろう。

ただ働かずにサボっているだけじゃないか。

五ヶ月後に「ああ、僕はサボっていたんだな」なんて思うことがないよう、
改めて残りの期間の使い方を、ちゃんと目的立脚で考え直そうと思う。

【G’s Academy LABコース体験記】20日目

ちょっと今回は最近の心境を整理する目的で徒然と。

JS選手権の発表だった。

僕が作ったプロダクトはこれだ。

Shelf Share
(スマホの画面サイズ推奨。でもスマホで見ても綺麗じゃないかも)

名前通り、書籍のシェアサービスだ。

僕の理解では、シェアサービスが成立するのは、
・稼働率が低い
・他人と共有することに抵抗がない
という条件が必要だが、
書籍はこれに当てはまる。

周りの反応も悪くなかった。

個人的には、今回の発表に向けて、
やりきることができなかったととても反省している。

自分の中で何がいけなかったのか、と思ったときに、
クラスメートに言われた一言が脳裏をよぎった。

「リバースエンジニアくんって、なんでもスマートにこなすよね。」

…これだ。

この言葉は、僕が中学二年のときに、
担任の先生に言われた言葉と全く同じだ。

クラスメートの方の真意は分からないが、
先生に言われた方の意味は今でも覚えている。

「本気出してないよね」

という意味だった。

当時は、本気を出さないでも割りといい成績を出せるというのは、
ただの褒め言葉だと思っていたのだが、そういう意味ではなかった。

言語化が非常に難しいのだが、
確かにこの一ヶ月間、僕は本気を出していない気がする。

課題はちゃんとやったし、
だが、本気を出せていない明確な証拠が一つある。

JS選手権の順位付けで、
僕は全く賞を取ることができなかったのに、
全く泣けなかったのだ。

僕は結構泣き虫で、本気の勝負は勝っても泣くし、負けても泣く。
いや、いい歳したおっさんになってきたのだから、
まあ泣くことはなくなったにしても、
本気の勝負で負けたら悔しいと思う。

だが、悔しさがほとんどなかった。

本当に僕の自信作で、結果の順位に不満があれば、
僕の性格から言うと絶対に抗議するはずだ。

なぜこのプロダクトの素晴らしさが理解できないのか、と。
採点基準に不満すら言いかねない。

でも、僕はそんな気持ちにすらならなかった。

僕が最近本気を出して泣いたのは、
大学四年生のときの部活の引退試合で、
天秤の勝負に勝ってリーグ昇格を決めたときと、
就職活動で内定をもらったときぐらいだ。

以来、僕の本気というのが何処かに行ってしまった。

いや、本気じゃないというのも、
ちょっと違うような気がする。

別にサボったわけじゃないし、
僕の中では結構イケてるプロダクトを作ったし、
時間の許す限り真面目にやった。

だけど、このプロダクトが世界一最高なんだと胸を張れない。

うまく言えないけれど、なんか無難すぎるのだ。

自分の出来る範囲で、うまく着地させることに、
あまりにもこだわっている感じがする。

正直、この一ヶ月で僕は新しいテクノロジーが扱えるようには、
そんなになっていない。

これはまさに「課題をこなしている」状態だ。

何が原因でそうなっているのか、正直よくわからない。

確実なのは、僕が今作るプロダクトには、
魂がこもっていないということだ。

挑戦が感じられない。

作るものが、本当に作りたいものじゃないからだろうか?

失敗を恐れているのだろうか?

困難な技術に挑戦して、プロダクトの完成が間に合わないことを気にしているのだろうか?

僕はいつからこんなにつまらない人間になったのだろう?

そんなことを恐れていては何も身につかない。

とりあえず、次の一ヶ月は「背伸び」をテーマにしようと思う。

まあ、そんなことをしなくても、
ここからは僕が完全に未知の領域なので、
背伸びをせざるを得ない状況になるのだろうけれど。

【G’s Academy LABコース体験記】18日目

今日は自習。ひたすらプロダクト開発だ。

先に暴露すると、僕のプロダクトは、
マンガのシェアサービスだ。
発想の起点は、
僕の家に大量に眠っているビジネス書などの書籍だ。
とても残念なことだが、僕の趣味は
本を読むことではなく、本を買うことなので、
沢山の本が一度も僕の脳に刺激を与えることなく、
ただのパピルスの加工物になっている。
稼働率の低い典型的な私有物である。
シェアサービスの基本は、僕の理解では
稼働率が低い、
他人と心理的に共有が可能である
の二つの条件を満たすことなので、
書籍は該当しそうだ。
それで、図書館的な箱を用意して、
そこにみんなが書籍を置いておいて、
人のやつも自由に取り出せるようにすれば、
とてもいいじゃないかと思ったのだ。
お金は、本を寄贈してない人が、
漫画喫茶的に利用してもらうときに徴収すればいい。
これはシェアサービスが台頭しはじめた二年前に思いついて、
ずっと起業アイディアリストに眠っていたものだ。
あんまり深く考えていなかったのだが、
今日計算してみたところ、
利益率が非常に低いビジネスだということに気づいてしまった。
そりゃ、誰もやらんわ。
でも、僕はこれを作ることにした。
理由は後述。

さて、このプロダクト開発をするに際して、
今日だけで面白い気づきが沢山あった。
まず、僕はビジネスにおける営業利益というのは、
世の中に提供した価値とイコールだと思っていた。
高ければ高いほど、世の中に貢献したというわけだ。
レガシー的なビジネスはさておき、
通常のビジネスにおいては、
一見この考え方は正しそうだ。
だが、必ずしもそうではない。
基本的には提供価値の対価と考えて差し支えないが、
提供価値の分類をすると分かる。
顧客への提供価値という意味では、
ほぼイコールなのだが、
世界への提供価値という意味では、
それが反映されないケースがある。
例えば、僕が考えたこの漫画のシェアサービスは、
利益率はいまいちだし、他の漫喫と比較すると、利益が薄くなる。

だが、紙や印刷インクという地球の資源の節約という観点では、
社会的に非常に意義のある進歩が生まれている。

そう、利益というのは直接的に価値を提供するところ、
マネタイズのされるところで発生するものでしかなく、
一概にそのビジネスの価値を説明できないのだ。

まあ、当たり前かもしれないが。

だって、Googleの無料のサービスが、
無料で使えるからといって無価値かと言えば、
全くそうではないから、ちょっと考えれば気づけそうなものだが。

僕は長らく勘違いしていた。

次に、クラスメートに、よく僕の質問に快く対応してくれる
素晴らしい友人がいるのだが、彼が気づかせてくれたことだ。

それは、僕がビジネスの観点と自分のやりたいという気持ちを大切にし過ぎていて、
技術を磨く機会を無意識のうちにトレードオフで捨ててしまっていたことに気づいた。

たとえ、コンセプトがイマイチだったとしても、
技術力の向上にコミットしていれば、
考えている時間の分、技術が身についていたかもしれないのだ。

もちろん、トレードオフなので、
どっちかしか取れないのだが、
無意識で捨てていたというのが非常に危ない。

今回のプロダクトは、僕は採算が合わないから、
制作をやめようと考えていた。

だが、この反省から、いわゆるサービスをひと通り作ってみる、
という経験をすることに改めて決めた。

ビジネス的にはいまいちだったとしても、
技術力を向上させることに重きを置いてやってみようと思ったのだ。

ということで、プロダクト制作の方は、
大体構造をスケッチしてあるので、
後はゴリゴリ作るだけだ。

完成したら、ここでまた共有する。

【追記】
ところで、今日昼間に中座して、
あるベンチャー企業のCEOの方とお会いしてきた。

「ゆるいつながりの方が、インパクトのある情報をもたらす」
的なことを聞いたことがあるが、最近まさにそれを感じている。

まだ未定ではあるが、
今回、その方から事業を一緒にやらないかというオファーをもらい、
(もちろん、共同創業者と相談だし、先方もまだそうと決めたわけではないが)
こういうのって本当に予測不可能だよな、とつくづく思う。

本当にありがたい話だ。
実績も何もなく、ただ面白い未来絵図を描けるだけの僕を面白がってくれ、
一緒にやらないかと声を掛けてくれるのだ。

自分のやりたいことを堂々と表明し、
実際に行動する者にこそ、こういうチャンスというのは巡ってくるのだな、
と前職への就職も含めて感じた。