渡るネットは嘘ばかり

元文系、米国大学院CS修士号持ちITエンジニア。自称エンジニアが撒き散らすゴミを少しでもキレイにしたい

社会人にプログラミング教室は本当に必要か

ネットビジネスってなんだかなぁ、再燃中。ここでも取り上げている通り、ネットビジネス(インターネット上でサービスを提供しているという定義だとほぼすべての会社になるので、ここではアフィリエイトとかブロガーとかYouTuberのような、非エンジニアのネット個人業種)という際どい領域(違法性が高く制限が掛かる可能性が高い)を仕事に選ぶ方はクリーンな人もいますが、大半が人を正しい方向に幸せにしていない、社会の歯車として価値を生み出していない人達です。広告表示のない報酬目的の記事であったり、情報のなにもないトレンドブログであったり、極めつけは情報量ゼロか現実には成功してないノウハウを売る情報商材やコンサルですね。嘘をついている人のほうが多い業界です。

コンサルとかをしてる人には実際稼いでる人もいるでしょうが、何故か自分が成功していなくても、年数生き残ると新人ネットビジネスのコンサルという形で稼ぎ出すという情弱が新人の情弱を食い物にして稼ぐ状態ができてるように見えます。プロから見て到底大金を取れる水準にないのですが、個人として安い額で作っているのでネットビジネスを個人でやる人間が連鎖して売上が発生している感じに見えます。情弱連鎖です。この業界ではコンサルも情報商材とあまり変わりません。本来コンサルとは企業や自身に蓄えられた成功の経験や知識を元に成功に導く方法を、いかに儲けるかを助言する立場ですが、実際その方向で成功していない人が蓄積した失敗だけを基に成功するためのコンサルをしてるわけで。プロの水準をわかっていない人にプロの水準にない人が売っているし、金額も個人だと高収入だけど、企業としてはやる価値のない安い仕事なのでニーズはマッチしているのかも知れません。どうせ相手にしてるのは簡単に稼げるを信じて参入する価値判断ができない人中心です。稼げるという言葉に釣られて鴨が入ってきてくれないとお金を落とす人がいないので、嘘まみれです。しかも、簡単に稼ぎたいという人はそこまで金を持っていないので、生贄は日替わりで必要です。本当に簡単に月100万とか稼げたら高額所得者はネットビジネスの人間ばかりだし、それだけの金がその人達に流れ込んでることになりますが、まぁ、実態があればとっくにTVとかで特集になってしょっちゅう取り上げられますね。本人達稼げる稼げる言ってるわけだし。

2018年フリーランス白書によると、約1000万人のフリーランスの内、5.9%が年収1000万円超えらしい。59万人か。そこそこいてもおかしくないけど、下記だと2017年度の10万円以上が2.3%。
www.japan-affiliate.org
ただし、母数が少なすぎる。真っ当なアフィリエイトはこれで、稼いでるのはほとんど情報商材やコンサルの実態無価値勢でしょうね。

blogos.com
こういったアフィリエイトより公式が先にきて正しい情報を得られる流れも今後は加速するでしょう。公式の検索してるのにアフィリエイトだらけとかホントに彼らのアカウントを消してくれるゴルゴはいないか探したくなります。掲示板にRGBって書いたらネットハンターがサイトを抹殺してくれないものか。

基本的に稼げるアピールするのは、そこに人の流入が欲しい、それが金を産む場合です。ネットワークビジネスMLMとかみたいにね。子ねずみが自分に金を運んできてくれる。搾取のための勧誘です。金を使ってくれる人がいないと稼げないから。じゃなきゃ、アフィリエイトで稼げるアピールするわけがないじゃないですか。どう考えても、アフィリエイターが少ないほど稼ぎが多くなるんだから。プログラミング教室で検索してもどれだけアフィリエイトが多いことか。これが1件だけならみんなそこから飛んでボロ儲けですよね。ランキングで上位にボーナス出たりとかもあるし、競合が少ない方が可能性は高い。稼げると書いてるところの9割は情報商材へのリンクかコンサルのリンクがあるのが大半で、稼げる詐欺から信じた情弱を相手に実際稼げるようになる黒魔法だろう。成功してない人に成功の手伝いをしてもらう奇っ怪な世界だからなぁ。競合が増えて喜ぶなんてまともな業界ではない。人手不足で同じ仕事に対して人材が必要な場合とは違うからね。横展開で一緒に働く仲間が欲しいのでなく、縦展開で自分より弱い金を運んでくる人間を増やす図式です。そして、稼げるアピールして情弱に参入させる→やり方が悪いと情報商材を買わせたりコンサルにつく→その方法でも成功せず→何故か成功しないまま商材を売ったりコンサルに回る、という謎の成功者不在で金だけ回る仕組みです。

ただ、情弱のネットビジネス参入者は無限にいるわけではないですし、ネット上での情報の劣化が激しい昨今、いつ規制が入るかわかりません。Googleさんがクソ記事認定したのを上げようとするイタチごっこもAIが解決する可能性は高いSEO対策が無駄になる時代の到来です。ネット広告も見直すべきだと世間が気づき始めているので、今後、この層の人達は本物以外は淘汰されていくでしょう。この業界のコンサルは何度も書くけど、成功してない人間がその経験でコンサルをして新人相手に稼ぐ→コンサルで成功者になるという摩訶不思議なねずみ講のような世界です。成功してない人のノウハウを買う人がいるのは冗談みたいな話で、最初成功しようとしたネットビジネスでなく、失敗してるのにノウハウを売ることで成功する、錬金術ですね。構図はやはりネズミ講と一緒で嘘を付いてるうちにそれが連鎖して事実になる。結局、誰一人正しく成功していないのに金だけが流れているというのがネットビジネスの世界で、食い物にする情弱がいなくなった途端に餓死する世界です。現状、ブログの過去記事が検索に引っかかったりして金になってるでしょうが、遠くない将来検索エンジンは情報の賞味期限も判断するようになるでしょう。僕は基本的に期間検索で古い情報はカットしてますし。また、規制が入ると同時に積み上げたものが全て崩壊して、社会復帰は難しくなりますよね。人脈も同じネットビジネス界ばかりでしょうし、人脈を頼ろうとしても総倒れになりかねません。就職しようとしても、ああ、あの規制入った仕事してたのね、と倫理観が問題視されて落とされる可能性が高いです。まぁ、基本的に読者の利益より自分の利益優先ですし、良いサービスだから薦めようと思っても目的が違って、そもそもの観点が違うというのもよくある話です。良いサービスじゃなくて、大金出すなら、結果につながるべきですからね。自分も、もう娯楽系の仕事はしないで、社会貢献というか、人の日々の生活を豊かにする、健康に寄与するような仕事を優先しようと思ってます。AIはそういうところに親和性が高かったりするのもいいところ。実際のところ、9割の人がアフィリエイトの記事見たくないでしょ。購入後にアフィリエイトだとわかったらものすごい後悔ですよね。利害関係のために薦めてた、と知ったら、せっかく勝った試合で実はレフェリー買収されてた的な感覚ですよね。Googleの機嫌で売上ぶっ飛ぶというのは、大多数が見たくないということです。何度もいうけど、専門特化型アフィリエイトは優良です。正しい知識と経験で、大抵が広告と明示しても購入されます。この人が言うなら、という状態です。そこ目指さない人はネット上にゴミをばらまいているに等しいです。

特化型じゃない皆様…

常々言ってるけど、君らは職業をIT関係とか言わんで欲しいです。

そもそもね、個人で働くというのは雇用を生み出さないという面で社会的にプラスにならないんですよ。フリーランスブームとはいえ、自由に働きたいからフリーランスとかっていうのは自己中な話で、自分も成り行き上フリーランスになって高収入を得られるようになりましたが、健康や将来の蓄積を考えると、実力を評価してくれる高給の会社員になるか、自分の会社を持って社員を雇ったほうがいい。個人で働いてる人は自由な反面、社会の歯車の中でおまけに過ぎない存在です。結局、中心にはなれないのが現実です。自由な半面組織という力を失っているので、大きな仕事の中心に置かれることはないということです。

今回はプログラミング教室そもそも論


誰がプログラミング教室を評価すべきか

アフィリエイトの影響もあり、プログラミング教室の評価レビューが乱立しています。前の記事に書いた通り、プログラミング教室はアフィリエイトに向いていません。何故かと言うと、受講中の生徒や卒業生、下手するとメンターや講師もプログラミング教室の謳い文句の常套句「即戦力」を判断できません
ちょっと考えてほしいのですが、下記の誰に教室の価値を評価して欲しいでしょうか?
・受講生
・卒業生
・現場の人間
・人事
・アフィリエイター

僕は現場の人間、もしくは人事の現場担当者の立場で即戦力として受け入れられるレベルと判断できるか、という観点でプログラミング教室をレビューしています。特に誇大広告寄りな「即戦力」とか卒業後フリーランスで独立というような謳い文句の場所を中心にカリキュラムレビューをしています。実際通ってはいないので、中の状況を知りたい方は受講生か卒業生の体験談を読んで見て下さい。ただし、アフィリエイトリンクが貼ってあるものの中には偽の体験談もあります。アフィリエイトである以上、そこに誘導して報酬を得たいという気持ちが少なからずあるので、情報が偏るのは理解して下さい。

ちなみに、皆さん、何を目的にプログラミング教室に通うのでしょうか?
…おそらく次のキャリアに繋げるためだと思います。趣味に数十万払える人はなかなかいないでしょう。そこまで財力がある人間は真っ当な働き方なら頭の切れる人が多いと思うので趣味なら独学で十分です。・・・というわけで、目的ごとに評価者の考え方も変わると思います。

目的ごとの評価者

結果にこだわらず楽しみながら学びたい

→ 受講生、卒業生(、アフィリエイター)

実際に教室に通った人なら、肌感として学びやすい教室かがわかります。学びやすいところ親切なところで楽しくプログラミングに触れたいならこのカテゴリになります。このカテゴリの記事の特徴としては、2分割されて、アフィリエイト付きとなしがあります。後者はアフィリエイトに埋もれてほとんど見つからないので、-af.moshimo とか -a8.net を付けて検索すると良いです。-を付けるとその後の一連の文字列を含むページが検索から除外されます(アルゴリズムが変わったのかたまに混ざりますが)。ただし、この体験談で効果の測定、即戦力になれたかはわかりません。

アフィリエイターの書く受講体験

当然、報酬を少なからず期待していますから大半がべた褒めです。場合によっては他社との比較もあります(場合によっては優良誤認表示に繋がる)。ここで注意したいのはその人のその後です。逆に差別化で謳い文句ほどの上達はない、という事実を書き、とはいえリンクを見たら結局アフィリエイトのこともあります。効果は得られなかったのに限定的に薦めてるという。もし、あなたがキャリアとしてプログラマ、ソフトウェアエンジニアになりたいなら、その体験談の作者がその同一線上の進めているかをちゃんと見て下さい。卒業後の転職してからの実務のこともちゃんと書いてあるか、この辺は重要です。アフィリエイトのために受講するというのは、ちょっと体験しに行く、という遊び感覚なので、言わばプロボクサー養成ジムにダイエット目的に行った人の体験談です。楽しそうでもプロになりたい人の参考にはならないでしょう。目的が「その後のキャリアに繋げること」でなく、「良い教室かどうかを確認すること」なので、教室自体の評価は豊富でも、それが結果としてどうなったかは大抵書いてません。即戦力を謳う教室でも、即戦力に関する記述は抜け落ちてることも多いです。・・・まぁ、判断できないでしょうし。また、教室の評価が中心なので、技術面での記事も少ないように思えます。個人的にはわかってない人間の書く技術情報(プログラミング教室のメンターがよく書いているやつ)はノイズでしかないので、書かないで欲しいですが、学んでできるようになってくると多少は書きたくなるのが人間です。あと、アフィリエイトを付けて紹介している人と議論になった際に、良いと思ったから紹介している、とのことで、それなら、利害関係があるのを誤解しないようアフィリエイトであることを明示するかアフィリエイトリンクを外して欲しいとお願いしたところ、明示を選択されました。悲しい話で、本当に良いと思ったなら後者を選ぶかな、と思ったのですが報酬は捨てられないようで。一方から報酬を受けて捌いてるジャッジが公正な目で見てます、と主張するのと無報酬のジャッジでは心証が全く違います。

アフィリエイトなしの体験談

大半が挫折してます。そもそもが、上手く就職できた人は実務で忙しくなって体験談とか書く暇もモチベーションもないのが現実かも知れません。何度も書いていますが、プログラミングは誰でもできるものではなく、芸術系職種と同じでセンスが求められます。量産型コーダーなら特に求められませんが、低賃金で高稼働なのでお薦めしません。センスがなくてITで生きていきたいならプログラマ以外のキャリアを目指した方が良いです。センスの面で言うと、経験上、できるエンジニアは頭の中でコードを実行できます。ソースを読んで、実行する前にこう動くがイメージできないと、バグを事前に察知したり、リバースエンジニアリング(コードから仕様や動作を理解すること)が上手くできなかったり時間がかかります。この頭の中での実行はコードの裏の動き、機械レベルでイメージできるとより鮮明に理解でき、精度が上がります。精度が悪いうちはこう動くはずなのに、で実は裏のアーキテクチャが影響してた、とかあり得ます。年数経験しても、頭の中で実行できない人も結構いるので、この辺できない人はマネージャ職やインフラ等経験重視の職種を目指した方がいいです。

