渡るネットは嘘ばかり

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

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

お久しぶりです。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とかプログラミング業界に興味があったら、まずは無料の勉強会に参加してみることをお薦めします。当然プログラミング教室と繋がってないやつね。つながってると洗脳とかくるのでご注意を!

プログラミング教室の宣伝も胡散臭いネットビジネスの手法だらけ

プログラミング教室関連リアルタイムネタは削除しました。

この回にご応募頂いた方のアンケートの中には、ここでも取り上げてるプログラミング教室で痛い目にあった方や現在も受講中の方もいるようで…基本的にカリキュラム的に金額に見合ってない趣味にしか思えないとこしか取り上げてないですからね…。何故かクラウド契約させられるところも結構あるんですが、インフラエンジニアを目指すのでなければ、エンジニアが複数人いるところで新人がクラウドの契約や管理を行うことはまずありません。セキュリティとか安定稼働に関わる部分ですし、ミスが損害につながりやすい部分です。クラウド使うにしても、払った費用から教室側が契約して、VPNとか設定して、このIPでSSH接続して、とか伝えるべきです。それで、期間終了後は教室側で解約する。この辺やらせる教室は講師にまともな経験ない可能性が高いです。中規模(100人以上)の会社とか、大手に出向したエンジニアなら間違いなくダメ出ししますから。例えば、スタートアップしか関わったことない(エンジニアが2,3人しかいない環境)とかなんでしょう。確かに、クラウド上でウェブサービス公開したら何かを作った実感は得られるかも知れませんが、クラウドRailsみたいなフレームワーク同様、クラウドサービス提供側がいろいろな設定を便利にやってくれたりしますから、本来、クラウドに移行する前に知っておくべき知識が学べないし、そもそも実務では経験豊富な運用担当のインフラエンジニアが触る部分でプログラマの仕事ではありません。知ってて損はないと思うけど、教室で習って実務で数年いじらなかったら忘れるだろうし、逆に、プログラマになろうとしたのにインフラエンジニアを任されてプログラムはJenkinsとかジョブ管理中心のしか書かないことになったりするかも。そういう教室は数人でスタートアップとしてサービスを立ち上げてエンジニアが1人か2人位、下手したら1人で起業するのに特化した内容なので、そういう目的じゃない人は避けたほうがいいです。プログラミングや理論部分が薄れるだけです。

で、今回はアンケートを受けて、ヒカルがYouTube情報商材屋の手法を使ってたみたいに、胡散臭い系のプログラミング教室もアフィリエイトの手法だらけだな、と思ったので簡単に触れます。

何度も比較記事とかで自社を薦めるT社

典型的な詐欺アフィリエイトの手法として、事実関係なくランキングを勝手に作って1位とか上位にアフィリエイトのリンクを貼るとか比較記事で優位に書くのが問題になって、日本アフィリエイト協議会が警告を去年出してましたが、同じことをこの会社はしょっちゅうやってます。これは自社なのでアフィリエイトではないですが、いわゆるステマ記事というものですね。自社なら弊社プログラムでは、とか言えばいいのに、下記ページとか最初にお薦めしてますが、弊社の文字は全く無いですね。

tech-camp.in

システムエンジニアの役割もわからないT社

なんでまともな業務経験のない人に自社のPR兼ねた記事書かすんですかね。まぁ、当然チェック入れてるんだろうから、経営陣もわかってないんだろうけど。

tech-camp.in

あまりIT業界を知らない人にとっては、システムエンジニア(SE)とプログラマーの違いがわかりにくいかもしれません。

昔であれば、システムエンジニアプログラマーといえば銀行の管理システム構築や法人の大規模なデータ管理などの業務が主でした。

ごめん、君もわかってないからwプロジェクトマネージャとかプロジェクトリーダーとか知ってるんでしょうか…。マネジメント職とエンジニア職の違いすらわかってないやんけ。まぁ、日本では文系が多い時代に文系優位に作られた謎キャリアパスがありますからね…。システムエンジニアの主な仕事はその名の通りシステムをエンジニアリングすることですよ。マネジメントちゃうよ。何故か日本では話すことがエンジニアリングの中心になってるようで、BtoBでは顧客と折衝とか、意味不明な設計書という名の説明書を下請けに丸投げするのがSEの主な仕事ですね。ちゃんとしたところだと、実装のイメージの付く設計書、要はシステムの設計図を書いて実際プログラムを書く人達に引き継いだり、自分で共通部分書いたりしますね。まぁ、たいていが顧客と実装者の間で伝言ゲームする人です。個人的には日本しかない役職なので文系エンジニアの別称、と呼んでたりします。海外ではプログラマがやってる仕事をプログラマは話せないから、とか言って切り抜いてる仕事がSEだったりします。ホント、SEって呼ばれるの嫌いです。それは置いといて、こういう記事もステマアフィリエイトの手法ですね。知識ある人がお薦めしてる風を装ったりして誘導するやつ。

tech-camp.in

AI(人工知能)は「人工的に作られた人間のような脳を持つ機械」の総称です。ここまではなんとなく理解している方がほとんどかと思います。

お前が理解してないw脳を持つ機械って、ガチですか?この会社は誰一人自社の出す記事をチェックしていないんだろうか?プログラミング長く書いてると、なんとなく見ているコードに違和感を感じるようになります。そして、違和感を感じた箇所からたいていバグが出たりします。AIビジネス事情とか、ガチでググった内容話してるだけ、とかこの会社ならありそうだな・・・。

ここでもAI教えるらしい…冗談きつすぎる

クソみたいな記事を読んでたらびっくりしたのですが、

TECH::CAMPではいよいよ10/12(木)からAI(人工知能)コースが開講します。

プログラミング知識はもちろん、初心者にとって難しい数学や統計の知識は不要です。コードを書きながらAIの基本知識を実践的に学ぶことができます。

