コーディングから離れたマネージャがどうやって技術力を回復したか？

# コーディングから離れたマネージャがどうやって技術力を回復したか？
というお話です。

40歳以上のおじさんに届けー！

## 自己紹介
別に大した話ではないので読み飛ばしていただいて一向に構いません

- 1997年
 - ユーザ系システム会社入社、ゲームを作りたいといって入社したけれどその事業はなくなり、グループ（けっこうでかい）社内業務アプリを8年位やる。COBOL+VB的な。WEBもほんのちょっと触ったけど仕様の方に回ってしまったので、ビジネスロジックを考える方の人間になった
 - サーバのOracleのバイナリを稼働中に消してしまい、夜なべして復旧したのはいい思い出。svrmgrたたけないから落とすこともできなくなるのよねアレ。
- 2005年
 - インフラの人間がいなくなったのでお前らインフラに回れ、とのことで先輩後輩何人かでまとめてインフラ部門に移る。ＯＳ／ミドル周辺に色気を出していたのでつられたのだと思う。
 - サーバ・ネットワークを一から知る。で設計してもらい、作ってもらう。アプリ要件が決まらず、納期が遅れていくこの焦燥感、ほんとイヤです。見切り発車で社内通ってないのにモノだけ抑えちゃうとか。たまに失敗してる人いるけど
 - ま、いろいろ学んで成長した気はします。ベンダーさんに色々教えてもらいつつvmwareでプライベートクラウドとか、インターネット系システムがっつりとか、今となっては分からないけど当時としてはそれなりの経験ができたと思います
- 2014年
 - 何かアーキテクチャっぽい部署ができて、アプリとインフラ両方わかりそうなので配属されました。他の人よりは分かるってぐらいか？
 - アプリから離れて勉強もしてないので、WEBAPIとか言われてもつらいです。でも社内人脈を生かして仕事を進める、いわゆる年の功的な働き方で役には立ったかと
 - そういえばSFDCを1から触ったのはいい経験だった
- 2018年
 - マネージャになりました。実務からどんどん遠くなっていく・・・技術力なんてどんどん落ちていくよ・・・当然だよね・・・

で、あんまり社内情報を書くと危ないのでこの辺で。

## そろそろ使えない人になってきた危機感
こんな経歴でマネージャーになってしまい、技術者と呼べるか怪しいなと思っています。ただエンタープライズの人らしくNetworkとDatabaseは仕事できるレベルには把握するようにしてました。なので一応知識を得ることができればできないことはないかも、ってレベルです。そういう人は多いんじゃないでしょうか。

マネージャになると、実際自分で手を動かすよりは仲間を信じてやってもらった方がよっぽど将来のためになるし、みんな喜ぶし、優秀な部下や後輩がいればなおさらです。
てことはそのために環境を整備して揚げるのがマネージャの仕事と考えると、マネージャイコール技術者の死なんだろうか、マネージャは一度入ったら抜けられない泥沼なんだろうか？なんて思ったりします。
コーディングは20年以上前にやめたし、サーバセットアップも10年前にやらなくなったし、技術者のくせに作れと言っても何も作れないのはまずいな！
・・・と思っていた当時2016年頃、クラウドに加えてIoTとAIあたりが世間でフォーカスされるようになってきてました。スマホアプリは完全に普通になってましたね。
よって

- スマホアプリ：必修科目なのにしらんかったのがそもそもダメ
- IoT：うおーすごい面白そう。IoT家電！リモコン戦車！戦車！
- AI：画像認識！（人類のゴールはこれっぽいけど、まだ流行りだから根っこだけ抑えるか）
- Web技術：jsがどんどん広がっててわけわからなすぎだが、知らないのはさすがにまずいだろう！

というモチベーションで、自分でちょっとずつ崩すように覚えていきました。

## やり方
昔の人ですし、と言っても元々ITの人なわけなので、初めの「ウッ！」という抵抗感さえクリアすればなんとかと思ってました。
でもそれをクリアする勇気が出ない・・・
やっぱり大事なのは**「何かを作りたいと思うこころ」**でしょう。
つくりたいものがあって、それではいざ腰を据えて調べようとなると、今はだいたいなんでも転がってるというか先人がいるもんですよね。
ダウンロードしてコンパイル（スクリプトでもいいけど）して動けばなんかそれっぽくなっちゃいます。