※転職後の記載がある場合

転職後の記載がある場合でも、教室によっては斡旋でお金を取っているところもあるので、フリーランスや転職エージェントに繋がっているところでは、転職後に続いているかも確認が必要です。転職を成功させるとエージェントやフリーランスの紹介手数料で年収の3割がエージェント会社に入ったりします。なので、転職成功をゴールに、その先は知らない、という悪質なところもあり、試用期間で打ち切られる可能性もあります。

次のキャリアに繋げたい

→ 人事や現場の人間、1年以上経っている卒業生

こちらの目的の人が中心でしょう。
まず、考えてみて下さい。受講生や卒業間もない素人に毛が生えた状態で即戦力とは何か、自分が即戦力に相応しい実力が付いたかわかるでしょうか?プログラミングの世界は広大な森、もしくは海のようなもので、コンピューターサイエンス(以下CS)の学生はクラス自体が一種の地図になっているので、少しずつ地図を埋められますが、プログラミング教室や独学は地図なしでとりあえず動き回るようなものです。上手くゴールできてみ、どれだけの範囲を理解して、自分がどの位置にいるのかわからないと思います。自分は即戦力に相応しいと思う、と思い込むことは転職に取って自信を持つというより過信することになるだけです。

では、即戦力を判断するのは誰か。

それは人事であり、採用面接を担当するエンジニアです。一番最高なのは卒業生がその立場に成長することです。センスのいい卒業生なら1年もすればある程度、自分のいる業界が俯瞰で見れるでしょう。その時にそれなりの立場に就けていれば即戦力になれる一番の証明です。ただ、即戦力コースを謳うなら、大半がそうならないといけません。新人がプログラムを学んでいる時は前述の通り、いわゆる五里霧中状態で、自分がどこを歩いて何を目指してるかわかりません。例え、教室を体験したとしても、本来の未経験の人間が自分が即戦力に相応しいか判断できるとは思えません。即戦力を判断できるのは即戦力を判定する立場の人間です。なんで、通ったこともないのにカリキュラムから教室を評価できるかわからない、とアフィリエイターの方に聞かれましたが、
「では、あなたは人事に評価するために教室に通えというのか?」というのが回答です。教室に通った、とアピールした場合、人事が見るのはカリキュラム程度です。下手をすると何も見ずに「未経験者と変わらない」という判断になります。転職活動をしてて、渡した情報をちゃんと見てる人が本当に少ないのは実感しています。結構トンチンカンなレスポンスがきます。特に教室上がりだと技術スタックがぴったり合わないと評価するのは難しいRailsSaaSを使っている環境、ということになるでしょう。ほとんどの教室は時間短縮にSaaSを使ったり、フレームワークを使わない場合を教えずにいきなりフレームワークを使います。なので、フレームワークを何故使うのか、中で何が起こってるか、SaaSに載せない場合にどういうコマンドが必要かということがわかりません。その部分をやってからフレームワークSaaSがこんなに便利なんだよ、中の動きももう分かるよね、というのが正しい学習です。CSの課題ではライブラリで実装されていることを自分で実装する課題がよく出ますフレームワークの中の動きがわかればフレームワークを拡張したり、パフォーマンスを正しく発揮できます。場合によっては新しいフレームワークを作る側になります。世の中には仕組みを作る側と使う側がいて、当然作る側の方が評価が高く高給です。使う側でいる以上、この壁は超えられません。少なくとも、その種は植えたほうが良い。

それで、僕の判断としては人事にこの人教室通ったみたい、と言われて評価するのはカリキュラムを見るくらいです。卒業生が既にいれば、その人も判断材料になるかも知れません。ただ、もし即戦力採用で面接をするのであれば、カリキュラムを見て足りないと思う部分を中心に質問します。webだと、例えば、「ユーザーからのアクセスにやけに時間がかかるという問い合わせがあった。あなたならどういう手順で原因を見つけるか」とか、もしくは「一部のユーザーがどうしても特定の処理でエラーが出るとの問題が発生した。どう原因を見つけるか」「ユーザーが50万いるゲームでランキングを表示したい。どういうシステムを組むか」とか。即戦力ならこの辺は答えて欲しい。まぁ、その面接の前に、自分の場合、最初にオンラインのコーディングテストを設けると思います。アルゴリズム寄りのやつを。文字列操作とか問題解決系ですね。教室であろうと業務であろうと最低水準の技術力と素養があればいいので、オンラインで実装を求めます。

ちなみに僕は直近の会社ではフリーランスだったので、採用面接には立ち会っていませんが、現場で働き出した新人の派遣とフリーランスの査定には関わっています。フリーランスや派遣の技術力を数日働いた段階でクライアントから聞かれて、「ちょっと厳しい」と答えて、その人が翌月にいなかったことが何度かあります。その基準として、ソースコードやテーブル構成から仕様を理解出来ない人、つまり、わからなかったらすぐ聞く、というプログラミング教室の方針を地で行く人でした。本来見ればわかるのに見てもわからない人、というのは実務能力が低いということになります。聞けば聞くほど、他のエンジニアの時間を奪うので、なるべくコードから理解できたほうが良いです。キャッチアップの速さは確実に評価に繋がります。実際のところ、現場で大事なのはリバースエンジニアリングであり、コードから当たりをつけてのデバッグです。コードを頭で実行できず、テーブル構成とコードからテーブルの意図がわからないとなると、スペシャリストとして外部から来る意味がないということです。見た感じリバースエンジニアリングをちゃんと教えてるところは殆ど無いように思えます。ちゃんとデバッグの仕方が理解できれば、メンターと呼ばれるTAに何度も聞く必要はありませんフリーランスは社員以上に求められる技術水準が高いです。給料が良い分、スペシャリストとして現場に来ているので。そして、技術力が足りないなら翌日発注しないだけです。卒業後フリーランスに、という教室はすんなり決まっても翌月無職になる可能性があるので注意して下さい。経験上、1年以上現場にいたのは使っている技術スタック全体を理解できる人です。

エンジニア職でなくてもプログラミングの知識が欲しい

→受講生、卒業生(、アフィリエイト)
こちらは教室自体が目的、もしくはビジネスに寄っている必要があるので、DIVE INTO CODEとかは向いていると思います。報酬目当てとはいえ、アフィリエイト記事を数十個とカリキュラムを読んで思ったのは、プログラマを目指す人以外には良いかも知れないということです。正直、内容的にはビジネス寄りです。CEOの経歴的にも。スタートアップとして少人数で起業したい、とか企画職を目指すけど、表面的なプログラミングの知識を持っておこうという人にはぴったりです。即戦力は過大広告なので信じないほうがいいです。そんなに甘い業界な訳がない。そもそも、技術スタックを全て自分で選べる会社の方が少ないので、0からwebアプリを作れる必要なんてありません。新人にそんな仕事させるのは数人規模のスタートアップだけです。ほとんどが新人は即戦力であっても機能追加とか保守案件に配属されます。新規開発でもCBT前で人が必要になったタイミングとかが普通でしょう。また、エンジニアが自分で企画することはほとんどないです。それは企画職の話。当然、企画にGOが出て、チームで動き出すキックオフから口出ししたりはしますが。CSの課題でも大抵が工数的にも実現可能なテーマを先生が提供してくれるのがほとんどで、そのリスト外から選ぶのは数%、通常一人くらいです。実務に近い形でやってプレゼンというのはCSの最終課題でもよくある形式(1学期の3個授業取って2個は最終課題のプレゼンがあるとかは大学院では普通)なのでいいと思いますが、企画を0から作る必要はありません。また、通常デザインとか素材は別のチーム(UIチームとかデザインチームと呼ばれるグループの人達)が提供してくれるので自分で画像を準備したり加工したりする必要もありません。餅は餅屋なので、エンジニアが下手くそなデザインするなら素直にデザイナーに任すべき。大半は美大卒でセンスあります。まぁ、一部のCSSとかフレームワークだと、エンジニアでもそれなりのデザインはできますが、ありきたりで、ああ、あれね、と言われるようなデザインが限界です。僕は高校時代独学でperlcgiの背景やらタイトルを変更したりしてましたが、フレームワークcssのベースラインで画像とデータを変えるだけだと、そのレベルに感じちゃうんですよね。DIVEさんはここのページ見てるかも知れませんが(指摘したことがカリキュラムに反映されてたりするので)、即戦力って過大広告止めて非エンジニア向け、を中心にした方がいいと思いますよ。プログラマ向けもやるなら、プログラマ志望に無理に企画もさせないでビジネス寄りの企画・スタートアップ運営コースを作ってデモデイは企画とプログラマで組んでやるか企画は教室運営陣が設定して、かつ、そのプロジェクトを少しずつ拡張していく形にしたら実務に近い形の非常に良い教室になりそうですが、こだわりか詰め込みすぎて、実務に必要なことを削って本来実務に必要ないことを詰め込んでると感じるのが現場の人間の感覚です。

実際、社会人にプログラミング教室は必要なの?

未経験者向けであれば、個人的にはNOです。教室通っても、web開発だと技術がない勢い中心のスタートアップに低賃金かシステム業界になる可能性が高いです。そもそもAmazonとか大手は応募条件がCS卒もしくは同等の経験で、ポジションによってはCS院卒、博士も珍しくないです。そのレベル、高額ポジションになると、プログラミングに限定した教室や経験云々でなく、知識体系としてちゃんと習ってるかが問われます現場エンジニアの人事的観点からでも、教室出たという人は未経験者研修は省略してもいいか、研修の前半スキップしてもいいかな、程度の評価です。技術スタックが完全に同じでないと全スキップも無理です。SaaS使ってるところ少ないから少なくともサーバー周りの知識は必要になるでしょう。自社サービスならCIの知識も必要になってくる。結局、未経験入社が中心になりますし、未経験者を受け入れているところは基本的に新人研修があるので、プログラミング教室と同等の研修を給料をもらいながらできます。なら、最初から未経験可のシステム会社に入社した方がいい
ちなみに、自分が未経験者研修で習ったことは
・プログラミング基礎構文
・オブジェクティブ指向プログラミング
MySQL
Java EE(Servlet, jsp)
・web/appサーバ構築(apache, tomcat &連携)
・ショッピングサイト作成
とかそんな感じだった気がします。3ヶ月の研修を2ヶ月半で終わらせました。

プログラミング教室を出ると即戦力で高給で転職できる、なんて都市伝説があるかも知れませんが、未経験入社だと下手すると新卒と変わらない、手取り20万前後が多いです。ただ、僕の経験として、いきなり未経験入社で1年後の給料が600万なんてこともあり得るので、会社選びを真剣にして、入社後に努力しましょう。一緒に学ぶ仲間も卒業後どこに行くかわからない人でなく同僚なので仲良くなるし、研修中でも会社の飲み会とかで実務についている先輩の話が聞けます。
プログラマは一発逆転の成功への近道ではありません。地道に経験と知識を蓄積するエンジニアリングの仕事です。仕事としてプログラマを目指すなら、準備に慎重になるより、未経験でも熱量を持って飛び込んで行ったほうがいい。ちなみに最初の会社の同期ではプログラミングは向いていなかったけど、インフラに面白さを見出して、そちらの方面で戦力になったやつもいます。IT業界=プログラマではないので、中に入ったら違う向いてる道があるかも知れません。最初給料安いけど、プログラミングを楽しいと思って、学び続ければ基本的には報われる業界だと思います。ちなみに、プライベートで勉強しなくてもシステムでは通用するかも知れませんが、給料上がらないし、勉強してる同僚には絶対勝てないし、プログラミングの勉強を楽しいと思えなければ、経験中心のインフラ辺りに進んだほうがいいです。

また、未経験を通りやすくするなら、githubにアカウントを作って、入門書を片っ端から写して実行して公開するといいです。入門書そのままでも書いて動かした経験があるとプログラミング教室卒と同等くらいには見てくれる可能性は高いです。少なくとも書類が通る確率は上がりますgithubの公開がない卒業生より下手したら通りやすいかも。

社会人に限定しない場合

非CS系学部の学生ならプログラミング教室は良いかも知れません。CS卒以外ほとんどが経験ないので、プログラミング教室→インターンとか経験しておくと結構有利かと思います。ぶっちゃけ新卒なんて、ほとんどみんな同じように見えるので少しでも差別化できたほうが強いです。一日20人と会って何人覚えてるでしょうか。と言っても、新卒で技術職を理系以外から取るところはもう少なくなってきてる気はしますが。結果としてエンジニアから別チームに移される人はすごく多い印象で、最初から絞り出した印象があります。

社会人に必要なプログラミング教室とは

未経験が対象ばかりで即戦力の手前の人間が受けるレベルのプログラミング教室がない。一定レベルがあるプログラマに即戦力まで引き上げるならともかく、未経験から即戦力に引き上げるとか何を言ってるの?という話です。自分はかなりセンスのある方だと思っています。国家資格のデータベーススペシャリストを3ヶ月で取っています。それでも、即戦力レベルになれたと感じるのは1年が経った位ですし、システムで即戦力と言っても、OSS貢献していたり、競技プログラミングで上位に入るエンジニアが多数在籍する会社では新人レベルでした。webやゲーム業界で即戦力と言えるようになったのは米大学院に留学してからです。CSの知識のない人間は大抵壁にぶつかります。そういう時に上のステージに進むための教室こそ必要です。データ構造やアルゴリズム基礎の理解は中堅エンジニアの最低条件です。でないと、スケーリングしないでアルゴリズムで解けるような問題をサーバーを増やしたり、無駄なコストを発生させることになります。日本ではこのレベルで中堅より上級寄りになるかも知れません。知らない人が多すぎるので…。ボリュームゾーンが初心者から中級者に上がる壁の辺りなんですよね。とりあえず動くものはググりながら作れるという量産型のレベルです。