おいおい、マジですか。ここもAPI叩いたら動いたからってAI教えちゃうのか。なんか、卵が先か鶏が先か的な話になるけど、API叩けば動くプログラムってさ、AIに取って代わられる最初の仕事な気がしないでもない…。人工知能どころか人工無能でできるやつですね…単なる自動生成。統計も数学も分からないでいじるんでしょ?まさに人じゃなくていいやつですね。てか、お前ら、絶対まともにAI習ったことないだろ…。どうせ、scikit-learnとか使って、Irisを分類できて喜んでるレベルな気がしないでもない。そもそも、ガチの学習させると半日とか1日学習にかかったりするので、理論わからずに適当に叩くと、半日後に涙目になりますからねwまぁ、前述の

「人工的に作られた人間のような脳を持つ機械」

という説明だと、彼らの脳を持つ機械はスーパーコンピューターより速いかも知れないけどwあれ、AIコースって脳を持つ機械を作る電子工作コースですか?( ゚д゚)

冗談は置いておいて、この人達、ブラックボックス平気で使いこなせると言っていじる人達ですかね。つまり、銃とか、身を守るために買って、使わないでメンテナンスもしないで放置して、いざという時に暴発させて自爆するタイプの人達ですね。怖い怖い。ちゃんとした知識ないと身を守るための物で身を滅ぼすこともありえるんですよ。日本人には銃は身近じゃないので、身近な例を出すと、テレビ見るのにテレビの仕組みを知る必要はない、使い方さえ知ってればいい、壊れたら叩けばいいんだ、とか言ってる人。たまにAPIとかフレームワークの中身知って使うべきだ、って論争でテレビ出す人いますけど、この例でテレビ見る人はユーザーでプログラマはテレビ作ったり直す人だからね。テレビ見るのに〜、っての見るとあちゃー。ユーザーにプログラム書かす気か、この人は、と思ったりする。APIのユーザーって観点だと、テレビは完成品なので、ブラウザみたいなもんで、そもそも不適切で、APIは昔だとアンテナとかリモコンかな。正しく使わないとちゃんと動かない。ある程度の原理は知ってるでしょ。向ける方向とか距離とかさ。これ、完璧にしっくり来ないけど、使うのはユーザー、使いこなすのがエンジニアだと思う。ユーザーの上級者目指すわけじゃないですよね。

テレビの例はあまり適切じゃないですね。例えば何でも屋に依頼すれば、どんなことでもやってくれると頼んでたら、実は毎回犯罪行為してた、とかなのかな。

百歩譲って、APIを使う人が100%中身を理解してる必要はない(大まかには理解したほうが良いけど)としても、教える側は理解してないとダメだよね。

www.amazon.co.jp

せめてこの本は理解してから教えようね

例えば、予備校の日本史の教師に「この年にこの事件が起きた因果関係がよくわからない」って質問して、「私はその時代の人間じゃないからなんでかなんてわからない(APIを作ったプログラマじゃないから知らない)。でも、年表(API)という便利なツールがある。これの使い方がわかれば歴史の流れがわかる。すごいだろ。」とか言われたら、だめだこりゃ、って思いませんか?俺もわからん。でも、覚えろ。覚えれば点が取れる、これでいいのだ、的な。歴史を学ぶことって年表を覚えること自体に意味があるのでなくて、そういう流れが起きる因果関係とか、その時代の人達の心情を知ることによって、良いところを学んだり、悪い歴史は繰り返さないようにすることが大事なんじゃないんですかね。まぁ、歴女はキュンキュンしたりするのかも知れないけど。APIの使い方を覚えるのは年表を覚える程度の意味しかないと思います。本質がわかってないから、簡単にバグらせますよ。そして、ブラックボックスのまま使ってたらバグった時直せないよね。

ここVRもUnityのチュートリアルレベルで教えてるっぽいし…。ちなみに、近々、Computer Scienceのマップを作って掲載しようと思うんですが、機械学習とかAIの領域はかなり理論寄りだと思っています。何度でも書くけど理論側は理論を理解することが大事で、大学院にいた時、機械学習の課題とかは5日間リーディングに費やして5時間でプログラミングを書き上げる、というようなことがよくありました。理解することが大変で、わかってしまえば簡単になる。そういう領域です。コードを書きながら…ってさぁ、そもそもエンジニアリングの基本もわかってないじゃんか。重めの学習プログラムも組んだことないの丸出しだしね。システム業界ですら設計しようとするし(実態は全く設計になってない文系の書類なんですが)、負荷試験とか見積もりするわけだけど、見切りでできるとか言ったらダメでしょ。やっぱダメでした=詐欺ですよ。

オリジナルアプリを企画制作するのがプログラマ

かなりの謎としては多くの前線の人が関わってない、経営者がガチエンジニアじゃなかった教室でオリジナルアプリ制作をさせられ、ひどいところではそれがいい教室の条件とか自画自賛で言っちゃってたりします。

www.sejuku.net

スクール選びにおいてもオリジナルアプリ開発までしっかりサポートしてくれるかということも大きなポイントになってきます。

何を言ってるんですかね…。制作現場で働いたことあるんだろうか…。エンジニアは企画職ではありません。自分で企画して、一から全部作るようなところは数人規模のスタートアップくらいです。1人で作れるものなんてたかが知れてます。チームでそれぞれのプロが組んで作るのが業務としての開発です。一人で全部作るのは趣味ですよ。たまにスーパープログラマっているけど、スーパープログラマは教室なんて行かないでも簡単に作っちゃうゆえにスーパーなんですよ…。ちなみに雇われる側としては100人以上の規模の会社しか入ったことないけど 、エンジニアが企画することはめったにない(業務効率化のツールとかはよくありますが)です。イベントで、くらい。ハッカソンとか。

ちなみに上記のページたまに

f:id:masa-lab:20171016085340p:plain

こんなん出ちゃってるけどいいんだろうか…これさ、完全に見えちゃいけない表示ですよね。エラーハンドリングもまともにできないで人に教えてんのか…。即戦力エンジニア雇って改修した方がいいんじゃないか?せめて「人多杉」くらい出しましょうよ。こういう、できる振り、優秀な人材の振りって商材屋得意の儲かってる振り、みたいなもんですね。

 