で、はじめは実行時パラメータの変更から、そしてそのうちパラメータの追加・機能拡張など気になるところをちょこちょこいじってると、もう少し中身をしらんとな、という気持ちになります。
なんとなくネットをさまよっていて利用者目線で知恵を身に着け、たまには公式サイトとか原典とかに当たったり。
することで、最近のITの世界はかつてと異なって莫大なツール化が進んでおり、一人で伽藍を作る時代からとっくに抜けていることを知るわけです。

また、作ったものを自慢することがとっても大事です。同僚先輩後輩だれでもいいので「すごいでしょー」的な。自分はそういうのも含めて、ワイワイ楽しくITができるなんちゃってラボを社内に作り、ゆるゆると続けてます。
年１で発表会・クリスマス会の出し物をやってるので、後輩が楽しいことを出してくるとこっちも楽しくなります。

## コツ
- 「これを作りたい！」と思うこころ
- はじめはネットで探してダウンロード。コピペ。全然OK
 - ていうかそれが動く開発環境を整備した自分をほめてあげましょう
 - 技術的に大したことないけど、素人受けするものがいい気がする・・
- 次は見えづらをちょっとだけなおして悦に入る
 - 特にスマホアプリとかが効果覿面
 - てきめんってこの字であってる？
- うまくいったらにやにやしながら機能拡張
- できたものを自慢できる場所・人などを用意
 - そういうのがなければ、まあ家族でもいいんじゃないですか。猫でも。

## 頼った
- Qiita
 - 徒然草第52段 先達はあらまほしき事なり。
- stack overflow
 - 最後の頼みの綱。英語はただひたすら耐える
- cousera stanford UnivのMachine Learning
 - これでやっと数式とライブラリの意味合いがつながりました
- pythonのオフィシャルページ
 - 自分が主にPythonを選んだからですね。2系と3.x系と違いにはまるので。

## 私の足跡
実際、この記事は以下の自分用メモの豪華デラックス版なのですが。
以下のものをいろいろやって行くなかで少しずつ技術力を回復しています（途中）

※元々shは運用設計混みで実用レベルのものをばりばり書いてましたので、プログラム初心なわけではないです。

1.android+cloud vision
---
java
写真バーコードリーダーアプリ
androidstudio GCP連携し、cloud visionを呼び出す
やればできるかなと思ったら簡単にできた。
コピペ90％、呼び出すのをバーコードリーダーに変更したり、proxy対応とか細かい所をいじった覚えあり
android開発ってすごい面倒なことを知る。
エミュレーター動かしたいので、パソコンのスペックが高くないとムリめ

2.android+パソリ
---
fericaリーダーアプリ（途中まで）
会社の勤怠カードを使って出欠アプリつくろうかなと思って作り始めたら
拾ったライブラリが古くて動かねえ‥仕様書等もない中で、
あてずっぽうで微修正を繰り返し、カード内容を読み込めてやったー！ってとこで
会社でつかってくれるかな？と思ったらよく考えると使い道なさそうだったので
面倒になって中止した。
（O365が導入されたし、そんなカード認証の仕組み社内でつかう必要ない）

3.arduinoキット
---
arduinoと各種モーター、センサーなどなど入って3000円位のやつ。めっさ勉強になりました。OSOYOとかいう冗談なのか牛乳なのか、って名前の中華キットですが、最高でした。
説明通りに順番に試していくと、arduinoの基本的な動作が一通りわかります。
やっぱ呼び方は「アルディーノ」ですよね！？

4.クリスマス用顔認識＋撮影アプリ
---
RasPI+camera
python OpenCV
拾ってきたものを強化。やってる本体は拾ってきたもののままだけど（感謝）、中身はそこそこいじってある
PCにつないだカメラを置いておき、見た人の顔を認識して撮影。
撮影した画像はS3に保存、背景画像をクリスマスっぽく自動でデコレーションしてくれる

5.LINEチャット翻訳機能
---
LINE+AWS Lambda(node.js)
LINEで会話すると翻訳してくれる。和→なんでも　なんでも→和ができる。
AWS翻訳が対応おくれてたので、翻訳はGCPにおまかせ
裏ではLINE→AWS→GCP→AWS→LINEと飛ばしておりクラウドを股にかけて動いてます
やってることは簡単です
やろうと思えばGCPが対応している限りの言語で翻訳できるが、入力そもそも日本語キーボードなので・・という難あり。発音できない言語に翻訳されても読めねえし、読んだとしても返事できねえし。
node.jsの癖がきつくて若干苦しんだ。非同期処理とか。