また、現在ある表面を一通りなぞるだけのプログラミング教室は会社の未経験者研修としての位置で提供されるのがいいと思います。上述の通り、未経験者研修と大差ないです。SaaSの使い方とか、基本的に簡単に使えるようにするクラウドサービスなので、元となる知識があればドキュメント読めればできるでしょう。

ついで

最初に取り上げてから1年以上経つ今でもプログラミング教室でスクレイピング人気だけど、実務で使ったことないんですが、使ってるところってどれくらいあるんだろう。法的に分析目的ならいいみたいだけど、目的次第では著作権に触れかねないし、情報守りたいところはjsで見えないようにajaxで動的にDOM組んだりするから、その辺から抜けないと実用的じゃないし、そもそも、勝手に抜くんじゃなくて協力関係でAPI提供してもらったりデータ提供してもらった方がよくない?という印象。

ネットでプログラミング教室選びをする前に読んで欲しい話

それより、ちょっとここがアフィリエイターとかに引用元の明示なく無断転載とかされてるのがわかったので、差し込みで。引用する場合はソースを明示して下さい。

アフィリエイターとか本当に金儲けのためだけに読者の幸せを考えない「何かをお薦めする記事」を体験した風に量産しているので注意が必要です。そういうお薦めに乗っても自分は幸せになりません。GoogleとかがUpdateで順位下がるように対応してくれてるのにSEO対策とか言ってゴミ認定された記事をまた上げようとする。

プログラミング教室は広告を依頼してるだけではありますが、公式でも信用できない卒業生のインタビューを載せたりするあたり、実際には現場で通用しないのをわかってて、もしくは元々センスのある1割程度しか自分たちの教えたことだけで成功しないのわかってて、特殊事例を上げてるように思えるので、同罪でしょう。

金儲けのためのアフィリエイター
→プログラミング教室
→紹介制度(報酬あり)
→アフィリエイター化
→戻る

と負のループができかけてる気がします。ちなみに、ここは全くSEO対策とかしていませんが、その辺のアフィリエイターと同じかそれより上にきてると思いますが、それは自分の言葉で書いてるからだと思います。広告も入れてないしね。ブログとかで稼ぎたかったら自分の言葉で語れる程度の知識をつけて欲しいです。

掲載元を明示せず作者の意図と違う引用をするDIVE INTO CODEのアフィリエイター

DIVE INTO CODEの検索でここにたどり着いた人が結構いるようですが、中には本来の主張と違う方向でアフィリエイトに引用してる人もいました。
hirox2.com
2018/06/06追記 アフィリエイト会社から連絡があり、無断引用が消されました。
現役エンジニアと元エンジニアなので自分の言ってることの信用のなさが露呈するので引用ごと消したのでしょうか。

引用元を書かないで反対意見を一部だけ抜いており、作者の意図を誤解させる行為です。非常に悪質。匿名の口コミとか何故か①②が抜けて③から振られてますが、匿名で口コミした憶えはありません。DIVE INTO CODEの関係者というより、アフィリエイターなんでしょうが、まともなリテラシーを持っていないようです。公式のインタビューを流用しまくってコメント付けるだけの非常に質の低いアフィリエイトサイトです。とりあえず、意図と違う引用なので、アフィリエイトの会社に通報しました。内容もめちゃくちゃでとても前線でエンジニアとして働いたことがないと思われます。おそらく、引用でリンクを付けると、僕がアメリカの大学院に留学してコンピューターサイエンスの修士号を取ってきた人間だとわかるので、Pathos的な信用で負けると思ったのでしょう。また虚偽も多く、

これだけRubyに特化しているスクールはないので

と言ってますが、Rubyだらけですよね。TECH::CAMPとか。こういう書き方はクライアントが優良誤認表示で注意を受けたりしてもおかしくないです。

僕の引用への反論もひどいもので、

基礎知識というのも非常に大事だとは思いますが、学生のように時間も取れない社会人の為にも、重要な部分を集中的に教えてくれるのがプログラミングスクールの特徴です。

また、大学のように卒業までに4年もかかってしまうプログラミングスクールがあったとしたら、あなたは通いたいと思うでしょうか?

時間がないから基礎や知識は無視してもいいという言い訳なんでしょうか?プロで働きたい人に言ってるんですよね?
また、4年かけるならプログラミングスクールでなく大学行くでしょう。質が違いすぎる。TECH社とかはプログラミング教室の体験談を直に聞くと最後までやり遂げられる人は2,3割といいます。

[2018/07/18追記] それ故か、久しぶりにサイト見たらTECH社は今はチュートリアルレベルのコースばかりですね…。文章読める人は通う意味あるのか微妙です。APIやライブラリを使える、SDKを導入できる、というのは技術力ではありません。ドキュメント、Referenceは説明書です。プロが説明書があるのにできません、とか冗談もいいところです。基本、英語なので、英語読めるか、レベルでしょう。日本語のドキュメントやチュートリアルがあってもできない人は向いてないので、コンサルとか企画職に行った方がいいです。向いていない人が現場に来ても残念ながら負荷が上がるだけです。

大学の授業だと学部なら9割、大学院でも7,8割はやり遂げられるのが普通です。教えるプロの教授が教えてますから。そりゃそうです。速度が異常です。そもそも、学問というのは一日に長い時間をかければできるようになるというものではありません。

大学で学んだことがある人ならわかるでしょうが、ある応用科目は基礎科目を取ってないと登録できません。前の科目は1学期前にある。これはコース全部を履修してから、というのもありますが、学んでるときに100%理解できることって意外と少なくて、Aを取っても曖昧だった部分というのがあって、応用科目中に「ああ!そういうことか!」となることも多いです。

  • 次の授業までにリーディングで自分で理解しようとする
  • 授業の説明や質問で曖昧点を解消する
  • 課題を通じて知識を技術として定着する

そういうサイクルが学校にはあります。理解には時間がかかるものです。昨日読んだ技術書の内容を明日完璧に把握できる人間はそもそもとして独学で十分できるでしょう。ただ動くものを作るなら理解はいりません。こう書けばこう動く。しかし、それが最適か、実行速度としてどうなのか、大規模ユーザーでスケーリングの問題が出てきた時にどうなるか、そういったことを考えるには基礎が必要です。特に、国民総スマホユーザーのこの時代、1人でシステムを動かすのと同時に1000人がアクセスするのではシステムの挙動は全く変わってきます。

例えば、フットサル面白い。もっと楽しみたい。で個サルに行って、得点につながるプレーを集中的に教わったら楽しめるでしょう。趣味ですから
ただ、フットサルで大会にガンガン参加して、ゆくゆくはプロになって食べていきたいのであれば基礎はものすごく重要です。高いレベルだと、強いパスを柔らかく停めて進みたい方向に向くとかはできなきゃいけないことです。

ボクサーはトレーナーから正しい動きを学んで、鏡を見ながらシャドーで何千回、何万回もその動きを練習して初めて無意識にその動きができるようになります。それが基礎です。時間がかかるし大事なんです。

スポーツとは違いますが、プロとして”高い給料をもらって”食べていきたいなら、基礎は絶対条件です。好きじゃないけど仕事だから、レベルで普通の給料でデスマーチで働きたいなら別にいいと思います。でも、プログラミング教室行きたい人って手に職つけて稼ぎたい人が中心ですよね?でなく、プログラマとして、とりあえず食べていける程度の収入が欲しい、であるなら、Javaの教室に3ヶ月行ってシステム会社に就職するといいと思います。一番人手の足りない業界ですし、基礎わかってない人中心なので未経験でも入れるところは多いと思います。

この方、2年で鬱になってプログラマ辞めたそうですが、基礎や知識なくやってたのも原因なのではないですかね。お宝ザックザクの特に外資だと1000万超えが普通の業界ですが、基礎や知識っていうのはそのお宝探しの洞窟に持っていく松明や色んな道具みたいなものです。手ぶらで入ったら暗闇をさまよって鬱になっても仕方ないと思います。自分が書いたものがどう動いてるかわからない、直したはずなのにバグってる。それは基礎がわかってないから裏側の動きが理解できていないのが原因です。

実際のところ、この辺のプログラミング教室がやってる程度の研修を未経験者を雇って給料を払いながら3ヶ月ほど学ばせてから現場に出すシステム会社は結構あります。とりあえず、基礎は省いて動くものを作らせる。結果何が起こっているかと言うと、品質の低さによりバグが多発、実装速度も遅いのでデスマーチが発生する。ということです。システム業界は特に基礎がない人が多いので、結構やばいです。そして基礎も知識もない人が見積もって、設計になってない「文章」を渡して現場が炎上するという…。

また、他言語を学んでもRubyを独学で習得できなかった人の体験談引用してますが、パット見、他の言語をかじった程度ですよね?使いこなすレベルで他言語わかっててRubyがわからない人はプログラマ向いてないので一生の職にしようと思うのは止めたほうが良いです。今後、コンピュータが得意な世代が育ってきて(スマホかPCかに分かれてる印象でスマホ側は完全に相手にならない気がしますが)、枠が減ってきたら確実に淘汰されます。特にC系使ったことあるのにRubyがわからない人。
Ruby (programming language) - Wikipedia
implementation language Cとあるように、内部ではCが動いているので、Cが使えたらRubyで書いたコードの裏で何が起こってるかわかるのが想像できるでしょう。Cで解釈が書かれてる言語は多くて、何故かと言うと、OSが、カーネルと呼ばれる部分が基本的にCで書かれているからです。システムコールとか、OSの機能を呼び出すのに使うのは基本Cだと思っていいでしょう。

利害関係のないように見える体験談

[2018/06/22追記] 引用元から名誉毀損と謝罪を求められました。事実確認のため、一旦サスペンドしました。
[2018/07/06追記] サイトにアフィリエイトが明示されたのでリンク削除
内容としては、失敗談を通じた体験談でも、アフィリエイトが付いていて、実際は利害関係があったりするので注意して読んで下さいという意図でのリンク掲示でした。名指しとかでなく、リンクにコメント付けたものです。さすがにアフィリエイトを付けて稼ぐ意志は一切ありません、というのは信じがたいので…対象のブログの作者の言葉がブーメランに感じたので、その言葉をそのまま返した感じだったのですが、逆鱗に触れたようで、表現は少し注意しようと思います。
※ 自分が他者に使った言葉で激怒するというのも不思議な話ではありますが、上手いこと書こうとし過ぎました

正直、ブログを公開してる以上賛否あっても、法的に問題のあるレベル以外で謝罪求めるとかどうかと思いますが…。それが原因で家に苦情の電話が殺到するとか、馬糞とか等身大ガンダム送られたりしたら別ですけど。

DIVE INTO CODEの最新カリキュラムレビューはまた別でやりますが
AIコースのシラバススタンフォードの機械学習コースを比較して妥当だと思う人いますかね?この速度で理解できるなら、TAかRAやって給料もらいながらスタンフォードの大学院で勉強できると思いますよ。英語できれば。

プログラミング教室の生徒を鴨にしてるアフィリエイター

ちなみに、プログラミングスクールの潜在利用者はアフィリエイト業界では「良い鴨」と見なされているようで、資料請求だけで報酬がもらえるようです。また、フリーランスとかやたら進めてる記事がありますが、あれもかなり報酬がもらえるようです。
setsuyaku-info.com

プログラミング教室ランキングとかおすすめ、って記事が書いてあって、そこからその教室へのリンクがあったら、PCならカーソルを合わせるとリンク先が表示されると思います。スマホだと長押しでリンクをコピーとかでメモ帳にでも貼って見てみて下さい。
px.a8.netとかaf.moshimo.comとか付いてたらかなりの確率で偽物の金儲けのために作られた記事です。鴨にしようと書かれた内容です。アフィリエイトの会社は↓を参照で。
hituji-affiliate.com

プログラミング教室やフリーランスは実務未経験ブロガーのアフィリエイトに向かない

別に体験してアフィリエイトのページを書くこと自体は悪いとは言いません。ただし、プログラミング教室やフリーランスの仕事関連は体験して記事を書くのに向いてない。なぜなら、アフィリエイトのために、という時点で対象が違う。プログラミング教室に行く人のほとんどは転職のためだと思います。その時点で、評価すべき対象は人事か現場エンジニアです。卒業しても基礎構文とかフレームワークの基礎や動かし方がわかった程度では自分が即戦力化はわかりません。

要は、アフィリエイトを続けるつもりでちょっと遊びに行ってみる。それは趣味レベルの人です。1月でも10万前後はかかるところが多いわけで、それだけかけたら趣味レベルでも褒めざるを得ません。回収するために。そうなると嘘が出てくる。あくまでアフィリエイトのネタのために、ですから。本気の人の参考になるわけないし、そもそも前項のアフィリエイターが明かしている通り、プログラミング教室やフリーランスを語ってる人間のほとんどが技術に疎いです。それが良いか悪いかなんてわかりません。稼げればいい、というだけの人です。本当にいいと思ったらアフィリエイターなんて辞めてプログラマーになりますよね。人生変わる体験をするなら自信になるでしょう。プログラミングを学んだとかフリーランスやってると言っても、まともにコードを書いてる記事は一つもないですよね。プログラミング教室行ったらコード書きたくなりませんか?こうだと思ったけど、これが正解だった、とか。