今日はとりあえず、この辺で。と言うかツッコミどころ多すぎて収集つきません。 

プログラミング教室第2期生(2名)募集します

先月働きまくって残業代(超過作業分の追加発注扱い)が結構いったので、3Dプリンタを買いました。最初の印刷は小さすぎたのもあり、1層目が剥がれてそこからはノズルの先で玉になってしまいました…。スティックのりを付けるって聞いてたけど、そういうことですね。色々小物作ってます。

プログラミング教室の題材でDBの資料をまとめてた時に某侍うんちゃらのページをうっかり見てしまい(プログラミング教室の技術情報ページは誤りが異常に多い)、データベース管理システムをDBSと略してるのを見て、そっとページを閉じました。Database Management SystemでDBMSでしょ。管理除いてどうすんねん…。どう考えても普段DBいじってないですね。あと、基本的にabbrebiation使う場合、元の語を意識できたほうがいいです。流石にManagementを忘れる人はそうそうおらんと思うけど、DFS(Depth First Search)とかBFS(Breadth First Serch)とかLIFO(Last In First Out), FIFO(First In First Out)辺りは覚えてたほうが良い気がする。スペルミスとかは置いといて。意味と繋がるし。
にしても、書いてる人インストラクタって書いてあったけど、ガチですごいな…CSの学部3年の方が知識ある気がするけど…。技術情報のページの全部が合ってる必要はないけど、DBMSとか最低限合ってるべきレベルです。

プログラミング教室1期生を教えてみて

プログラミング教室のモニターを2人取ってモニター参加して頂きましたが、やはり、モニターが無料であることの問題点を感じたりもします。俺は一学期、90〜100万位払ってアメリカの大学院に通っていました。自費でです。返済不要の奨学金をもらったりもしていたんですが、それでも大変で、1円も無駄にならないように頑張ろうと、全ての課題で満点を目指してました。満点を取れるというのは教師がわかって欲しいと思ったことを100%理解できたという証明だと思っていました。そこを目指して欲しいんですよね。無料だし、できなければできなくていいか、と思わないで欲しい。少なくとも努力の形は見せて欲しいんですよね。俺は出してる宿題の3〜5倍の量をやってきたので、無理な”量”ではないと思っています。1教科だけなわけだし。僕は3,4教科取って、1個に付今回出してる2〜5倍の課題やってました。まぁ、他に仕事があったり学校があるのはわかります。ただ、少し背伸びすれば届くレベルの問題を出してるつもりなので、毎日30分〜1時間程度、しっかり時間をかけて問題を理解して解いて欲しいな、と。また、モニターとして無料で教えてる関係上、なるべく継続的に授業を受けて欲しいんですよね。最低週1は参加して欲しいし、時間も調整します。2週間とか開けられるとこちらとしても中々来年の開始に影響出てきます。なので、その辺はモニター参加条件に盛り込みたいな、と。

内容としては1ヶ月でだいたい基本的なアルゴリズム(再帰、分割統治法、動的計画法)あたりをやって、データ構造もスタック、キュー、配列、連結リスト、ツリー、グラフあたりを教えて、その他、入出力あたりを教えています。統計とか分析計進みたい人には最終課題にベイズ分類器の問題を出して、そこに繋がる知識を教えたりしています。

わからないことを理解する仕組みが必要

学習するということは失敗すること。アメリカの語学学校で習って1番いいな、と思った言葉です。失敗は恥じることではありません。語学学校で知り合った全く英語できず、中学レベルも理解できれない一番下のレベルに入った奴が、誰よりも積極的に欧米人に話しかけて、失敗を積み重ねて学んでいるのを見て、こいつはすごい、と思った。彼とその後会社を作ったわけですが、自己都合で一旦離れてそのままになってたりします。またいっしょに面白いことをしたいので、近日中に会うつもりですが、それは置いておいて、日本人は何がわからないか理解すること、伝えることがすごく苦手に思います。失敗も恐れるから、わかってる体で進めると全くわかってなかったりします。だから、授業の最初に復習で対話で問題を出して答えてもらったりしましたが、そういうのはすごく大事だと思いました。課題を出して不正解だったとして、すでに次のトピックに行ってしまってるので戻るに戻れなかったりも。現状、わからないことを視覚化するのが課題です。家庭教師とかに近いマンツーマンでやってるので、分からない部分を補足するのはそんなに大変な話ではありません。

知らないとできない

独学系のプログラミング教室(オンラインで学習してわからないとこを聞く)だと、データ構造やアルゴリズムの基本的な理解ができてないと思われるところが多いです。例えば、O(log n)で、と言われたら分割統治法使うのかな、とか、Brute Forceで3重ループになる問題をO(n2)とかO(n)で解くとしたら動的計画法か貪欲法かな、とか。引き出しは多いほうがいいし、方法に直結するには反復練習が必要。脳の回路を最適化して、問題の理解を手法に早く紐付けられるようにする。ただね、知らない知識はいわば道のない土地のようなもので、整地して道を作るのが学ぶ、知るという行為。道のないところは通りようがない。アルゴリズムの手法とかデータ構造とか知ることで始めて道が通る。そこを頻繁に利用することで道が固まり、交通量が多くなれば道は広くなってより多くのトラフィックが流れ込む。そういうことです。知ることはすごく大事。

独学の弊害