6.戦車1号
---
ESP32+dcmotor+距離測定+LINE+udp control
上のRasPI+cameraでIoTチックな面白さが分かったので男の夢である戦車の作成。
砲塔は無理なのであきらめ、距離を測定してLINE連携して飛ばす。
スマホのudp送信アプリでリモートコントロール。
距離測定センサー（安いやつ）の弱さがよく分かった。
ESP32からのdcmotorがいい感じできびきび動くので、正直制御系はraspiよりESP32に任せてよかった。戦車から見た画像をリモートで見れないのが悲しく、もっと頑張るぞと決意。

7.戦車2号
---
RaspberyPI+motor+camera+websocket+タミヤの戦車キット＋DCモーター
絶対カメラつけてやる＋砲塔も男のロマンと考えて、ESP32ではできなそうなことからRasPIで作成
戦車：RasPIzero+servomotor+camera+タミヤの戦車キット＋DCモーター＋自作の砲塔
サーバ側：python+tornado
クライアント側：jquery-websocket
RasPIのPythonの処理重い。PC上ブラウザのwebsocketから指令を飛ばすので、サーバ側はキューの仕組みが必要と思い実装。
車載カメラの映像がリモート側のオペレーションＰＣから確認できてかっこいい。
でもリモート側jqueryからwebsocketを通じた移動指示のラッシュにサーバ側が耐え切れず、Raspi2が高頻度でフリーズした。
そうこうしている内に社内発表会（Ninja Lab2）の本番を迎えたが、やはり本番でエンスト。
でもちょっとは動いたのでまあいっかと。
カメラのサーボと、モータードライバを通じた戦車の駆動とモーターがたくさんあるので結線がとても面倒だった。モータ多いので電池複数、それでも電力不足の挙動不審で悩んだりとかいろいろ経験。いい電池を買うか悩んだが、いい電池は危ないみたいなのでやめた。
砲塔はボールペンとミンティアのケース、バネを使って自作した。弾は飛ばなかったけど本番でウケたので良しとする

8.機械学習（猫判定）
---
python openCV tensorflow kerasなどなど
戦車を自動で走らせ、飼い猫の顔を見つけたら弾を打つぐらいできたらいいなと思った。が、頑張ったけど猫の顔判定の機械学習が収束せず、挫折。OpenCVでモデルを作るのがつらい。
パラメータ設定をどうしていいかわからなかったことが一番の敗因と考え、
couseraでAndrew NG先生に師事することを決意（無事卒業※無料コース）

9.手書き文字APIを読み取るQtPiwindowsアプリ
---
python+QtPi、手書き文字はサービス呼び出し
Pythonでwindowsあぷりつくれるんだーへえーと思っていじった。
割とちゃんと動く。
会社のとある案件で内職的にやっていたが、プロジェクトに至る前に他社都合でとん挫したため、必要性が無くなったので中止。

この辺で、AWSをちゃんと知らなきゃと思いAWS SAAを取得。社内で受験＆合格ブーム到来。

10.python-facebook本を書いた
---
金儲けが大事だ！と考えて会社の仲間と執筆。ちゃんとした本だよ。安いよ、買ってね！
https://www.amazon.co.jp/Python%E3%81%A8Facebook%E3%82%92%E3%81%A4%E3%81%AA%E3%81%90-Ninja%E8%99%8E%E3%81%AE%E5%B7%BB%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-1-Ninja-lab%E3%83%96%E3%83%83%E3%82%AF%E3%82%B9-ebook/dp/B07Z9BK4WW

11.株価のチャート作成
---
絶賛進行中。やっぱり金を生むのは金でしょ的な。

12.IBM cloudで日本語解析（チャットボットのバックエンド）
---
会社を続ける道は楽しさと定義し、会社の仲間と外部事業をつくろうと活動中。
形態素解析の道に進むのか、それとも他社サービスをまんま使うのか。自社の強みにつながるのはどっち？を悩む元ネタとしてチャレンジ開始。

ひとまず形態素解析やってみようとjanomeを利用。別に普通にできた。結果をsqlite3に保存、久しぶりだがちょい試行錯誤して完了。
次はIBM Watson Natural Language Understandingと思ったが、これがうまく動かない。CURLからはOK、日本語もOK（UTF8,BOMなしでないとダメなのでに注意）
日本語はsentiment,emotionだか？複数動かないと言われげんなり。IBMやっぱやる気ないのね。
requestsを使ってAPIをたたく→user/passが必要そうだがapikeyしかないので不明。
サンプルはibmライブラリを呼べとあるので、まあいいかとやってみる→Featuresが存在しないよ！との事で謎のエラー。サンプル通りやってるのに・・・・
当然Stackoverflowにもqiitaにもないよ・・・

おしまい