ちなみに体験してない体験談で買わせるのは詐欺だと思います。アフィリエイトって稼げる稼げる書いてあるので、仕事辞めて専念するとかいう計画性のない人も多いようで(そして情報商材に流れて借金したり)、日々の生活に必死になる時期が最初にあるようで、嘘や騙すことに鈍感になります。フリーランスで稼いでる、でアフィリエイト付ける人間は間違いなくフリーランス自体で稼ぐのでなくフリーランスを紹介して(サイトで誘導して)稼いでる人でしょう。事実かわかりませんが。フリーランスで技術で稼いでるエンジニアはアフィリエイトなんかより技術を磨いたほうが稼げるのわかってるし、1000万前後収入があると基本的に無駄遣いしなければどんどん貯まっていくので、アフィリエイト記事に時間割くくらいなら好きなことをやったり技術を磨いてQOLを上げようとする人の方が多いです。

そして、それをわかっててアフィリエイトに依頼を出すプログラミング教室も確信犯に近いと思います。

何度も書きますが、プログラミング教室を検討するときはネットの記事だけを見ないで、エンジニアをやってる友人にカリキュラムを見てもらって、現実的か、それで現場で通用するか判断してもらって下さい。講師も妥当か、そして、その講師が本当にいつもそこにいるか(アフィリエイトや公式の体験談で釣ろうとする教室は名前貸ししてる可能性も高い)確認したほうがいいです。エンジニアの友人がいない人は…

コーヒーでも飲みながら30分〜1時間程度のカウンセリングとかあるといいんですかね。無料もしくはワンコインか1000円程度で。稼ぐ目的ではないので。どこかでモクモクやってもいいですね。みんなで集まってプログラミングする、そういう集まりが無料であったりします。初心者向けのそういうのを作るのもいいですね。

僕はプログラミングが好きで天職だと思っています。
こういうことをしてるのは金儲けでなく、プログラミングを通じて不幸になる人を一人でも減らしたい、プログラミングを好きになってくれる人が増えて欲しい。そして、エンジニアの世界的に見て低い日本での地位を上げたい。その辺がここで記事を書くモチベーションです。

[2020/03/14 一部表現を修正しました(雑に書いたままになっていたので)]

副業元年 〜副業でブログを書かないでくれ〜

GWなのでちょっと頑張って早めの更新。外資しか受ける気なかったのにエージェントに声かけられて日本企業の話進めてみて失望した話もあるので、時間あれば近いうちに。

麻布十番のメゾネットはなかなか快適です。隣人とも挨拶がてら話して、寝てる間は車の音とかはあっても、隣とか上は無音です。やっぱり睡眠は大事。全ての基本です。立派なタワマンより、低層高級マンションの方が大人の住処としては価値が上です。家賃安くなった分、近所のボルダリングジムに通おうかと思っています。

電車とかも最近余裕ができて、満員電車嫌だな、と、ふと時刻表を見たところ、最寄り駅から始発が数本、出勤時間にあることがわかって、また、その電車までに背中で押して入ってる満員電車を2本ほどスルーしてみたら、始発1本前も行き先の問題か結構空いてることに気づきました。車両も、目的の駅の階段に近いドア付近にいたら、座席に空きがあるのに出口付近だけ周りと触れる位の満員で、2つ隣のドアまで行ったらガラガラになって、そこから先頭降車したら、人気満員ドアの先頭集団とほぼ変わらないタイミングで乗り換えられたりもしてます。ホームについて最初に来た電車の、出口の階段に近い車両が最適解とは限りません。ストレスとか、要素を追加すると、貪欲法の基準が変わって、より快適な解にたどり着いたりします。乗換案内ではそこまでわからなかったりするので、時刻表、最寄り駅で見てみたら何か発見があるかも知れません。その満員電車の次の電車はガラガラかも知れませんよ。

閑話休題。今年は副業元年とか言われてますが、そもそも、会社が副業を禁止するのは元々違法です。本業に害をなさない場合、問題なかったというのが現実。
副業で生活や人生が潤うか。個人的には一部の既に稼げている層にはYes、他の層にはNoです。稼げている人間の方が心にも時間にも余裕があるのが現実だったりします。また、知り合いも多いので胡散臭いセミナーとか商材にもかかりません。副業関係のセミナーや商材は99%詐欺と思っていいでしょう。そんなさ、稼ぐノウハウあって、普通他人に教えないでしょ。これは何度も言っていますが、無限にパイが増えるわけじゃないし、ノウハウが普及すると、そのやり方の価値は劣化します。その辺は経済の基本原理です。希少価値であるからこそ稼げる。鉄を金にできる錬金術ができたとして、金の価値はどうなるでしょうか。特徴に違いがあるから純粋比較はできないとは思いますが確実に価値は下落するでしょう。

実際のところ、元々人脈があってセンスや技術がある、できる人間がより稼げるようになって、できない人間ほど目先に見せ金に飛びついて詐欺に合うという、余計格差が広がるだけの阿鼻叫喚な未来がぼんやり見えます。まぁ、半分以上は解禁でもやらないでしょうが。前者は副業で店舗経営や独自サービスの運営と自分が何かを提供する側の副業を、後者はアフィリエイトやブログなど他のサービスにぶら下がっての副業を選ぶ傾向が強いと思います。選択肢の幅がそもそも違います。知人のつてや人脈から副業を開始するのと、ネットで検索して副業を開始するのと、そんな違いもありそうですね。何度でも言いますが、ネットの情報は8,9割は嘘や誤りで儲け話の99%は詐欺です。それが国民総配信者時代の現実です。

それと、本ブログ、実はDIVE INTO CODEのレビューのアクセス数結構多いです。カリキュラム多少変わってるので、近々再レビューしたいと思います。アクセス数的に、場合によってはインタビューとかした方が良いかも知れない。でも、インタビューしたら掲載NGになりそうな気がしないでもない。あと、コーディング的なインタビューしたら、数人はできる人間雇ってると思うし、下手すると外部から連れてくることも考えられるので、あまり意味なさそう。ちなみに新しいカリキュラム見た感じ、センスある人以外ついてけるのか、これ?という、通常コースもAIコースに近い駆け足感を感じました。自分が教えた経験からも、まるで知識0だと元々のコンピューター好き以外は地獄に近いと思う。

今回は副業に関して、再度取り上げます。

ネットビジネス稼げてると言ってるブログは大抵セミナーとかへの誘導が目的

「ネットビジネス、詐欺」「副業、詐欺」とかで検索しても「実際は稼げる、詐欺とか言ってるのはやったことのない奴らだ」とか耳辺りの良いことを言ってるのが大半です。苦労して稼げるようになった、とかいう論調で、画面の下の方に行くと「セミナー」「○人限定」とか有料コンテンツへの導線があります。実際、苦労話を見ても、失敗例ばかりで、ほとんどが、やろうとしていたことで成功していない、失敗したから他のことをやって、という行き当たりばったり君ばかりです。で、そこから、何故か、成功談がなく、成功してセミナーとか商材につなげるという、起承結の謎の失敗から高収入という流れが大半です。転を売ろうとしてるのかも知れないけど、その飛躍はもはや錬金術、魔法の類です。大成功は小さな成功の積み重ねからくるもので、いきなり成功する可能性があるのは博打だけです。そして、博打は大半が負けるか良くてトントンなのですよ。そこには魔法を使えなかった人が突然大魔術師になる見えない大進化が現れます。MP0でどんな魔法使ってんだ、という。答えは簡単、チートなんですが。嘘というMPを使わない魔法です。

そもそも、何を売ってるのか、セミナーで話すのかわからないようなの参加しない方がいいです。何をしたい、どうなりたいのビジョンなく、金持ちになるために副業という人間が成功するはずがない。目的と結果を履き違えてる。地図を手に入れて、世界が見えた!俺は自由な土地に行きたい、とだけ決めて歩き出す人は道に迷うだけです。成功したとしたら、腕が後ろに回る可能性のある綱渡りを渡り切った与沢氏みたいな強運の人間だけです。実際彼が売ってたのは空気です。金持ちの雰囲気を売ってたわけです。ある種、あそこまで金に執着して稼げるのは生まれつきの化け物じみた欲がなした業で常人には無理です。少しでも人の善意があればあそこまで行けない。大半が稼げないし、稼げても逮捕される可能性が高いです。

というか、セミナーに行かないと成功しないレベルなら、副業で小銭稼ぐより、本業を磨くことをお薦めします。しかもセミナーを開催してるブロガーは何故かアイデア次第で〜とか言ってるわけで。アイデアなくて儲けられない人間だからセミナー行くわけだし、セミナー参加したらアイデアマンになれるだけのコンサル力あるなら、知らない人より、身近な人間をコンサルして、継続的にその人達にアドバイスして稼げばいいと思うんですが。新規と話してコンサルって実際はかなり大変でしょ。セミナーを不特定の他人に何回もやってる時点で固定客のコンサルで食べていけない証拠だと思いますけどね。それか、実際業界の裾野を広げる程度のまぁ、3000円取れば十分レベルの浅い話しかないかのどちらかですね。何か新しいサービスの普及とかなら後者はありうる。成功する秘訣、とかのセミナーで後者はありえないので、セミナー参加者を成功させられてないんでしょうね。参加者を成功させるんじゃなくて、セミナーに数多く流入させて参加費を稼ごうというのが目的でしょう。

基本的に副業はその時々で多少稼げるかも知れませんが、大半がグレーゾーンなので(価値のないブログに誘導して広告費で稼ぐトレンドブログとかも、広告主を騙すグレー行為と思う)、法規制とかで稼げなくなります。セミナーきた皆が稼げるようになったらパイが枯渇して、新しい手法のためにまた金を払う、それは弱者の思想です。弱者のまま稼ごうとするのでなく、耐え忍んで強者になるために鍛錬に励む時間も必要です。自分は30代前半で1000万前後稼げるようになりましたが、天才以外は30前後の1000万を目指して日々を積み上げた方が良いです。日々考えて考えて勉強して蓄積した技術は嘘をつきませんし崩れません。20代で簡単に稼ごうなんてして、運良く1000万稼げても1年後には半分になってたりします。そして、たちが悪いのは一度生活水準を上げてしまっているので我慢ができないという。そして、グレーゾーンを繰り返すわけですね。土台がないので、いつまでも稼げたり稼げなかったり不安定でしょう。そんな人生、精神的に持たないと思います。他人の土俵で、しかも正統派でないやり方(ブログであれば、唯一無二の情報・研究成果・知見などを提供できるの特化型が正統派)で稼ごうとすれば、場を作ってる人間は本来の意図に寄せようとするのが世の中のバランスです。

YouTuberとかも広告主に損害を与えるような動画で激怒して代理店が撤退するようなことがありましたし、報酬基準を変えたりしてます。当たり前です。反社会的な動画とか、悪ふざけの違法行為、炎上でも視聴数上がる迷惑行為などが収入になってましたし、未だにそういうのが数多く残ってる(というか8割方?)。子どもばかり観てて収益に繋がらない動画も数多くあります。TVだと子どもは親と一緒に観てるから広告効果あるかもですが、YouTubeはTVで見れても8割型スマホタブレットでしょう。トレンドブログとか詐欺系ブログも価値のない、もしくはうっすい記事に広告がついてるわけで、まともな人間はそっと閉じるので金を使う購買層でなく、金を稼ぎたい層にしか見られてないのが現実だと思います。広告主を騙してるようなものなので、Googleも検索の価値判断を変えていて、その内、ゴミのようなブログはかなりページを進めないと出なくなるでしょう。むしろ、Googleでその仕事をしたい…。アクセス数=価値のあるコンテンツ、という世界は10年前、スマホの登場と共に滅びました

話は戻りますが、良くわからないけど稼いでる風の人は基本的にブランディングなだけで稼いでないと思っていいでしょう。

ネットビジネスの特定のコンテンツを否定してるのもアフィリエイト誘導

uwakiaruaru.info
この辺がいい例です。YouTuberはもう儲からないからブログ、とか言って、リンクの先ではAmazonアフィリエイトが貼っています。文献とか紹介していて、tag=XXXXXとか付いていたら基本的にアフィリエイトが目的です。
アソシエイト・セントラル - ヘルプAmazonアフィリエイトのリンク記述
ちなみに同ページにあるサーバーの方もアフィリエイトです。カーソル乗せてhttps://px.a8.net/のURLが見えたら基本的に金儲けのための記事と思って良いです。この辺は宣伝と言わずに宣伝してるのでステマの一種ですね。宣伝とかPRの文字がなくアフィリエイトが貼ってあったら、流入の報酬目当てのためだけの記事と思って閉じてしまってまず間違いないでしょう。正しい情報を提供する気はありません。アクセスが稼げればなんでもいい量産型クソ記事製造業者です。

副業で何をするべきか