独学の基本は必要とすることのつまみ食いです。コレをやりたい、でググったり本を読んでそれをできるようにする。だから、やろうとしたことしか知り得ません。実際のところ、大抵のことは実装するだけなら慣れれば誰でもできます。動くけど業界の人間は誰もやらないような書き方なんてそこら中にあるわけで、実際現場でソース見てもひどいコードは散見されます。残念ながら今はビッグデータの時代、スマホ1人1台の時代です。動くだけのシステムはデータやユーザーが大規模になると簡単に火を吹いて落ちます。最低限の知識は身につけるべきだし、ある程度の企業はそれが求められないエンジニアは雇わないと思います。だから、Googleとか外資はプログラミングのテストしますしね。CS卒が当たり前なので、アルゴリズムとか数学的な思考ができるか確認するわけです。独学で自分が必要なことを学べるのは素晴らしいです。ただし、それで過信してはいけない。独学はあくまでつまみ食い。プロの一線で業界を見てない、そこまでたどり着いてない人間が言う即戦力は前線からすると初心者、独学しかしてない人間は悪癖持ちの可能性すらあります。教室で習って学べることは基本的に講師のレベルが上限になります。稀に講師を越えてしまう生徒もいるけど。なので、講師の知識や経験が限定的であれば、汎用的な能力は身につきません。Cを理解したプログラマRubyとかPythonとか簡単に使えるけど(内部でCラップしてる→CはOSのシステムコールをラップしてたりする、なので)、Rubyしかわからない人がC書こうとしたら文字列関連もまともに処理できないんじゃないかな…。未だにC++使う現場は結構あるし。まぁ、独学の人から教わるとしたら趣味目的なら良いんだろうけどね。プラモしか作ったことない人に車の作り方教わるとかありえないのと同じ。そういうプログラミング教室出身者が実務も経ずに教える側に回るとか言語道断です。

モニター第2期生の募集

それで、今月末で2人は終了するので、2期生を募集します。
条件としては、週1か2で継続的に授業を受けられること。期間は1ヶ月と3ヶ月どちらか。費用は真剣にやって欲しいこともあり、今回から1万円/月いただこうと思います。ある程度資料も揃ってきたので。

内容としては

辺りは基礎として1ヶ月で教えたいです。アルゴリズムとかデータ構造は網羅できないので重要な項目だけ。それ以降は興味に応じて

辺りかなぁ。まぁ、走りすぎてもついてけないと思うので少しずつ。課題多めで手を動かしながら知識を実践に落とし込んで学んでもらう形で。言語はpython, C, C++, Java辺りを中心に目指す業界に応じて選択します。できれば2言語位使える様にしたい。

というわけで、また近日中に募集かけます。今回は2名同じ時間でペアプログラミングとかの導入試してみたい。

ヒカルに罪悪感がないのは当たり前

お久しぶりです。フリーランスの現場で仲良い人がマネージャになって、結構重めの案件が振られることが多くなってひいひい言いながら、動画編集きついわー、人雇いたい、と思いながらプログラミング教室も進めてます。多分、今が1番忙しい時期です。

で、自称王座の似合うカリスマYouTuberヒカルに関してですが、クソみたいなトレンドブログだらけになってきて、俺は別にアクセス数増やすために書いてるわけじゃないので、これで一旦終わりにします。興味ないの丸出し、のゴミブログ多すぎ。金のためにトレンドブログとか書いてる連中はいわゆるヒカルが商材屋時代に騙されてた層ですね。ヒカル騒動前から情報商材は詐欺、YouTuberが広告にもならないのに悪ふざけで金を稼げる社会どうなのよ、というエントリーをしてたので、その延長線上です。

個人的には、騙しても捕まらなければ勝ちとか上手いことやって流れに乗って遊びながら暮らしたい、とかって考え方全く賛同できないんですよね。仕事は博打じゃない。遊びを仕事にするというより、仕事を遊びにしたい人なので、ちゃんと技術や経験を積み上げて、仕事をもっと楽しくして遊びまで昇華しちゃえば仕事も楽しみの一つになるわけです。楽しみながら働いてたら結構収入良い部類になってたので、そういう働き方を強く押したい。

日本人は海外と違って専門分野以外に就職する方が多いので、仕事好きじゃない人が多過ぎる。これは本当に不幸なこと。もっと不幸なのは金のためだけに仕事をすること。それは金の奴隷です。金に使われる側の人間は基本的に金持ちにはなれないでしょう。一時の大儲けできる時期があっても金の奴隷になってる人は大抵制度が変わったり、世の中の流れで簡単に没落します。法の穴を突いても方が整備されたら、経験が0に戻るし、収入もなくなります。ヒカルみたいに法の穴を見つけては突いてるのはものすごく不毛な人生に思えます。詐欺以外の仕事したことないから、VALUの件も違法じゃないのになんで叩かれるのか、本気で理解できてないでしょうね。今後、謝罪しても、悪いと思ったというより、バッシングから逃げたいという理由だけだと思います。だって、彼にとってお金を稼ぐことって、違法にならない範囲で上手いこと人からお金を出させることでしょ?

この炎上は質が悪い

この炎上は不倫とかの炎上とは根本的に質が違う不倫騒動は痴情のもつれで本来、関係者以外口出しできない。民法で争えても刑法的には全くどうでもいい話です。それに対し、詐欺は刑法の領域でいわゆる犯罪です。そして、詐欺が厄介なのは立証が非常に難しいことです。だから悪徳商法とかがのさばるわけで。結婚詐欺とかも規模によっては立件難しいんじゃないかな。普通に、書類無しで金を婚約者に出してもらったとか買ってもらったとか。

ただ、詐欺が立件が難しいかわり、通常、騙されたと思う人が複数いて、どっちとも取れてもそれに誘導するような行為、詐欺行為といいましょうか、があれば、社会的には詐欺師、と呼ばれる事になります。今回のヒカルの行為は完全に詐欺行為であり、争っても負けないように「VALUで動く」とか、どっちにも取れるような発言をしたり、インサイダーじゃないのは確認してる発言があったり、明らかに故意と思われます。ただし、推定の範囲を越えないので裁判だと裁判官次第な気がします。

まぁ、普通に考えてVALUで一気に動くって言って売り抜けとかって思わないですよね。応援してくれる人間を裏切るような行為ですし。VALUが寄付だとしても、仕組み上基本的には寄付してくれた人が恩恵を受けられるように通常優待をつけるものですが、優待無しで寄付を受けるとか…乞食行為ですよね、それって。