個人的には、仲間と将来の起業に向けての活動をするのがいいと思います。このサイトに関係が深い部分で、エンジニアなら自分の将来やりたいサービスに使えそうな未経験の技術を使っている簡単な仕事を請け負って経験や技術を蓄積するとか。より給与のいい業界(システムから自社サービス等)への足がかりとなる技術の請負とか。まず、目標となる将来の指針を立てて、そこに向かって、1ヶ月後の収入重視でなく、将来の収入を想定して動くべきです。まぁ、副業に飛びつく人は目先の金儲けしか見えない人が中心でしょうが、その誘惑に負けると大抵騙されて借金が残るわけです。簡単に金儲けができたら世の中、あなたより頭のいい人間全員が大金持ちです。大抵グレーゾーンとか黒い詐欺サイトは動かないだけだ、と言いますが、違法性をはらんだ行為は利口な、そんなことしないで稼げる人間は手段として選びません。まず行動するのが大事、続ければ成功する、と言ってる人間は大抵詐欺師です。目標設定、下調べ、準備、そして行動。成功する人は成功すべくしています。例えば、エンジニアリングで言うと、突然、レイトレーシングを実装してください、と言われて、いきなりコードを書く人間はまず書き上がらないでしょう。レイトレーシングとは何か、位の簡単な説明はあるかも知れませんが、理論を知って、それに必要な技術を一つずつ理解して身につけて初めて正しい設計ができて、手戻りの少ないプログラミングが実現できる。そういうものです。当然行動に移すのは大事ですが、目的地までの道のりを調べずいきなり歩きだすと路頭に迷うだけです。そもそも、その辺の人達が提供するものってターゲットが曖昧なんですよね。副業したい人に自分が成功した方法を、って、副業で何がしたいかわからない。元々、誰かに喜んでもらうようなことを提供する、という基本原則がなくて、トレンドブログとか、読者の時間の無駄にしかならないゴミを撒き散らすわけです。ここは営利目的ではないですが、誰かの気付きにつながって、考え方の一つとして吸収したり、騙されそうになってる人にストップをかけられれば、というのがターゲットというか主な目的ですね。技術やネットという世界で生きてきた人間の声として。

技術職の場合、本業を高めるのが最善

ITは特殊な業界で転職が経歴としてマイナスになりません。個人的には2,3年ごとに転職した方が技術が作業になって錆びつくことがないし、守備範囲も広がります。当然、なんでもできるような国際的な大企業は別です。プログラミングが好きでずっとものづくりがしたいと思う人が日本企業にいたら、転職しない方がリスクです。海外では囲い込むのに年収8000万出すような職種ですが、日本では何故かマネージャ信仰から400〜600万でプログラマは頭打ちでしょう。フリーランスなら技術力あれば1000〜1200万位までは行けそうですが、一生フリーランスというのも心細いですし、フリーランスを取るところで本当に大きな仕事はできないので、ある程度磨くと物足りなくなってくるでしょう(今の僕がそんな感じです)。

副業でブログを書かないでくれ

書籍を書くレベルの人ならいい。金儲けのためだけにブログを書かないでくれ。9割の間違った情報で、健康系なんて時に人の命を奪いかねない。
トレンドブログでググった情報に自分のコメントを付けただけ、技術の勉強でよくわからないけど、これで動くらしい、なんか動いたっぽい。そんなものは紙の日記に書いて本棚に仕舞っておいてくれ。既にゴミまみれのネット上にゴミを出すことで小銭を稼ぐ。そんなの乞食と大差ないように思える。空き缶を拾ってゴミを捨てられない子ども大人の尻拭いをしてくれてるホームレスの方がよっぽど世の中のためになってます。誰かのためにならない自分のためだけの乞食ブログなら書かないでください。
※執筆活動できるレベルとは思ってないけど、営利目的じゃないので、その辺は勘弁してね( ゚д゚)

ああ、マジでGoogleでゴミをフィルタリングする機能を作りたい。
あと、早く国が情報商材を認可とか制度で取り締まって欲しい。
情弱ビジネスって、ピュアな(無知とも言える)人間を真っ黒にしますからね…。

一歩踏み込んで考える

インフルエンサーの人が拡散してくれたのか、一時twitterからの流入が増えていたようで。僕の拙い文章を読んでくれる人が増えて嬉しい限りですが、相変わらず筆不精です。

Google Code Jam始まってますね。Qualification Roundは48点で突破でした。固定値にケアレスミスがあって、新しいシステムでもPractice mode解禁になって2個固定値修正したら普通にあってて20点無駄にした…Round1は1回目3000位台、2回目2000位台でどちらも突破の1500位以内に届いてないので、今週末に賭けます。

また、外資系プラットフォーム企業への転職準備をしつつもプロジェクトでクライアントのメインのプログラマの筆頭辺りになってしまい、フェードアウトしたいのに中々時間の取れない日々が続いています。仕事自体は楽しいんですけどね。cocos2d-xを使っていて、最近だとTableViewを横に動くようにしたり、Shaderで光彩付けたり、Android/iOSそれぞれで権限許可出したり、Perfect Pixel Detectionとかやってます。大体のことができるようになって、ホントそろそろ移らないと技術力が止まってしまう。同じ技術ばかり使って自分は大抵のことができる、と慢心すると広がる技術の世界から取り残されます。最近のも会社としては新しいことをやっていても、基本的には知ってることのcocos2d-xへの応用だし。
外資の世界トップ数社受けてダメなら、LinkedInでAI機械学習系の会社の誘いというか紹介があって、年収のレンジがどこも下限800で上限が1300〜1500位なので次のキャリアパスとしてデータサイエンティスト的なのも次の10年を楽しく開発する選択肢としては良いかも知れない。もうゲーム業界はいいや…社内でも歩きスマホが多くてストレスが開発以外のところで多いです。

自分は育ちが良いので、マナーと言うか振る舞いが下品な人が好きじゃないです。今度書くかと思うけど、前までタワマンに住んでて、住人の民度が酷くて、部屋で落ち着かないので引っ越しました。成功する人の大半は成功すべくして成功しています。そこには品格というかオーラのようなものがあって、所作振る舞いとか、マナーや気遣いが当たり前にできる人が多い。何故なら評価する人間がそういった品格のある人間が多いので、地位のある人間から人間性の下らない減点をされることが少ないわけです。同じ能力の人間が2人いたら通常、一緒に働きたいか、一緒にプロジェクト成功を祝って飲みたいか、そんな基準で人を選ぶのが人間です。反面、育ちの良い人間は気遣いに使われる脳機能が発達してる(子どもの頃のしつけで未発達の人は他人の不快を想像できないらしい)ので、無作法な振る舞いに意識しないでも気付いてしまって、無駄にストレスを感じたりもます。まぁ、一個上の次元だと下々の粗相は気にも留めない次元になりますが…。

www.forbes.com

前にも書いたかもですが、アメリカで語学学校にいた時にcontagiousという単語の例文で"A bad attitude is contagious"っていうのがあったのを今も覚えてます。contagious diseaseが伝染病なので、移りやすいとか伝染性って意味の単語なんですが、近くで悪い振る舞いをする人がいるとそれは伝染しやすいということです。マナーの悪い行動とか、迷惑な行いというのはたいていが自分にとって楽、他人に取って迷惑なものです。割り込みとかね。特に判断力のない人間(子どもとか)は人の行動を深く考えずに真似から学びます。だから、躾の時期に親は正しい振る舞いをしなきゃいけないわけで。子どもといる時は絶対信号無視するな、とか、昔は地域でも子どもの前では信号無視する大人はいなかった気がします。子どもは集中力がなく好奇心旺盛なので、よそ見しながら歩くことがよくあるので、信号無視を習慣化すると事故に合う危険はかなり上がりますよね。歩きスマホとかも、この伝染してる悪いマナーの1つで、しかも問題なのが、前のエントリーで書いたように、歩きスマホが当たり前の人は脳の超前頭野が働かない状態が続き、脳は使わない部分は縮んでいくので判断に使う部位が劣化して、善悪の判断がつきにくい、要は認知症とかのような状態になって、すべきでない悪いマナーだとそこらじゅうに貼られても止められなくなってしまうという。

今回はそんな、深く考えない行動にストップをかけて、一歩踏み込んで考えてみようという話です。一応、非技術者もしくは初心者技術者向け技術ブログのつもりなので最後は技術話、コピペ癖への警鐘に繋げます。

なぜを考える

日本人はどうもWhyよりHow toを気にする気がします。それ故、深く考える習慣がない人が多いように感じます。特に今の子どもは幼稚園、小学校低学年から親に押し付けられて塾に通い、何故を考える時間なく(外で遊んで色んなものに触れて、見て、話しての方がその能力は伸びると思ってる)、教えられたことを憶える習慣が強くなってるように思う。感受性の衰えすごいな、と感じるのは電車で2人一緒にいてもお互いスマホいじって、会話の話題もスマホからだったり。ちなみに、僕は子供の頃から何故ばかり考えて生きてきたせいか、学習能力とか理解力は高めな気がします。周り見ると発見や気づきがいっぱいあるんですけどね。ただし、一歩踏み込んで、気付きが得られると、それを気付いてない人の行動が気になってちょっと生き辛いかも知れません…。傘束ねずに傘の水滴で自分の服濡らして電車に乗ってくる人とか、店の前の邪魔な違法駐輪とか非常に気になります。How toはどうすればいいかの手順なので、深く考えたり理解は要りません。行動の理由は理解した方がいいけど。

何故というのは、一歩奥を覗き込むことのような気がします。例えば、重力の仕組みであっても、どういうことが起きてるか、の理解が先に来て、どうしてはその先、一歩先の次元にある気がします。未だに重力の計算式はわかっていても、重力が発生する理由はわかっていません。仕組みがあって現象がある。現象の理解は見える部分からの分析の結果で仕組みはその元の見えない部分です。分かる例で言うと、時計がどう動いてるか、仕組みは分解しないとわかりません。分解しても分かる人にしかわかりません。何故を考えることは物事の本質を考えることです。

邪魔の例

一つの例えとして、邪魔という感覚を取り上げます。
道とか電車を出る時に邪魔だな、と感じることはよくあると思います。でも、邪魔、で終わってしまうのでなく、一歩踏み込んでみる。なんで邪魔と感じるんだろう。それを考えると、自分が感じた邪魔、という不快な感情を他人に与えないようになります。では、邪魔と感じる状況を分析してみる。基本的に邪魔だと感じる状況というのは最善の動線を遮られた時だと思います。自分勝手な人間によって回り道、余計なコストをかけなくてはいけない状態、自分のペース・速度で歩けない状態、それが邪魔です。そう考えると、他人の動線をイメージして、そこを塞ぐ位置には立たない、流動性を遮る状態になったら一旦移動する、などという感覚ができます。そのためには周りの状況を把握しなくてはいけない。つまり、電車でドアが開いてる間は基本的には周りを見るべきです。流動性、他人の動線を把握して動くために必要な情報はスマホ上のまとめサイトではなく、周りに立ってる人との距離感や、移動する人の動線です。降車客が階段に向かう動線が想像できれば、イライラしてる人が出てきた時にぶつかられることもないでしょう。触らぬ神に祟りなしです。

邪魔の応用

邪魔がどういうことか自分なりの答えが見つかると、他のことにも理解ができます。例えば、”うるさい”。これは思考の動線、つながりを妨げられる状態です。邪魔と同じで音で気が散って流れを止められることで思考の流れが悪くなります。スポーツでも対人スポーツは自分のペースだと全く疲れないのに、相手のペースに合わせさせられると異常に疲れます。人は自分のペースを乱された時に不快に感じ疲れるものです。

コピペの弊害

プログラミング教室や現場でもコードを書く時にコピペをする人がいます。コピペは基本的にバレると思った方がいいでしょう。コードを書く時、スタイルは人それぞれです。if文も

if (flg1)
{
    // do something
}
else
{
    // do other
}

if (flg2) {
} else {
}

if (flg3) {
}
else if {
}

この辺よく見る書き方なんですが、複数のスタイルが混ざってると大抵コピペしてますね。