いわゆる、VALU騒動だけとっても社会的には悪と判断し得る行為です。これに対して反応するのは通常の不倫とかで炎上を起こしてる、目が合っただけで殴りかかってくるような欲求不満の憂さ晴らしの人達ではなく、真面目に働いてる人が多いと思われます。炎上に参加するの初めてな人も多いんじゃないでしょうか?社会を狂わしてる詐欺的な行為を行ってる(過去もずっと)人間がカリスマを名乗って有名人になって、子供みたいなノリの動画で稼いでると知ったら、癪に障る人も多いでしょう。特に真面目に働いてる人に、YouTubeで動画アップしてるだけで5億とか、その金でプレゼントばら撒いて(実際はプレゼント詐欺で空箱で身内数人に配って回収してるという噂が濃厚ですが→後述)、そんな札束で子供の頬を叩くようなやり方許せない、と思う人がいるのは当然です。

信者も大きな要因の一つ

ヒカル信者は正直、犯罪予備軍に思えます。詐欺は許されないというのが社会の常識ですが、この人達にとって詐欺は友達に付く嘘と同レベルに感じてるように思えます。

 もう、気が狂ってるとしか思えません。1回って、ヒカルの職歴、詐欺(悪徳商法含む)しかないんですけどね。

詐欺ぐらい誰でもする、とか言ってた人もいたし、ちょっと、信者を軽く見た感じ、定職についてない夜の仕事とか学生、子供が多いですね。善悪の判断ができてない。真面目に毎日定時に会社に行って誰でもできるようなことしてる人はかっこ悪い、学歴なくても動画で有名になってゲーム機をくれるヒカルくんの方がかっこいい、みたいな。思考回路が5歳で止まってないですか?プレゼントくれる親戚大好き、みたいな子供の、正直大人がやったら乞食的な思考にしか思えません。

被害者以外口出しするなというコメント

信者がよく言う言葉ですが、これが不倫ならその通り。当事者間の問題です。ただ、詐欺は社会問題なんですよね。また、被害者の範囲が異常に広い。不倫だと、当事者の相手と家族。自分の家族もですかね。ただ、同じカテゴリの人間が責められることってないですよね。同カテって結婚して、他で恋愛してる人?
ヒカルの場合、当然ですが、VALU被害者。特に応援してた人の被害は半端じゃないですよね。YouTubeだと真面目にやってるテキ屋の関係者、ドリームガチャの業者とか、それに、遡って商材詐欺被害者。さらには、原発派遣被害者。で、モジコ被害者(結構亡くなってる気も)が直接の被害者ですかね。間接的な被害者として、ネットビジネスをするすべての人、IT系フリーランス、真面目なYouTuber辺りは風評被害ありますよね。仙台でフリーランスのITエンジニアやってると言ったら、胡散臭いと言われました。商材屋とかのせいだよ、完全に。トレンドブログ薦めてたようなので(後述:下克上)、言ってしまえば、最近ネットで調べ物するとクソみたいなゴミブログばっか引っかかる、と感じる人。後は同郷の人とか…エンゼルフレンチとか。これ、かなり広域に渡ります。特にweb系のIT業者。ヒカルの関わってきた業界っていうのは、かなりヘイトを溜めてる。累計5億ガバスぐらいあるんじゃないですかね。そこから出てきた自称カリスマのビッグマウスです。標的にならないわけがない。

信者よ、待てよ、プレゼント本当に配ってんのか?

詳細は他にいっぱい書いてあるとこがあるので、ご参照下さい。保証書欄の商品証明する部分の印字がないとか、当選者の報告も笑っちゃうくらいそこ送り状で隠してたり、そもそも当たった人の写真の絨毯が一緒(住所隠してるのが違うだけ?)とか、送り状に送り主部分が付いてたり、もう、舐めてますよね。元々、老人をはめる40万のFAX、モジコを売ったり(情報的に175人以上は騙されてる)、情弱を鴨にする情報商材をやってた人間なので、簡単に騙せると思ったのでしょうが、twitterとかは平均すると普通程度に頭の良い人が多いので、騙されるわけがありません。

ちなみにモジコは↓

www.youtube.com

「確実に普及します」これ、40万って、10代でこんなの老人に売って心痛まない時点で社会人として始まりから終わってます。その後、借金してアフィリエイト業界に行って情報商材を売り出すわけですが、借金の原因って、原発派遣でヤクザに詰められたみたいですね。おそらく得意のトークで騙して原発に派遣に出して、法外なマージンを取ろうとしたところ、その業界に根付いたヤクザにばれたか、派遣労働者にバレて逃げられて穴空いた賠償か、何にせよ、闇を突いた印象です。

そこから、アフィリエイト金髪起業家が出てくるわけですが。

www.tokyo-inspire.com

下克上(笑)。真面目に働かない人が好きな言葉の上位に入る言葉ですね。若い内に稼げないのは普通です。知識も経験も勘もないからね。コツコツやってきた人間が30代から稼げるようになって40代にはお金に不自由しなくなる。結構、日本の社会人ってそんな感じです。業界次第だけど。繰り返しても積まない業界もある。でも、若い内から稼ごうとする人は水商売か詐欺方面に行きますね。個人的にはこのルートの人達のヒーローがヒカルです。だから、詐欺をしても応援し続けます。だって、詐欺が普通なクラスタの人たちですから。

この頃からビッグマウスの嘘つき。月1000万だそうですが、最近の動画でタワマンでびっくりした声を上げてますが、すみません、ここだけの話、俺、タワマン住んでます。大学院時代、休みの度に結構稼いでて、1年休学した時に1000万位年収がいったのをベースに審査通りました。その時、貯金も見せたのですが、収入だけで信用出来ない場合、貯金も有力な判断基準になるようです。一応2年住めるくらいの貯金はありました。で、月収1000万の情報商材クラスタって、得意のヒルズじゃないですか?いわゆるネオヒルズ族。Y沢閣下を筆頭に秒速で詐欺る人とか投資だけで稼いだ人達ですね。ヒカルも成金趣味ですし、本当に継続して稼いでたら、今頃住まいは5万のマンションでなくヒルズ界隈じゃないですかね。