if(flg){
if (flg) {

半角スペースの使い方も癖が出ます。コピペでなく混ざる人は…美しくないコードを書く人なのであまり一緒に仕事したくないです。
わかりやすく(ロジックが複雑だとコメント多くしたり)美しいコードはバグが起きにくかったりします。コードレビューでも拾いやすいしね。

そして、コピペは他の箇所で正しく動いても、自分のコードではバグる場合もあります。また、他で動いてるからと言って最適とは限りません。コードアシストとか色々やってくれるので、せめて、元のを参考に、自分で動きを考えながら、最適化しつつ書く癖を付けたほうが良いです。コピー元が何をやってるかわからなくてコピーしてる人間とか正直、正気の沙汰に思えませんが、意外といます。

情報の真偽

1人1台スマホ時代で情報発信が普通になり、さらにプログラミング教室のステマが広がった今、ネットで見つかる情報は著名な専門家の書いている記事以外、何かしら間違いが混ざっていると考えていいと思います。「なんでこうなるかわかりませんが、」などと書いてるページがあったら即閉じたほうが良いです。そこをコピペしたら間違えたのがそのブロガーでもあなたの責任におけるあなたの間違いになります。結局、peer reviewをしてる紙の情報が確実なんですが、急ぎの場合でもコードの意味をしっかり考えたほうが良いです。一歩踏み込んで考えること、情報を疑うこと。悲しいことですが、発信者が増えたことで、発信者のレベルが劣化しています。URLを確認してプログラミング教室のページが書いている技術情報とかはメンター的な学生に毛が生えたか、下手すると素人に毛が生えた程度のエンジニアの卵が書いてる可能性が高いのでそっと閉じましょう。そして、そんな人間に情報発信をさせている教室は絶対に信じないほうが良いです。

ちなみに、最近見つけた仕事で使うとバグる例だと
masahirosaito.hatenablog.com
http://developer.wonderpla.net/entry/blog/engineer/Cocos2d-x_texture_hit_test/developer.wonderpla.net
前者は後者を批判していますが、どちらも現場じゃ正しく動かないでしょう。
他画面対応してる場合

this->location = CC_POINT_POINTS_TO_PIXEL(location);

initWithLocationとか作って、これでピクセル情報にしてあげないとダメ。CC_CONTENT_SCALE_FACTOR()をかけて変換してる感じ。取得する色情報はポイントじゃなくてバッファ上のピクセルの位置です。個人レベルの実験だとscaleFactorが1対1ですが、大抵変形端末は縮尺が違います。
ちなみに、color picking的な手法はopenGLでは普通の技術で特に3Dのオブジェクト選択ではオブジェクトごとに別の色を付けて、同時に描画して、取れた色のオブジェクトを選択状態にする、というのがよくやる手段ですね。さらに、3Dオブジェクトはtriangleの集合体なので、そこまで選択したい場合、ポリゴン(基本3画形と思っていい)ごとにIDを振って、それをIDごとに色情報(RGBA)に変換してglReadPixelで選択したポリゴンを選んで選択した対象を判断する、とかも学校の課題でやったりします。この場合、1回のバッファへの流し込みで住むので、cocos2sでの手法より効率がいいと思います。この辺の記事は元の技術とか仕組みわからずにStackOverFlowとかのコピペで動いたのベースでperfect pixel detectionができると思って書いた記事なんでしょうね。おそらく、openGLわかってないように思えます。

階段を登ろう

結局コピペ由来のバグの問題は深く考えず、元の技術を理解せずにショートカットしようとして、バグを起こす。しかも、仕組みがわかってないので本人がすぐ直すのは不可能です。コピペするにしても、使っている技術は全て把握しましょう。やり方がわかったとしても、正しいかは使っている技術を理解しないとわかりません。まぁ、簡単に言ってしまうと「ちゃんとやろう」ということです。

それでは、よいGWを!

プログラミングは奥が深い

お久しぶりです。3ヶ月のモニター2期プログラミング教室が終わりました。その辺をメインにあれこれ。

本題の前に、仮想通貨の話。ちょくちょく仮想通貨(海外では暗号通貨と言われますが)いじってないの?的なことを聞かれますが、あれは博打なのでやりません。まぁ、初期に買って去年くらいに売るなら手を出しても良かったかも知れませんが、投資で良く言われる、素人が買いだしたら相場は終い、と言うのもあり、今更手を出す気になりません。先行して多額の投資をしている金持ちは売り抜けるのにも同数の買いがないと利確できないこともあり、素人が増えてボリュームが増えたら少しずつ売って逃げたりします。そもそも、仮想通貨だと取引量が少なすぎて金持ちには向かないんですよね。数億買い入れたら買値上がっちゃうし、売りでも値崩れの引き金になりかねない。なので、大きな買いを入れられる銘柄、もしくはタイミング(買いが膨らんだところで売ったり、逆に成行じゃない売りが膨らんだところで買ったり)。基本的に仮想通貨の現状じゃ、機関とか大金持ちには向いてません。ハッキングで出金できなくなる危険性もある。来ても仕手くらい。仕手が来ると値は上がりますが、たいてい素人はハメられます。買ってる金持ちって投資素人の芸人とか情弱ビジネス界(情弱を鴨に広告収入とかコンテンツ売ってる)のトップスターのイケハヤとか与沢翼でしょ。與沢君後輩だけど、半夜間学部で情報処理系の共通授業で俺が授業中5分しかちゃんとやらずにA取ったプログラミングの授業でC取ってるし、ネットビジネスで成功した人、なんだけど、IT系は名乗らんで欲しい。インターネット使ってるだけでエンジニアリングではない…というか、情報技術って広すぎるんだよなぁ。そういう技術関係ないアフィリエイターとかまでIT系名乗るから新しい業種名が必要な気がする。與沢君が出てきた時点で胡散臭いグレーゾーンのものな確率が高いので撤退したほうがいい。金持ちとか機関が来ないって言うことは、底堅い上昇に繋がりにくくかんたんに崩れるってことです。

なんにせよ、ファンダメンタルとかない、チャートと場の空気だけで予想する博打な上に相当数を上位数%に握られてたり、マイニングの売りあったりとか、指標のないものを買うのは博打です。まともな人のすることじゃない。買ってる中の情弱の方々はブロックチェーンがすごい、中央支配されない、価値が上がって当たり前、とか思ってるかも知れませんが、ブロックチェーンは取引の正当性を保障するだけで、アカウント乗っ取られたら何の効力もないし、むしろ、その取引すら正当化される気が。コインチェックは保障するみたいですが、海外では保障しないハッキングされたところもありますし。

中央がコントロールしないのはいい面も悪い面もあって。不当な介入はないですが、通貨の水準が決まらないんですよね。国家の通貨っていうのは国力が反映されるので、大きく暴騰暴落しても妥当な範囲です。明確な価値基準がある。だって、それがなければ、海外でPS4を1$で買えたり、フェラーリを日本で50万で買えたり、iPhoneXが100万とかになりうるわけです。国の通貨として認定されて国の管理の下にあるというのは国がある程度の問題を保障できるということだったりもするわけです。

というわけで、仮想通貨・暗号通貨は博打。元の金がなくてなくなってもいい人は自己責任で、という感じ。元銭あるなら、株とか税金や手数料低い安定したところで確実に勝った方がいい。最近だと、1,2ヶ月に1度暴落あるので、そこで買ったら結構勝てます。銘柄ある程度ウォッチしてれば安い水準もわかるから、そこまで我慢すればたいてい負けません。中長期でできる余剰資産あるなら、ファンダメンタルズ分析が最終的には強い。銘柄選べば月に10%位は難しくないです(去年は月に平均5〜10%儲けました)。

特に去年のいつ買っても待てば儲けられる相場で利確して今年入って暴落で損切りとか強制決済させられた人達は結構な人数で去年の億り人から6月位に刑務所送りになってそうですね…。国税庁結構本気だと思うよ。

3ヶ月の第2期が終わって

11月からの3ヶ月ですが、6人(3人ずつの2クラス)で開始しましたが、最終的に2ヶ月目で1人脱落、3ヶ月目はチーム課題を出したので、課題提出がほとんどなかった1名は打ち切らせて頂きました。元々課題やアンケートのフィードバック(以下FB)を前提に安く提供する話だったのですが、ちゃんと契約書とか作るべきだったなぁ、と。
プログラミングは初期(基礎構文とかのレベル)は知識より手を動かすことが大事です。そもそも、基礎構文でデータ構造もクソもないからね。とはいえ、知識をベースに手を動かすと理解が数倍に跳ね上がるので、授業で知識を教えた上でそれを実践する課題を与えていました。スポーツや言語と同じで、リーディングが上手くなったから話せるわけじゃないし、身体の使い方がわかったからと言って反射的にそれをできるかは別です。例えばシャドーボクシングとかも、正しい動きを反復するのが大事で、ただシャドーしていると変な癖の付いた効率の悪い力の入らない打ち方とか、手打ちで身体の力が活きない動きで脳が最適化されたりします。プログラミング教室では基礎のインプットとして授業があり、課題でのアウトプットにより、その知識を定着させて使いこなせるよう脳を最適化するわけです。課題をやらないと、頭を通り抜けて翌週には忘れます。課題をやるにしても、重要なポイントを意識しないでやると、できるけど理由はわからない、という曖昧な状態で、後々、致命的なエラーを起こすコードを書きかねません。

講師が好む生徒

これを出来の良い生徒とか質問を良くする生徒と勘違いする人が多いですが、個人的には「努力して成長する生徒」です。これを言ってしまうと、元々できる人は困るかもしれませんが、元々できる人は本当に全部知ってるなら受けに来るわけ無いですし、自分の新しく知った知識に関して、なぜ自分が知らなかったかを考察したり、新しくわかったことについて調べたり、知ってるからこその角度で質問したりすると、教える側にも学びがあります。アメリカの授業ではトップレベルの学生はこういうことが得意で、教師側も、それはやったことないから、確認する、と言って次の授業でFBをしたりしていました。講師が全部知ってるわけでもないので、時折、そういう質問があると、日本では無駄なプライドで変なことを口走ったりしますが、海外では双方向での学びの機会と喜びます。また、質問に関してはすればいいというわけじゃなくて、「それ、前に説明したよね」というのが中心だと、逆にちゃんと聞いてない生徒、となりかねません(ただし、1,2ヶ月前の話とかなら再確認としてOK。その場合、前に聞いた気がしますが、〜って、○○でしたっけ?とかどう動いてるんでしたっけ、という聞き方がpolite)。ちなみに最低の生徒はわかってるふりして全然わかってない生徒。授業のペースが壊れます。
自分でわからないことを努力して、わからない部分を説明しながら質問してもらえると、講師としては詰まりどころがわかるので、次の回に活かせます。元々あまりできなかった生徒が質問と課題への努力を通じてできるようになっていく、成長していくのは何度か書いたかも知れませんが、教育者の最大の喜びです。
というのも、自分が、数学とかの用語の分からない英語(プログラミング用語は最初から余裕でした)の授業で他専攻から大学院に入ったこともあり、数学力をかなり求められる授業では最初は落ちこぼれで、リーディングと質問で最後はクラスのトップレベルまでできるようになった(正直血尿出るんじゃないかくらい頑張りました)ことが何度かあって、最終的にA-位で終わって、教師にやけに気に入られた事があったりして、その気持ちが今はわかります。最初できないことは必ずしも悪いことではありません。ただし、最初から基礎がある人の何倍も努力しないといけないので、ちゃんと基礎は出来たほうが良いです。その経験からここでは基礎はちゃんと積み上げるべき、の思考を繰り返し書いています。

プログラミングは常に新しい発見ができる

大学院在学中の短期も含め、今の現場で3年位いますが、この1年半はcocos2dでC++を使っています。元々Javaはかなり使えて、大学院でCやPython, Haskellとか、Prologいじったので、C++JavaとCの知識であまり言語仕様をしっかり勉強せず、現場で使われてる書き方をリバースエンジニアリング(以下RE)で身につけた感じですが、最近、ガッチリ系エンジニアのコードを見て言語仕様をちゃんと学びだしたら、それまで自分が書いてたコードが稚拙に思えました。おそらくアルゴリズム的にはあっと思う部分もあっても、言語仕様が使いこなせてないからconstをあまり使ってなかったり、参照を他で使われてるやり方(キャッシュしてるマスタデータのエンティティの参照とか)しか使ってなかった部分がありました。後はconstexprとか。それにともなって色々論理式の使い方も見直しました。数学的なプログラミング、論理式の正しい使い方ができてるとコードが全然違うものになります。

論理式を使いこなす

ここからの例では最近使ってるcocos2dがベースですが、関数は名前見れば意味がわかるでしょう。_で始まるのはメンバ変数です。Node::setVisible(bool isVisible)はその要素の可視を設定して、要素を出したり消したりします。

if (classA.isVisible())
    _nodeA->setVisible(true);
else
    _nodeA->setVisible(false);

とかって、結構慣れてる10年選手のエンジニアでも思考停止してると書いちゃうんですが、trueの時にtrueを与えて、falseの時にfalseなら最初からsetVisibleに渡しちゃえよ、という話です。

_nodeA->setVisible(classA.isVisible());

これでいいじゃん。まぁ、可読性は多少落ちますが、これくらい読めなきゃプログラマ辞めちまえ、と思ったりします。
他にも、

enum class TabType {
    TAB_A = 0,
    TAB_B,
    TAB_C,
};

という定義があって、タブを切り替える関数で

void SceneA::setTab(TabType tabType)
{
    if (tabType == TabType::TAB_A)
    {
        _nodeTabA->setVisible(true);
        _nodeTabB->setVisible(false);
        _nodeTabC->setVisible(false);
    }
    else if (tabType == TabType::TAB_B)
    {
        _nodeTabA->setVisible(false);
        _nodeTabB->setVisible(true);
        _nodeTabC->setVisible(false);
    }
    else
    {
        _nodeTabA->setVisible(false);
        _nodeTabB->setVisible(false);
        _nodeTabC->setVisible(true);
    }
}

とか、もうこんなコードは見たくないんです。

void SceneA::setTab(TabType tabType)
{
    _nodeTabA->setVisible(tabType == TabType::TAB_A);
    _nodeTabB->setVisible(tabType == TabType::TAB_B);
    _nodeTabC->setVisible(tabType == TabType::TAB_C);
}

これでよくないですか?3択で1つしか取らないわけですから、対象のnodeだけが見えます。

数学的思考

何度か取り上げた1からNまでの等差数列の和

int sumByIdiot(int n)
{
    int sum = 0;
    for (int i = 1; i <= n; ++i)
        sum += i;

    return sum;
}
int sumByFormula(int n)
{
    return int(n * (n + 1) * 0.5);
}

がありますが、この辺は実はコンパイラが最適化してくれて両方同じ機械語に翻訳されたりします。
最近見た見たくないコード。

std::map<int, bool> visibleMap;
for (auto &data : result->visibleList())
{
    visibleMap[data.asInt()] = true;
}
for (int y = 0; y < result->numRows(); y++)
{
    for (int x = 0; x < result->numCols(); x++)
    {
        int index = y * result->numCols() + x;
        _imgParts->setVisible(x, y, visibleMap.count(index) == 0 ? false: visibleMap.at(index));
    }
}

これは開始地点から、x * y個に分かれた表示領域で渡された位置のみ表示するコード(初期値は全部visible=false)なんですが、これ、map必要ですか?おそらく、リストの数字からx, yを算出できなかったんだろうけど。これ見て、ああ、数学できないんだな、と思った。画像データってピクセルのstreamなので、開始位置から終了位置まで連続で情報が詰まってます。おそらく、画像関係の勉強した人や数学力のある人が書いたら、

for (const auto &data : result->visibleList())
{
    int index = data.asInt();
    int x = index % result->numCols();
    int y = index / result->numCols();
    _imgParts->setVisible(x, y, true);
}

indexとx, yは無名でもOK。x, yは割り算理解してれば算出できるわけです。割り算の本質と2次元配列のstreamのどちらかが理解できれば無駄な2重ループなんて書きません。

bitsetはすごく便利

std::bitset<n>は知る人ぞ知るプログラミングコンテストの強い味方ですが、これ、enumのグループ分けした判定とかでも強い味方です。
よくあるコード

enum class Cause {
    CAUSE_BY_AGE_A = 0,
    CAUSE_BY_AGE_B,
    CAUSE_BY_AGE_C,
    CAUSE_BY_AGE_D,
    CAUSE_BY_LIFESTYLE_A,
    CAUSE_BY_LIFESTYLE_B,
    CAUSE_BY_LIFESTYLE_C,
    // ... some 10 more causes
    SIZE,
};

bool isByAge(Cause cause)
{
    bool result = false;
    switch (cause)
    {
        case Cause::CAUSE_BY_AGE_A:
        case Cause::CAUSE_BY_AGE_B:
        case Cause::CAUSE_BY_AGE_C:
        case Cause::CAUSE_BY_AGE_D:
            result = true;
            break;
        default:
            break;
    }
    return result;
}

こんなのでswitchで並べたりする。bitsetを使うと

enum class Cause {
    // ... same as above
}
static constexpr size_t SIZE = static_cast<size_t>(Cause::SIZE);
static constexpr std::bitset<SIZE> CAUSE_BY_AGE = 
 std::bitset<SIZE>(1 << static_cast<int>(Cause::CAUSE_BY_AGE_A))
 | std::bitset<SIZE>(1 << static_cast<int>(Cause::CAUSE_BY_AGE_B))
 | std::bitset<SIZE>(1 << static_cast<int>(Cause::CAUSE_BY_AGE_C))
 | std::bitset<SIZE>(1 << static_cast<int>(Cause::CAUSE_BY_AGE_D));

static constexpr std::bitset<SIZE> CAUSE_BY_LIFESTYLE = 
 std::bitset<SIZE> (1 << static_cast<int>(Cause::CAUSE_BY_LIFESTYLE_A))
 | std::bitset<SIZE>(1 << static_cast<int>(Cause::CAUSE_BY_LIFESTYLE_B))
 | std::bitset<SIZE>(1 << static_cast<int>(Cause::CAUSE_BY_LIFESTYLE_C))

bool isByAge(case)
{
    return (CAUSE_BY_AGE & std::bitset<SIZE>(1 << cause)).any();
}

固定値の定義がくどめだけど、isByAgeはスッキリ。bitset<N>はN個のbitが並んでるデータ構造なので、boolがN個並んでるようなもの。なので、対象のenumの位置(enumの宣言で0だけしてるが、それ以降は1ずつ足されてる)にビットが立つ(1になる)ので、渡されたenum分左にシフトして論理積をすると、両方で1が立ってるときのみany()が1を返すわけです。1回AND回路通すだけで判定ができるってわけ。これ、例ではAGEとLIFESTYLEだけなんですが、AGE x 何か、LIFESTYLE x 何か位に要素が2つ3つなるとすごい便利です。
ちなみにプログラミングコンテストでよく使われるのはN個の数字が与えられて1〜N個の任意の組み合わせでmが作れるか、とかね。普通にやるとN個使った場合だけでN!通りあるんですが、O(N)で解けるという。この辺は説明してるところ結構あると思いますが、新しい数nでn個分左にシフトすると今ある数とnでできる全ての組み合わせがわかり、それと今ある数とnを合わせたものも論理和で足してあげれば、そこまである数値全てで作れる数に1が立つという。パッと聞いて理解できない人は論理値の理解が浅いので色々遊んで身につけて下さい。

Note始めます

最後ちょっと宣伝なんですが、プログラミング教室はもしかしたら始めないかも知れません。というのも、顎変形症の手術が夏前になってしまい、タイミングが微妙で、今の職場の契約が6月までで、延長せず、7月1ヶ月休んで外資系で8月から働こうかな、と思ってます。まぁ、世界トップ数社何個か受ければ受かるかな、という軽いノリです。当然準備もガッチリしてます。ですが、T社とかどうしようもないプログラミング教室が年商億稼いで、「使い物にならないプログラミングをマスターした即戦力エンジニア(Rubyに限る)」が大量発生するのが怖い。なので、C++を使って、プログラミングの基礎とオブジェクティブ指向やデータ構造、アルゴリズムが学べる講座をNoteで格安で販売してみようかな、と。筆不精なので、ちょっと自信ないけど…。1個の講座を短めに100円とか200円位で行こうと思ってるので気が向いたらよろしくお願いします。

スマホ依存は情弱を加速させる

プログラミング教室第2期も2ヶ月が終わりました。
プログラミングに関してできる人とできない人の差がある程度出てて、可能な時間でクラス分けるだけでなく、最初に簡単な実装テストをして、レベルで分けたほうが良かったかな、とも思っています。

実装はできるけど言語化(レポートで説明する)が弱い人や、プログラミング力はあるものの数学的な考え方になると詰まる人、真面目過ぎて時々融通が効かない人、色々です。ただ、学ぶ時に1番重要なのは失敗を恐れないことだと思います。

アメリカの語学学校で先生に言われて未だに残ってるのは「Learning is making mistakes.」的な言葉です。ロシア人の美人でメチャクチャ厳しいナディアという先生でした。間違ってもいい、積極的に発言しよう、間違った時にこそ学ぶことが多い。失敗を恐れるな、ということを習って、日本人が特に学習において苦手な部分だな、と思いました。わかってるかわかってないかは伝えないと講師にはわかりません。わからない時に何がわからないかを言語化して、自分の中でできないを理解することは非常に大事なことです。わからないけど、周りにわからないと思われるのが恥ずかしい、だから、黙ってる、となると負債が雪だるま式に大きくなってついていけなくなります。何故なら、理系は、特にCSは知識の積み上げです。下にあるものがわからないと上を積んでも簡単に崩れてしまいます。

それを避けるために毎週課題を出してもらって出来具合で理解度を図ろうと思ったのですが、1/3の人が無言で課題を提出しないという事態が発生しました。出してくれた人には苦手な部分を重点的に次の課題で補足したりとか試みましたが、提出のない人は全くわかってないと判断せざるを得ません。これも日本人の悪いところですが、完璧に、もしくは全部解けないと提出しようとしないところです。どこまでできて何に引っかかったか、それがわかれば次の授業で取り上げられます。質問もなく提出もないのでは何に引っかかったかもわかりません。努力は見せないと0と判断されます。努力しない人間を助けようと思う人はなかなかいないのではないでしょうか。努力してもできなかったなら、その苦悩が伝わればそれでいいんです。教える側として1番良い生徒は頑張る生徒、そして、努力して成長する生徒です。自分の一言で引っ掛かっていた壁を乗り越える瞬間を見るのは教育者にとって何より嬉しいことだと思います。

学習において1番ダメなのは理解できてないのに質問ができない状態です。理解できない時、何がわかってないか言語化することが大事です。自分の理解度を客観的に見て、ここがわかってないと伝えてもらえれば細かく教えるのですが、質問がないとわかってると判断して先に進みます。課題もできてるのかな、と思ったら、前日に無理です、とか提出自体なかったり…。

人は学ぼうという意志さえあれば何歳でも学べます。学習して1番の瞬間はわからないことがわかった瞬間だと思います。そのためには自分に厳しく、失敗を怖れないことが大事です。山を登るのは大変かもしれない。でも、頂上では息を飲むような風景に感動することができる。そのために、多少大変な課題でも挑み続けて欲しいな、と思います。

今回はスマホの話。ちなみにPixel2買いました。お手伝いに行ってる会社の検証端末で国内キャリア向けの端末もいじってますが、やっぱり純正はいい。日本のキャリアが関わった端末は親切の押しつけが満載で、そりゃ海外で勝負にならないや、と思いました。

スマホで人の脳は停止する

最近、スマホ子守と言われたりしますが、子供にスマホを与えて静かにさせて自分もスマホで遊んだり、子供のプログラミング教室もあって、小学生がスマホを電車でいじってたりしますが、2時間の学習効果が消える! やってはいけない脳の習慣 (青春新書インテリジェンス)という本があります。スマホを利用してる子供が2時間勉強しても全く勉強してない子供より成績が悪かった的な話です。

ure.pia.co.jp

この辺は脳科学的にも実証されてることで、スマホ利用後は脳の前頭前野が麻痺したような状態になって、理解力や判断力が落ちるそうです。だから、同じだけ、もしくはそれ以上勉強しても学力にならない。この領域はギャンブルとかでも活動が低下するみたいですが、要は中毒症状です。電車でスマホに夢中な人が降りる人を無視して出るのに邪魔なところで周りも見ずに通せんぼしてるのは、この辺の脳の活動が低下して判断力を失っている状態です。歩きスマホも同様ですね。通常、広がって歩いたら、広がってる方が避けるのに、避けるどころか、人にぶつかっても操作を続ける人がいっぱいいます。完全に脳が機能を失ってます。また、同じことを繰り返す状態は脳が働かないので、ソシャゲーのクエストループ状態は脳が停止してる状態です。脳は使わないとその脳番地が弱っていきます。最近ではスマホで買い物する人も多いですが、アフィリエイトの嘘ランキングやAmazonの売れ筋から欲しいと誘導されて買い物をしてる状態も脳科学的には思考停止してるらしいです。自分で判断してるつもりでも判断を作り出されて考えずにそれに従ってる状態。脳科学に興味ある人は↓も面白いです。

www.amazon.co.jp

つまり電車でも移動中もスマホをいじってる人は常に脳が働いてない状態です。これが1日2時間とかなってくると若くても脳が変形したり痴呆状態になったりするらしいです。デジタル認知症ってやつですね。

スマホが使える≠情弱じゃない

こんなにスマホを使いこなしてるのに、なんで情弱なんだ、というスマホ中毒の人がいそうですが、ユーザーとしてのスマホ利用は電子機器に詳しいわけでもなんでもありません。特にiPhoneは思想的に直感的に理解できるUIを心掛けてるので、バカでも使えるようになっています。バカどころか2才児ですらゲームや動画を自分で見れるとかよく聞きます。スマホアプリ開発者的には普通の話ですが。情報を得られる状況にあるのと情強であることは別の話です。それはデジタルディバイド的な話です。情報は集めることに価値があるわけじゃないです。情報を適切に短時間で収集し、それを整理して、アウトプットする、もしくはアウトプットできる状態に噛み砕くことでやっと血肉になります。そもそもが、ここのタイトルの通り、ネット上はゴミ情報だらけです。

しかも、ネットユーザーが増えてから結構経つので、古い情報もいっぱい混ざってます。ここの前にアメブロで書いてた記事が去年の秋頃からタグランキングに入ってるようです。1年以上前のT社のプログラミング教室に関する記事ですね。ランキングに入れてもらって毎日70アクセス位きてるようなのに申し訳ないのですが、1年以上昔の記事が今になってそんなにヒットするのもネットの情報が新鮮でない証拠です(Googleアルゴリズムが変わってステマ記事より僕のエントリーがヒットしやすくなってるのかも知れませんが)。

ネットで情報を探してて、まとめサイトをはしごして(よくある、リンクから一覧に飛ばされて、リンク探してやっと記事につくとか)結局、一般人の裏取りもない情報に辿り着くとかよくあると思いますが、それは正直、情報収集にすらなってない気がします。そんな愚かなことを歩きながらして、その方が効率いいとか言ってる人はもう、デジタル認知症状態でスマホに依存する理由を作りたいだけのように感じます。また、小さい端末に視線を集めてる状態も脳が停止する条件に合致するようで、電車の例だと、せめて駅につく度にホームの駅名とか車内の状況を見るなどして視覚情報から脳の動きを活性化させた方がいいと思います。たまに、結構降りてガラガラになってるのに、自分の周りだけ異常に人がいて全く動かないときとかありますよね…僕はプライベートスペース広いこともあり気持ち悪いので逃げますが。スマホと紙で同じ情報を見た場合、紙の方が圧倒的に理解度が高いとかって調査結果もあります。スマホは画面上で文字や画像が移動するので、その視覚情報を処理するので脳がフル稼働になって、理解して咀嚼する余力ないようです。やっぱファーストビューって大事みたい。

情報を扱うということ

情報は玉石混交でなんでも良いから集めれば良いわけじゃありません。特にネットで本当に重要な情報がゴミみたいな情報に隠されています。アフィリエイト詐欺とか情報商材とか簡単に月100万稼いだ、みたいな詐欺情報に躍らされるのは情報を集めて処理できない人が陥る落とし穴です。普通の人には見えてる落とし穴なんですが、情報を処理できない、周りが見えない人は穴が丸見えでも落ちるわけです。ネットで貴重な情報を得ようなんて掃き溜めで鶴を探しているようなもので、結果として折り鶴見つけて喜んで後でがっくりくるという。情報を得たいなら、本が1番です。校閲で誤字脱字や事実関係を確認して、Peer Reviewで情報の信憑性を確認した上で出版されています。毎日情報が更新されるような、某プログラミング教室の教材のような、質が悪いから直さなきゃいけない状況はそうそう起きません。ネットの情報は9割は間違ってる、というか不正確と思ってもいいでしょう。

また、情報は正しい情報を集めて、整理整頓して、しっかり理解して自分の論理回路に組み込むのが大事です。電車とか移動中は普通の人は情報を整理する時間に当てますが、電車でずっと、歩きながらもスマホをいじってる人は情報を整理したり、深く理解する時間はないでしょう。インプットし続けているので、どんどん情報が素通りするだけ。ゲームだとしたら情報すら入らず、脳の思考を整理したり、深く考える経路がどんどん細くなっていきます。調査によるとスマホ中毒の子供は脳が変形していたそうです。この辺はコミュニケーション不足も原因ですが。今、2人組で電車に乗っててもスマホなしには会話も進まない人達がいて、本当に怖いです。

greenteatime.net

満員電車や歩きながらスマホを使う人はこれと同じような現象が起きてると言われています。情報をひたすら入力して、情報の整理や熟考しない。情報への欲求だけが強くなってどんどん考える力がなくなって、学んだり判断する回路が抑制された状態が続く。情報を得てるのにどんどんバカになっていく状態です。判断力がどんどん落ちているので、それに気づかないし、中毒症状で何かしらの正当化も行われる。

そもそも人前でスマホをいじるのは恥ずかしいこと

先日、プログラミング教室に向かう途中でフリフリのフードの付いたピンクに水玉模様の…要するにパジャマの子とすれ違いました。横断歩道渡ってコンビニまで行くだけだから、ということでしょうが、土曜の13時前です。個人的には人前でスマホをいじってるのは、公道をパジャマで歩いてるのと同じように見えます。ゲームをやってる時の自分の顔を見たことがあるでしょうか?漫画で吹き出してる時とか。本来そういうのは家でプライベート空間でするもので、公の場で見せるべきものではないです。会社の機密情報の混ざったメールを見るとかもありえないですね。前述の様に、人が降りた車両でスマホに夢中で移動せず圧迫して来てるのが偶然取引先の人だったらどういう印象を受けるでしょうか?そもそもが、電車に乗ってて、すぐに返事しなきゃいけない状態って、乗車中に遅延が発生したときくらいですよね。待ち合わせでも、乗る前に乗車の車両がわかれば到着時間わかります。それを乗車前に伝えておけば、車内で連絡来ても見る必要ないし、混んでて見れなかったと言えば済むだけの話。相手から遅れるって連絡が来ても、降車後で十分だし、早く着くと連絡があっても、自分が頑張っても電車は早く着きません。乗車中にしきりに連絡を取るのは要は自分が段取りの悪い人間と主張してるようなものです。ただのSNS依存の部分も強いですが。

正直な話、自分はスマホの魅力で本場で勝負したいと思ってアメリカに渡ったこともあるので、スマホが広まった結果の、今の惨状がかなりつらいです。皆さん、スマホに考えることを移譲せず、便利なツールとして上手く付き合って下さい。便利な技術も依存すると人をバカにする悪魔の誘惑になります。

新年のご挨拶

今年は3月頃の手術後になりますが、プログラミング教室の本格始動(2〜3月に正規募集しての状況次第では事務所借りるかも)や、各種先端技術を使った開発も進めていきたいと思っています。このブログも技術者以外でも楽しめるような内容で、せめて月1では更新したいな、と・・・

そんな残念な嘆きからですが、2018年もよろしくお願い致します。
少しでも歪んだ情報に警鐘を鳴らして、より良いネットの世界を作っていけるように尽力したいと思います。また、色々面白いことを一緒にやってくれる人も募集しようかと思っています。

AI・機械学習を学びたいなら勉強会に行ってみよう

プログラミング教室第2期が動き出しました。結局6名教えることになって、一人一人話しを聞きながら、各個人の方向性や授業のスピード感を決めようと思っています。今回、応募者の中に、プログラミング教室の某T社で学んだ物の、応用が効かなかったり、全く使い物にならなかったという人も混ざっています。正直、僕がプログラミング教室が情報商材業界のような状態になっていることに気づいたのはT社がきっかけです。Life Hackerでインタビュー記事を見た。それを読んで、Life Hackerってガチでヤバイな、と思った。まともな業務経験がある人間だと?マークしか飛ばないような受け答えが続いて、T社の社長を褒めてた。結局、良く見たらそれはインタビューを模したT社の広告記事だったことに気づいて、この会社はステマで営業してる、とわかった。検索したら褒める記事ばかり。で、よく見ると、目的は紹介金だとわかった。T社で何も身に付かなかった。でも、紹介すれば無駄になった10数万が取り返せるかも知れない。嫌な思いしたのにミイラ取りがミイラになったわけです。嫌な思いをしたのに、嫌な思いをさせる側に回ったわけです(ヒカル風に言ってみた)。

最近、満員電車が駅について乗り込もうとして良く気づく。入口付近はぎゅうぎゅうなのに奥はガラガラで皆スマホをいじりながらスマホを突き出すスペースを取ってる。地方ではそこまでじゃないと思うけど、もし都心に住んでる読者の方で、ついつい電車でスマホをいじってしまう人は1日だけスマホを我慢して顔を上げて周りを見回して欲しい。自分の今までの行為がどれだけ恥ずかしくて周りが見えてなかったか、気づいて欲しい。そう思えた人はまだこっち側にいる。そう思えなかった人は中毒症状が出てるから病院に行くべきです。5年前、僕がアメリカに発つ前にはまったくなかった風景です。

スマホは便利です。ただし、それは「答えを見つける」ツールです。依存すると考える力がどんどん落ちていきます。デジタル認知症と言って、実際、認知症のように脳が縮むという研究もあったりします。技術は便利です。ただし、それは使いこなせてこそです。依存すると毒になってしまう。ここの読者やプログラミング教室の卒業生が技術の奴隷になるのでなく、技術と仲良くなって、一緒に楽しく働けるようになれる手助けをしたいと思っています。

で、T社のこともそうです。技術はすごい。でも毒になる。そのいい例です。良いのか悪いのか微妙だけど。T社の名前で検索すると、賞賛記事ばかり。でも、裏を見ると、あれは一種のアフィリエイトです。褒めないと紹介できないから嘘を書いてる。これが、ネット総発信者の弊害です。技術を使いこなすこと、情報を見極めること、それを意識してデジタル時代を生きて欲しいです。2期生の人に確認したら、やっぱりT社は独学をサポートするレベルで学生が教えてて微妙、という話でした。アメリカの大学でもTAがサポートはしますが授業はあくまで教授で、TAもほとんどがその先生の元でその分野の研究をしてる人です。個人的にはプログラミングを教えるなら業務経験が10年以上かせめてコンピューターサイエンス(CS)の学部卒レベルです。ちなみに、就労ビザとかの基準では業務経験3年が大学の1年に相当するので、結構甘めに言ってです。ただ、10年働いて分割統治法も知らないし、再帰とか使ったことない人もいるので、正直日本の業務経験は会社と内容によります。T社の関係者でW大の商学部でT社で教えてる方がアフリカでプログラミング教室を国と組んでやったらしいのですが、行動力は本当にすごいと思うものの、そんな経験で教えるとか、日本の恥になるので勘弁してくれ、と思いました。ITスペシャリストを名乗ってますが、どこまでわかるんだろ。うちの大学では大学院卒業に少なくとも3個の専門分野で指定の単位数取ってないと卒業できませんでした。なので、そこの院卒は最低3分野は専門的な知識がないと卒業できないんですが、スペシャリストを名乗る彼に質問したら、基礎的なことも答えられない気がします。CSをなめないで欲しい。自分の会社ではCS卒とか教えるのに十分だと思えるプログラマやデザイナーと、週の半分はIT教育に、残りの半分を研究に費やして、最新技術を使ったサービスを展開する会社を作りたいです。ちょっとビジネス寄りの学術機関に近い形態の組織というか。教える人間は常に最新技術を追うべきだし、それを形としてサービスにできる方がいい。そして、教わる側も最先端で開発をしてる人間に大学以外で教われる、そんな会社にしたいです。

あと、T社で1日10時間週6がイナズマコースとか言ってますけど、実務だと週に1度くらいは10時間越えるの普通ですよ。もし、25歳以下ならT社のプログラミング教室行くより、未経験可のシステム会社に行くことをお薦めします。僕は25歳未経験でシステム会社に中途で入社しましたが、1日8時間、給料をもらいながら2ヶ月半研修を受けました。まぁ、Javaで基本的な処理とServletを使った簡単なショッピングサイトをmySQLを使って作れる程度の知識にしかなりませんでしたが、給料もらいながら、です。あと、その後、現場に出て思ったのは一人でサービスを作る経験は現場でそんなに役に立たない、ということです。大抵、既に何千、何万ファイルのコードがあるところで開発をするので、コードを読んで理解する(リバースエンジニアリングと言います)のはすごい大事。簡単なシステムなら一人で作る方が簡単です。なので、一人で1から全部作った経験は実は、業務ではほとんど役に立ちません。

AIや機械学習を学ぶということ

と、話逸れまくっての本題になります。今回も応募者の中の数人がAIエンジニアになりたいと希望しています。一応機械学習は土台部分はしっかり勉強してきたので、何回か書いていますが、AIや機械学習を目指すなら学術機関に入るべきだ、と思っています。僕のいたアメリカの大学では学部4年で大学院生と一緒に機械学習の入門編が受講できます。それ以降は大学院で学ぶ内容になります。それはどういうことかというと、学部レベルのCSの知識、プログラミング能力、数学の知識は持っている状態で学ぶべき分野だということです。色んなプログラミング教室でAIを始めていますが、大抵が手を動かして(プログラミングを書いて)学ぶ、と言っていますが、そういう教室は絶対通ってはダメです。散財するハメになります。運営が全く学問的に理解できてない。CSの分野は大きく分けて2種類に分かれます。プログラミングがベースになっていてコード量が多いもの(CGとかアルゴリズムは結構書きます)と、理論が中心になっていて理解に時間がかかってコード自体は簡潔なもの(セキュリティとか情報理論)。

AIは後者であり、理論がしっかり理解できればコード量はそこまで多くありません。当然ですが、効率的なデータ構造の使い方がわかった上で、ですが。AIや機械学習ビッグデータの時代になって復活した古くから研究されている分野なので、ビッグデータによる学習がベースになります。データ構造とか効率的なアルゴリズムが書けないと、簡単に学習に1週間、1ヶ月かかるプログラミングが完成します。数学とか統計わからなくてもできる、とか謳ってる教室はそもそも講師が全く理論を理解していないので回避すべきです。そもそも理論がわかってないと、その解析や分析にどのモデルが適切かすらわからないと思います。AIとか機械学習ができればAIに仕事が取って代わられる時代でも食いっぱぐれないと思う人も多いかも知れませんが、AIが最初に置き換えるのはAIエンジニアが熟知してる、APIやライブラリを叩くだけのプログラミングでしょうね。情報を入力すればコードを吐いてくれる。ちなみに僕もcocos2dのコードは画面構成を対話式で入力すればテンプレートを出力するジェネレーターを作ったりしてます。半日でできるレベルです。

なので、僕のプログラミング教室で3ヶ月コースだと最後1ヶ月を使って、1,2個の機械学習のベースとなっている技術の実装に挑戦させたいと思っています。そこで、面白い、もっとやりたいと思うなら大学院目指して下さい。推薦状なら日本語でも英語でも書きます。最低限のセンスを見せて貰えれば、ですが…。

勉強会

機械学習に関してですが、まず東大が主催してる勉強会があります。機械学習のベースになっている事後確率を使ったベイズ理論を学べたりするもので、先日、AIの世界的権威の大阪大学の石黒教授の講演を聞いてきました。

実践的機械学習勉強会 | Doorkeeper

とか

人工知能研究会 / AIR | Doorkeeper

に参加して、入門カテゴリから学んでみるのがいいと思います。ただ、Pythonわかるレベルが参加条件になっていたりするので、その条件を満たすレベルの知識(多分余裕で超えますが)を学びたくて、僕のプログラミング教室にご参加頂くのは大歓迎です。基礎はPythonで、データ構造やアルゴリズムはCを交えて、オブジェクト指向に関してはC++とかJavaを使うつもりなので、土台はしっかり組めるはずです。その方向を志望なら、最後の課題は一緒にそちら方面から決めたいと思います。

ITの勉強会

実は結構IT系の勉強会っていっぱいあって、僕はガラケーのゲーム会社にいる時に日本Androidの会にお世話になっていて、色んな方と仲良くさせて頂きました。それこそ、Androidの本といえばこの人的な人が普通に無料の勉強会で講演をして、打ち上げでお話できて、名刺を交換したりFBで繋がったりするのが結構普通でした。今は活動が不定期になっていますが、毎月定例会があって、その度に飲んでAndroidの未来を語って、非常に良い会でした。イベントの実行委員に参加して、それもresumeに書いてアメリカも大学院に日本の文系学部卒で入学許可をもらえました。

というわけで、AIとかプログラミング業界に興味があったら、まずは無料の勉強会に参加してみることをお薦めします。当然プログラミング教室と繋がってないやつね。つながってると洗脳とかくるのでご注意を!