情報商材の人って、アフィリエイトとか自分が稼いだ方法とか言ってますけど、たいてい自分のページ見せないですよね。実際そこで稼いでないから見せられないんでしょうけど、普通なら、このページの作者で、ここで稼いでるノウハウ教えます、って、アクセスバンバン来て売れまくってるサイトでやりますが、商材屋って、自分が稼いだってアフィサイトはないんですよ。だって、稼いでないもん。アフィで稼げないのを知って、商材買ってみて、クソ情報掴んで、逆に、商材の子ネズミになるか、自分がネズミになろうとするんですよね。どうでもいいけど、ヒカルって○○○男に似てる気が・・。

要は、グレー詐欺とか真面目に働きたくない、違法じゃなければ、何やってもいいし稼いだもの勝ち、願わくば楽して稼ぎたい、という思想の人達の王がヒカルなわけです。

あれ、なんかヒカルのYouTubeの手法情報商材とかMLMに似てない?

そう、結局、情報商材の詐欺のブランディング手法ですよね。金持ちに見せて憧れさせる。騙しても、それが事実になれば嘘じゃない。Y沢が最初に駆け上がった手法です。グレー詐欺上等クラスタは、とりわけ実弾に弱い。現金を見てしまうと金持ちと思って、尊敬したりします。それが本人の金か疑うこともなく。AbemaTVですら、情報のソースにWikipedia出しちゃうくらいですからね、この国では情報を信用する基準を習ってないんです。海外では授業でプレゼンがいっぱいあります。プレゼンの基本はEthos, Logos, Pathosって要は権威的な部分やロジカルな部分、感情に訴えかける部分で人を説得するわけですが、日本人はPathos、要は感情だけで判断する人が多い。楽して稼ぎたいクラスタはLogosは期待できません。論理回路故障してますから。

Home - Ethos, Pathos, and Logos, the Modes of Persuasion ‒ Explanation and Examples

MLMアムウェイとかもそんな感じですよね。パーティとか誘ったり、羽振りの良いところを見せて、実はこれで稼いでるんだよ、と誘う。実際は自転車操業なんですが。金使わないと稼げないのに稼げるのを期待するとか、もう、そろばんバグってます。-押して+されると思ってんのか、この人達は、という次元。普通の理系ならピラミッド構造は頂点付近しか儲からないの簡単に理解できると思います。理系じゃなくてもまともな論理回路してたらわかりますよね。化学実験とか見せられたけど笑っちゃったもんw

で、金持ちブランディングですよね。5億とか言ってましたが、半期の時点でそれで、去年の祭りくじの当たりのタイミングからexponentialに上がる予定の3割辺りの位置だったんでしょうね。そこでコケたわけですが。

実際お金持ってんの?

タワマンの反応的にも、母親の文春での発言的にも1000万いくか行かないかで、経費使い過ぎで、実際手元には全然ないんじゃないですかね。住まいは前年度年収が審査基準なので、1年実績作らないとなかなか高級マンションは厳しいです。13万位なら直近半年とかで説得できるけど。よく、再生数と掛け算してこれくらいは稼いでるはず、とか言ってる人いますが、ツールで再生数上げられるんですよ。金持ちブランディングと同じで絶対やってるでしょうね。ただし、ツールで再生部分叩いてるだけなので、広告表示されないから、ツールの再生分は収入になりません。初速の感じでかなり底上げしてるとしたら、実際の広告は大した数表示されてないんじゃないですかね。

例えばこういうのね。

milkycocoa.com

そもそもの話をしてしまうと、ある程度稼いでる人の行動には見えないんですよね。下品過ぎる。金の見せ方とかにしても。どうでもいいんですが、最近、調味料とか食周りに金をかけるのに抵抗があまりなくなってきました。花椒とかかき醤油とかを常備してたり。美味しい物をいかにより美味しく食べるか考えたりしてます。小金持ちってそんなもん。大金持ちはもっと金遣い荒いだろうけど、普通、バレないように使います。襲われるかも知れんしね。

それに本当の金持ちは競馬、競艇、パチンコ、メダルゲーム(笑)とかあんまりやりません。仕事にしてる人は別だけど、その辺一通り手を出したりするのはどっちかというと金持ってない人。一発逆転思考でね。金持ちは競馬にしたら、出馬する方。ギャンブルと言っても金持ちは投資系が多いですね。上記のようなギャンブルは時間の無駄と思う人が多い印象。投資はちゃんとやればギャンブルではないので、資産運用です。散財系にしても、金の使い方が下品過ぎる。金に好かれる人の使い方じゃないです。金が逃げてくタイプ

いつヒカルは陥落するか

もし炎上が続くとしたら、まず、来年の贈与税はヤバイですね。寄付って言ってる通り、VALUの収入は受け取った時点で贈与税が発生するそうです。さらに、最高額で買い取りを数日(途中で止めたよね)やった分で相手が納税しなかったら買った側に贈与税がいくそうです。ハメられた人間が払うわけないよね。その分、往復で被るわけで。あとは、損切りした人からの損害賠償の裁判がこれから始まるでしょう。さらに、ドタキャンしたイベントの主催者からも被害額とか賠償請求あるんじゃないかな。また、収入が増えてく前提で支出あったわけで、それが経費で落ちる前提だったんだろうけど、これだけ話題になったら税務局も厳しくなると思います。高級腕時計とか、一回でもプライベートでつけてたらもうアウトだろうね。普通にtwitterとかに写しちゃったりしてそう。判例でもプライベート利用あったものが全て認められなかったのありますからね。そうなると、収入に丸々税金乗ってくるので、今のままでYouTubeの収入打ち止めで来年の税金のシーズンまで来たらアウトでしょう。下手したら、国税が去年の報告洗い直して追徴課税出たらそこで終わるんじゃないかな。

個人的には、詐欺しても成功してる人間として有名になって、詐欺なんて普通って思ってる人達の憧れになってるので逮捕で終わってほしいVALUに関する詐欺でも、商材詐欺でも、脱税でも良い。だって、経歴、詐欺とかマルチ系しかないでしょ?そういう人間が誰かの憧れとかなったら将来の日本終わりでしょ。悪いことで稼いでもその成功は長続きしない、という良いお手本になって欲しい役人の皆さん、本気を見せてあげて下さい。

今、それなりに稼いで、それなりにいい暮らししてる人間から言えるのは、20代で大金稼ごうとするなら、詐欺でなく外資で身を粉にして働け、ということです。まぁ、外資は日本以上に学歴見るから、大学は出ないと厳しいかもだけど。20代で正しく成り上がれるのはその辺くらいです。そうじゃない人は30代に入ってすぐに成功するようにコツコツ積み上げることです。電車で必死にスマホのソシャゲやってる時間あったら、技術書読みましょう。通勤の往復技術書で学ぶだけでも、30歳になった時、相当な差になります。俺は通勤で資格の本読んで2年で15個くらい資格取って、未経験からの2年目には年収600万いってました。そして、積んだ技術はゆるがないからね。

技術者、増やしたいなぁ…。
では、次回から、技術系の話に戻ります。

※補足ですが、一部の炎上に乗っかって犯罪行為してる連中には共感はないです。でも、それに対して、ヒカルを擁護する気もない。自業自得です。他人とか自分を信じてる人を騙すことを繰り返して稼いでカリスマ名乗ってるような人間が痛い目にあっても、過去の業が原因で損する側に回っただけです。両方捕まれば良いんじゃないという冷たい目で見てます

IT業界を目指す人向けに業界人のコンサルが必要な気がする

ヒカルすこすこされて(ツール作るとか他人の足引っ張り隊本気過ぎ→ヒカルはまがい物の成功者だと思うので擁護しませんが)だいぶ低評価になってるみたいですね。低評価だと単価下がるみたいだけど、どうなるんだろう。そもそもが、高評価だとプレゼントみたいな、サービスによってはBANされる手法Google先生の優しさで見逃してもらってたんだよね。てかさ、英語でGoogleにこのやり方伝えた方がいい気がしてきた。高評価を作為的に作って単価を上げるのは、Googleに対する一種の詐欺なんじゃないかと思うけど。AdSenseのクリック依頼と同じようなもんじゃん。

ちなみに、ヒカルに過剰反応してるように見えるかも知れませんが、当初から胡散臭いネットビジネスに挙げてた情報商材(グレーゾーン詐欺)とバカやって儲けてるYouTuberのダブルなので、ほら、こういう奴ら有名にして稼がせたらろくなことがない、もっと評価されるべき人が評価されて稼げるべき、ということで取り上げました。

もうね、商材とか一度でも販売に手を出した人間は性根のレベルで金に汚くて、簡単に嘘ついて、人を裏切るのは目に見えてるので、信用したらダメです。息吐くように嘘つく人種です。

それで、今回はプログラミング教室のモニター募集で聞いた話で感じたことです。

IT業界に興味があってもどこから手を出していいかわからない

おそらく、これが1番多いでしょう。ちなみに僕は高校時代から独学でHPを作ったりしていて、最初の会社でなんとなく、手作業だった作業が面倒だったので、システム化できないか会社に相談して、自分で担当してシステム化したのがきっかけで、とりあえず、すぐ転職活動をして、当時本当に人不足だったのでシステム会社に転職が決まりました。それで、3ヶ月のJavaの研修を経て、某大手企業のシステムを作ることになるのですが、タイミングが良かったことも、元々趣味でプログラム(マークアップcgiを変更する程度のしょぼいレベルですが)してたこともあり、余り困らずツルッと入ってしまいました。

で、話を戻すと、それで、検索で上位に来たプログラミング教室(ほとんどステマ)の門を叩いて、余り業界経験のない人間に簡単とかどうにかなるとかテキトーなことを言われて受講してしまう人が多い気がします。結果、趣味レベルの技術力で痛い目にあうだけのパターン

現状、ほとんどのプログラミング教室が悪手

何度も言いますが、プログラミングは独学で学ばないほうが良いです。独学だと、その時必要なこと、やりたいことしか学ばないので知識が偏ります。で、Computer Science (以下CS)の全体図も見えないまま、とりあえず、動くものを作れるようになって、人によってはそれでマスターした。と言っちゃったりします。教室で教えるなら最低限CSの学部を出てるのが最低条件だと思います。今、ゲームプログラマを目指してる方に教えていますが、とりあえず、動かせる、程度の方がゲーム系で必要になるCGの知識とか、ゲームAIと機械学習の違いとかDAU10万以上のシステムの負荷分散とか教えられるんですかね?まぁ、その辺希望していたとしても汎用的な土台になる基礎知識教えて、ゲーム系専門とか行ったほうが良い気がします。個人的には全部教えるのは難しいし、専門に行ったほうが良いなら、そう伝えますし、編入すべきなら、それを伝えます。編入なら試験があるでしょうし、専門で途中で詰まる可能性があるし、専門では教えてくれない理論的な部分もあるでしょう。なので、最初に話して、必要な技術や知識を一緒に探りながらカリキュラムを決めてゴールを目指す方針を立てて教えるつもりでやっています。

ほとんどのプログラミング教室がろくでもないのは、誰でもできる、と同じ期間で、しかも独学でしか学んでない人が独学の仕方を教えるというとんでも教室ばかりです。プログラミングは結構才能の部分大きいので、学ぶ速度に差があります。期間で教えたら終わらない人が続出するのは当然。しかも、必要ないcssとか教えてもなぁ。基礎理解したらcssなんて難しくないと思うけど。そこに時間割くならもっとちゃんと基礎やったほうがいい。ぶっちゃけCとかC++フレームワーク作れればRubyなんて簡単なわけですが、Rubyだけやって、そこからCとかC++で同じことやってみよう、ってなると初心者には拷問でしょう。そうなるとRuby使うとこしか選択肢がなくなるし、中で何やってるかわからないからパフォーマンス・チューニングもないし、そもそもRubyは処理速度遅すぎで、ユーザー増えたら使い物にならないという。なので、成功するつもりがあるならRubyだけ、なんてあり得ない選択です。Cookpadさん、どんだけ苦労したと思ってるの。

独学でできるようになりました。って言うとすごいように感じますが、それはほとんどの人が挫折する独学でプログラミングが書けるようになったから、ということなんでしょうね。CS系学部の人間にとってプログラミングは言葉を話すのと同レベルです。動くものが作れないと、そもそも実装系の課題は何一つできないですからね。僕のいた学校のポリシーだと実装系課題はコンパイル通らないと0点です。全員が最低限の課題ができるように教えてるCSで学んだ人とほとんどが挫折する方法をやり抜いた人、どっちがわかりやすく教えられると思いますか?元々CS専攻の人が皆できること。知識ないのに独学で学ぼうとしたからわかんないんでしょ、という話なんですよ。英語を本だけでNativeレベルで使えるようになりたい、って思ったらメチャクチャ大変なのわかるでしょ。それと一緒です。

それ以上に、教室で1ヶ月とか3ヶ月学んだだけの人間がメンターとか名乗って教えてるとか軽いジョークです。大学だと、教授が教えてTA(大概学部4年か大学院生)が質問とか助言しますが、教えるのは基本、専門家である教授です。うちも受講者増えたら手伝いを雇うと思いますが、講師はCS学部卒以上で、卒業生に手伝ってもらうとしてもTA的な部分です。というか、ほとんどのプログラミング教室、オンラインで独学してTAに聞くだけの独学の仕方とヒントをくれる独学教室だからかもだけど…。なら、プログラミングサークルにでも入った方がいいんじゃないの?と思う。

データサイエンスに関する誤解

何人かに将来、AIやデータサイエンスをやりたいという話しを頂いたのですが、正直、大学院で勉強することをお薦めします。その受験や編入のための勉強は喜んで協力します。僕の行ってた大学では機械学習が4年で、それ以降は大学院で学ぶトピックでした。というのは、CSの学部卒業レベルの技術・知識があった上で、数学的な素養もある人が学ぶ専門領域ということです。それでも単位落としてる人が結構な数いました。API叩いても上手く動かないのは、繊細なチューニングが求められる技術だからです。次元削減しないと、データにノイズが多すぎて優位性が見いだせないとか、複雑な事象の分析に選んだ手法が単純な事象向けで使い物にならない、とか。

データサイエンティストはGoogleとか外資で1500万とか1800万とか当たり前なレベルで抱え込まれてます。大半が院でその分野の研究室にいた人です。そういうジャンルだということを理解した上で目指すべきだと思います。

流行りだし興味あると言っても、未経験でプロボクサーとスパーリングしに行くようなものです。幸い、ITの世界は社会人になってから学校に戻ることをマイナスに見ません(僕がそうですが、特に、それがアメリカだと箔になります)。本気でやりたいなら資金を貯めて大学院で学ぶべきです。

経営者がプログラミングを覚えたいなら社員を送るべき

これは個人的な感覚なので、違うと思う人も多いかと思います。経営者もプログラミングをわかってた方がいい、という論調があります。それはわかってた方がいいと思います。ただし、経営者が実務としてプログラミングをする前提で学びに行くのはお薦めしません。元々プログラミングができる人がプログラミングより経営が向いてて、たまに書くのは非常にいいと思いますが。正直な話、締め切り前のプログラマの精神状況は結構大変です。その状態で経営判断を行うのは非常に危険性が高いと思います。また、逆に、自分が実装してると締切に甘くなり、リリースが延期になりやすいでしょう。経営者はこだわって作るのでなく、時間に間に合うよう、何を採用して何を切るかの決断をすべきです。自分で作るとどうしても愛着が湧くので、経営判断とエンジニアリングは分けたほうがリスクが少なくなります

では、どうすべきか。
個人的にはCIO, CTO候補かシステム部門を作って教室に送り込み、参加者が経営者に教える機会を作るのがベストだと思います。学んだことを理解していないと教えるのは難しいです。なので、より集中して学ぼうとすると思いますし、教えることで知識の定着が期待できます。と言っても、自社でシステムを作ろうとした時に、システムを作る人間がプログラミング教室で学んだ人間だけだと心許ないので、結局は経験者を雇うことになると思いますが…

とりあえず、僕の教えるプログラミング教室は「即戦力」趣味プログラマではなく、キャリアパスを考えた上で、その道筋上の現場に出ても通用するプログラマを育てることなので、ちょっとかじってみたい、だとついていくのが大変で方向性が違うかな、と思います。とはいえ、大まかな理解に他の月14万とかかかるプログラミング教室行くのも無駄な出費なので、希望があれば、概念的に教えるコースも作るかも知れませんフレームワーク特化したRuby on Rails学んでも、言語変わった瞬間わけわかんなくなると思いますしね…。経営者に、「で、Rubyで言うとどうなるの?」とか聞かれたら、僕なら、「Rubyは忘れましょう」って言うと思いますw

コンサルとかしたら受けたい人いるのかな

ITに転職したいと思ったら、転職エージェントに行く人も多いでしょう。転職エージェントは転職をゴールに、プログラミング教室は自社のサービスを受けさせるのをゴールに考え、場合によっては担当者のITの実務経験が充分でない場合が多いと思います。プログラミング教室で実務経験足りない人が案内するとか恐怖だけど、代表が学生ノリで始めて一度も就職したことないとかいうとこいっぱいあるもんなぁ。ブログとかアフィリエイトで小遣い程度しか稼げなかった人が、ブログ・アフィリエイトで稼ぐコンサルしてるのと同じ構図だよね。怖い怖い。

その手前の段階で、ITで目指したい人がはじめに行くことろを決めるために助言するコンサルとか、休みの日にコーヒー代とか+1000円とかでやったら需要あるのかな。メッチャ格安だけど、需要あるならやってもいいかな、と。キャリアパス真剣に考えてから行動するのはエンジニアリングの世界で生きてこうと思うなら大事なことです。何度も言うけど、エンジニアリングは積み上げて行く世界。そして、しっかり積み上げれば崩れない技術が身につく。だから、ちゃんと積む道を定めるのは思ってる以上に大事なんですよ。

まぁ、その辺も気が向いたらアンケート取ってみますかね。