See the Elephant

1992生まれのプログラマが書くエンジニアブログ

3ヶ月の振り返り 2019/7-10月

時系列

捨てて入れる

  • 2019/07

    • エンジニア復職
      • とはいえコードは書いてない
    • cybozu kintoneの引き継ぎ
      • 7月入社の人にレクチャー
  • 2019/08

    • 新卒エージェントチームのスプレッドシート運用をkintoneに置き換え
    • オンライン面談商材のスキーム定義と実装
    • cybozu kintoneの引き継ぎ
      • kintoneの構成を変える仕様設計
    • この辺からちょこちょこプロダクトコードのコードレビュー
  • 2019/09

    • コード書きたいのにかけなくてめっちゃストレスだった記憶ある

    • cybozu kintoneの引き継ぎ

      • kintoneの構成を変える仕様設計と実現
      • ほっとんど毎日クエリ書いてた記憶
      • 新しく入ってきた同僚への指導がメイン
    • この辺からscala, react触り始める

    • ガーデニングを初めてやった

      • 毎週scalajavascriptの周辺ライブラリをupdateする作業
      • これは今もあんまりよくわかってない
    • 友達の結婚式でお金のLTやってた

    • isucon初参戦

      • 頑張ったけども全然貢献できなかった
  • 2019/10

    • エンジニアとしてサポのメインプロダクトの開発開始

      • 半年エンジニアリング離れるとマジでコマンドや知識が出てこなくなってた
        • mysqlshow create table がパッと出てこない
        • リリースの影響範囲の確認作業とか
    • 企業情報扱うあたりの仕事をやってた

      • apiサーバ, クライアント(react)両方触る
      • コード書くのたのちぃ
    • 引き続き, 企業情報触る系のお仕事

    • shell scriptでcurl叩くような一括入稿系のスクリプト書いた

image

直近の目標/前回のやっていき、それらのざっくり進捗

  • scalaとreactの習得が目下の課題
  • 自分がいたチーム以外のドメイン知識入れるのが大変
  • なんだかやっとプロダクトの思想がわかってきたくらいのフェーズ

やったこと、学んだこと

もっと上手くやれたなと思うこと

  • ドッグフーディングとコードリードはあまりすすんでない
  • コードもっと書きたいなー
  • scalaへの苦手意識がまだ強い
    • 型パズル
    • Either[Throwable, Option[Seq[string]]] みたいなのをunwrapしていく時に 今どこ?ってなる
      • それはTypeScriptもそうか

次回振り返りまでのやっていき (Try)

  • げきつよエンジニアになりたい
  • 昇級すること
  • 英語圏で働いてみたいので色んな話聞いてみてる
    • ウガンダのキオスクappを開発する話を今度聞いてくる
  • 確定申告めんどい

最近読んでおもろかった本

image 思考は実現化する

image ブレインプログラミング

2018/8月 - 2019/8月 1年振り返りやってみる

ポエム書く。

お金周りについてとても正直に書くのであまり拡散しないでほしい。

(お金について話しすぎると人が離れていくことがわかったので。)

ちょうど副業的なことを初めて1年が経過したので振り返りをやってみよう。

大まかな1年の流れ

広告エンジニアで「人の役に立っている感覚 & 成果」が得られず鬱になる

-> 社内異動で人材総合職になる
-> 総合職的な働き方に向いてないことを悟る
-> ブログで生活できるほどの収益が出るようになる
-> 環境変化とブログ収益により鬱改善
-> 再度エンジニアとしてやり直していくことに

こんな感じの1年だった。

枝切りの年

今思えば「枝切り」の1年だったのかなと思う。

自分の得手不得手を実際に試してみて、枝切りしていくような感覚の1年だった。

  • エンジニアリング △
  • 人付き合い ×
  • 標数値達成 ×
  • セールスライト ○
  • アフィリエイト
  • 一人で作業 ○
  • みんなでわいわい △
  • イベント運営 ○
  • 朝起きる & 締め切り ×
  • 物をうる技術 ○

自分で自分を評価してみるとこんな感じ。

自分で自分の得手不得手を知るのはなかなか客観的にはできない。

なので社内で試行錯誤させてもらった感じの1年間だったかなと。

時間や数字に追われ人付き合いする仕事はマジで向いてない。

一人で黙々とやりたまに仲間と楽しくやる、みたいな働き方が向いてそう。

エンジニアキャリアについて

その辺歩いてる女の子や営業さんよりはエンジニアリング得意だなーと思えたのが大きかった。

もう一回エンジニアやって見ようと思えたし、「ダメだったら他の方法で稼げる」という楽観的な視点を得られたのも良かった。

今は、サーバサイドとDBの知識をつけていきたいなーと思っている

ソフトウェアアーキテクチャとDBA的な立場で仕事がしていけると楽しそう。

心のメンターはそーだいさんとt_wadaさんと弊社の前田さん。
あと、心の兄さんは、にしごーりさん。

この辺読みたいので仲間募集中

楽観視と鬱改善

過去の自分は「理系修士でエンジニアとしてうまくやっていけなかったら取り得なくて死ぬ」みたいな極端な考え方だった。

ブログだったり、コミュニティのイベント運営だったり総合職を試してみて「まぁなんとかなんじゃないかな実際やめても」と人生を楽観視できるようになったのはとてもいい点だった。

この認知の変化が鬱の改善に繋がったのかなーと思う。

僕の場合、幸い「人に物をお勧めして買ってもらう能力」がとても高いのでそこで自信がついた。

そして実際に成果として出ている。

「やってみたいこと」「得意なこと」「日常で自然にやってしまうこと」を発信してお金に変えてみる、臆することなくお金を受け取ってみるのはとても大事なことだなーと思った。

キャリアについて

すごく正直に言うと、すでに仕事をしなくても生活できるほどのお金が得られるようになった。

だからといって、仕事をやめるつもりはないなぁ。

  • 経済的安定性
  • キャリア
  • 好きなこと

この軸で考えると「エンジニアとしてやっていきたい」と思えた。

  • 経済的安定性:

    • ブログはgoogle次第。エンジニアは自分の能力次第。
  • キャリア:

    • エンジニア向こう10年はなんとかなる。おもろい。市場価値高い。
    • ブログで長期的に稼ぐのはむずい。おもろいけど辛い。ずっとはモチベーション持たない。
  • 好きなこと:

    • エンジニアリングは結構好きだなーと。ここは続けていきたい。
    • 本業の他に「好きなことをお金に変える」のは有効だなと
    • 趣味がお金に変わるので「趣味 => 投資」に変わる
    • このパラダイムを知れたのはここ1年における収穫

好きなことがお金になる

「好きなことでお金を稼ぐ」っていうのは多分本業でも副業でも同じ。

そして 「できるだけ苦手、嫌いなこと」を減らしていくことが大事

そうすると、生きることそのものが好きになるし、それが仕事になっていく。

そう言う感じで「枝切り」していくと自然に流れができて成長できるんだろうなーと思った。

お金の使い方 消費

自分はマーケティングとものづくりが結構好きなのでそう言う面で将来的にお金が得られるようになれば嬉しい。

5つ星ホテル泊まったりひとり旅行行ったり、ホテルのラウンジ行ったりしたけど「別にそんなに楽しくねぇ」と言うことがわかった。

お金は自分の能力や好きなこと、周りの好きな人に回してなんぼのもの。

お金は自己実現に使っていきたい。

お金の使い方 好きなことに投資する

ヘッドホン好きだし、マーケティング好きだし、発信も好きだし、webプログラマーなので

向こう一年はwebプログラミングの勉強しながら

ブログで稼ぐ
-> 稼ぎのほとんどをヘッドホン発信 / webプログラミング / マーケティング勉強に繋げる
-> youtubeで発信する
-> webサイト運営に回す
-> これの繰り返し

VRも面白そう。今後VRは確実に流行り来る世界。 つまり「空間方向性を持った個人音響デバイス(e.g. 7.1chヘッドホン)」にお金が流れる世界がくる。

それまでに「ヘッドホンといえばしゅーぞー」という認知を作っておきたい。 だからYoutubeやってみようかなーと。動画編集も好きだしね。

人に物売るの楽しいし、実際に人々は僕から物を買ってくれるので多分天職の一つだと思う。

1年後までに月100万くらい作りたいなーと思っている。

できたら嬉しいなぁ。多分俺ならできる。頭の中ではもう割とできてる。
webエンジニアとして、webマーケターとしてやっていこう。

ポエム終わり。

年表詳細は以下


2018

  • 8月 鬱の診断を受ける(おそらくこの時期)
    • 同時に投薬を始める
  • 8/31 副業ブログを始める
  • 9月-10月
    • 帰ったらひたすらブログ書く
    • 仕事はあまり手につかなかったし、実際仕事の記憶が曖昧
  • 11月
    • この辺がもっとも体調が悪かった記憶
    • この辺でエンジニアとして働くのを1度やめるか考え始めていた
    • ちょっとずつブログのPVが増えてきた。楽しいので続行
  • 12月
    • 中旬のある日、「もうやめる!」と頭の中で何かが切れて総合職としての異動を依頼する
    • 2週で異動が確定し異動前のお仕事を片付けていた
    • 一番症状がひどかった
    • 副業ブログにamazonアフィリエイトを差し込んだ

2019

1-2月
- 本業は異動に向けて仕事の片付け
- ブログで3000円ほど収益が出る

2月
- 総合職として働き始めるもの以下の理由で絶望的に向いてないと悟る
- 人に関心が持てない
- 数字達成に関心が持てない
- 朝が起きれない
- 電話が嫌い
- 同じことの繰り返しが嫌い
- 「これじゃないかもな...?」と1ヶ月目に悟る
- ブログで月1万程度収益が出るようになってくる
- 異動したことでかなり精神的に改善され元気に

3-6月
- 上記の総合職的な働き方が向いてないと判断され、チーム内の技術的サポート役になる
- 業務のほとんどの時間が技術的な内容だったため異動先のエンジニアチームへの異動を打診する
- ブログで月10万ほどの収益が出る

7-8月
- エンジニアに転身。テックチームに配属
- scalaとtypescriptを学ぶ
- 主治医から断薬と経過観察と言われる。鬱の症状はかなり改善した
- ブログでなんとか生活できるほどの収益が出るようになる(月間50万PV超えた)

【React】 useMemoとuseCallback何が嬉しいの?

qiita.com

useMemoとuseCallbackはdeps(計算が依存しているプロパティ)の同一性チェックが毎度入るのか

useMemo

つまり同一性チェックの計算より重い計算であればuseMemoで変数に処理をキャッシュしておいた方がいい

useCallback

https://qiita.com/teradonburi/items/5b8f79d26e1b319ac44f#%E3%82%A2%E3%83%AD%E3%83%BC%E9%96%A2%E6%95%B0%E3%82%92props%E3%81%AB%E5%8D%B3%E6%99%82%E9%96%A2%E6%95%B0%E3%81%A7%E6%B8%A1%E3%81%99

アロー関数をpropsに即時関数で渡す

これはコンポーネントのrenderのたびに関数インスタンスが生成される。

useCallback を使うとインスタンス生成を抑制でき、再描画のコストを下げれるらしい。

どっちも計算量を下げるための一手なんだねぇ

mysqlで検索結果のカラム値を変数にキャッシュする

> SELECT @min_user_id := `id` FROM users ORDER BY id DESC LIMIT 1000;

これで @min_user_id に検索結果がキャッシュされる。

select 
 @cache1 = case when ...end, -- int
 @cache2 =  case when ...end, -- int
 @cache1 * @cache2 as calc
from hoge

キャッシュした値でもって計算したいときに便利っぽい。 これがないとサブクエリで倒さないといけなかったのでちょっとだけ便利かも。

以下みたいな冗長なクエリじゃなくなる。

select 
 cache1 * cache2 as calc
from (select 
 case when ...end as cache1, -- int
 case when ...end as cache2, -- int
from hoge) as tmp

scalaのforはflatMapやmap相当らしい

blog.shibayu36.org

val map = Map("a" -> 1, "b" -> 2)

map.get("a").flatMap(a =>
  map.get("b").map(b => {
    a + b
  })
)
map.get("a").flatMap(a =>
  map.get("c").map(c => {
    a + c
  })
)
map.get("c").flatMap(c =>
  map.get("b").map(b => {
    b + c
  })
)

上記のコードは以下のコードと等価らしい。

val map = Map("a" -> 1, "b" -> 2)

for {
  a <- map.get("a")
  b <- map.get("b")
} yield a + b

for {
  a <- map.get("a")
  c <- map.get("c")
} yield a + c

for {
  c <- map.get("c")
  b <- map.get("b")
} yield c + b

上の例では、一番最初だけ Some(3) を返しあとは None を返す。

これは便利だなぁ

【東南アジア1人旅】8/7 0日目 動機

深夜特急を読み、憧れた東南アジアへの旅行。

初めての1人海外旅行。

今、日本からタイに向かう空を飛びながらこれを書く。

ある一言の動機

元はといえば。

新卒1年目24歳のとき、社長にオススメの本を聞いたことが始まりだ。

僕「オススメの本は何ですか?」 社長「深夜特急だね。あの本はいいよ。僕もあの本を読んでから色んな国に行くようになった」

その言葉を聞いてすぐにkindleで購入した。

その時は冒頭を少し読んだだけで読むのを辞めてしまっていた。

なんだか気分が乗らず頭に文字が入ってこなかった。

新宿ミロードの木曜占い師

それから2年経って今年7月、なんだか仕事のやる気が出ず平日木曜に休みをもらい新宿を歩いていた。

新宿ミロードに立ち寄り、昼ごはんを食べようとしたときエレベーターから暇そうにした年配女性の占い師がちらっと見えた。

当時、占いに妙なハマり方をした僕は彼女に占ってもらった。

占いは信じるかどうかは別として、人生を盛り上げられるエンターテイメントとしてとても面白いのでオススメだ。

トンデモでスピリチュアルだけど、乗っかってみると自分だけでは出せないパワーが出せたりする。

その占い師は、何でも木曜しかいないそう。

彼女の言うことは、具体的でかなり僕の思考に近い的を得ていたので、なんとなくその言葉を信じてみることにした。

結果は、「今年は海外の運気が強い。だから色々と旅へ行ったほうがいい。」とのこと。

その一言で何故か急に深夜特急を思い出した。

26歳の渡航

深夜特急は著者の沢木が香港からロンドンまでバックパック1つで旅をしたノンフィクション小説。

約20年以上前、僕が生まれた頃の物語だ。

彼は仕事を辞め、26歳の時に香港に渡航した。

「お、僕と同じ歳だ」

なんて思いながら読んでいた。

たんなる偶然だけど、ちょっと嬉しくなった。

彼は香港に渡航後、マレー半島に渡る。

タイ バンコク〜マレーシア ペナン〜シンガポールを順に鉄道で南下していく。

特にペナン島はとても魅力的に描写されており、心を惹きつける。

娼婦とヒモが住む安ホテルが主な舞台となる。

彼は若き娼婦とそれをタカる陽気なヒモと仲良くなり、同じ屋根の下、溶け込むかのようにまるで青春のような時間を過ごす。

その節を読み、とても東南アジアに行ってみたくなった。

何故、東南アジアなのか

その理由は僕にもよくわからない。

OJTの故郷だったり、好きなYoutuberの居住地だったり、大学の友人の故郷だったり。

色々とこじつけはできるのだけど…

ただなんとなく数多ある国の中で1番惹かれたのがマレーシアだった。

「なんか良さそうだから行こう」

この「なんか」という感覚がひどく直感的だったので、それに素直に従ってみることにした。

住んでみたい国でもあるし、実際に見に行こうと思った。

何故1人旅なのか

深夜特急に憧れた、というと多分それもある。

が、どちらかというと

「誰も知り合いのいない異国( アウェイ)に行ったとき、僕はどこまで1人で耐えれるんだろう」

という負荷テスト的な一面がある。

1人でどこまで行けるのか試してみよう

toeic 400程度で英語力もなく言葉の殆ど通じない異国でひとりで歩くのは不安だ。

騙されるかもしれないし、病気になるかもしれない。

だけど、リスクをとって1人で出ていけるようになった時、もっと自分のことを信じられるような気がする。

死なない程度の失敗は糧になる。

金も荷物も盗られていい。

最低限、5体満足で健康で帰って来れれば良い。

それくらいの気持ちで1人旅に出てきてみた。

長くなってきた。続きはタイで書こう。

【振り返り】仲間内でここ3ヶ月の仕事を振り返ってみた

仲間内でここ3ヶ月の仕事を振り返ってみた

僕が所属する若手ものづくりコミュニティ Oystersでここ3ヶ月を振り返る会をやりました。

友人もブログ書いてますね

僕はここ5ヶ月を振り返った

僕は2月に新しいチームにジョインしたので5ヶ月感を振り返ることにしました。

社内秘的な部分もあるのでぼかしつつ書いていきます。

2月

  • 人材事業部ジョイン(エンジニア->総合職)
  • 総合職っぽい仕事を覚える
  • 電話1日10本&プロフを見まくる1日
    • シンプルに疲弊
  • 土日はほぼ休みなく平日休みだが...暇
  • 司会のおにーさん
    • 噛みすぎて凹む & 場が盛り上がらず凹む
  • この時点で「あ...おれ総合職向きではないかも...」と思う
  • 宇宙兄弟読んで泣いてた
    • ちっちゃい時から物作りで生きる人になりたかった
    • 自分で夢を捨てたことに気づいて絶望した

3月

  • スプレッドシートに激怒する
    • エンジニアからすると複雑なことやろうとすると色々辛い
  • やはり休みはない上に土日出勤の午後はほぼ暇な1日に
    • 午後はほぼ自由になるように設計されていたので仕方がないこと
  • 新しい面談アルゴリズムの話があがる
  • typescriptとgasを触り始め、昼は通常業務、夜はコーティングという生活
  • kintoneの導入
  • 総合職的な仕事が剥がれていき、デスクで1日コード書いてる日々
    • このときあたりから「あれ...おれずっとコード書いてるぞ...?」と思い始める
    • 順調に草が生える
      • 本当に総合職なのか?土日も草

f:id:namu_r21:20190728234917p:plain


4月

  • 面談アルゴリズムのバックアップ策が頓挫
    • 朝起きて寝るまでコードを書く2週間
  • レビューなしのぶっつけで本番適用→見事クリア💯
    • 別のチームでも使われる程度に柔軟性がありナイス設計だった👏
    • とはいえ、負債を産んだかも
  • 新商材のスキーム作成とkintone作成

5月

  • 新商材のフローと運用作成
  • kintone周辺ツールとオンラインチャットツールの導入

個人


6月

  • 新商材自動化のためのスクリプト作成
  • lambda & nodejsで作るが頓挫
  • 無限LT のリーダーしてた
    • 正直これが1番進捗した
    • マジで大成功だったね

namu-r21.hatenablog.com

個人

  • お金勉強会
    • お金は大事

note.mu

  • 不動産の話聞いた
  • FPに相談
  • 個人開発やり始めた

github.com


7月

  • 正式に技術チームにジョイン
  • 担当チーム以外の別チームの要件定義と業務フロー改善(進捗中)
  • 忘れかけたプログラミングの知識を取り戻す
    • Scala, react, reduxの学習
  • コード書けなさすぎて萎えてる
    • scala, react-redux読めなくて吐きそう
    • モダンなフロントエンドに初挑戦
    • react-reduxマジむずくね?

個人

  • ブログ書きながら学ぶの楽しい

まとめ

事業部異動してから触った言語

わーりと色々触ってる。

前チームではphp(symfony)とjavascript(vuejs)程度だけ。

  • Scala
  • typescript
    • react
    • redux
    • gas
    • node.js
  • ruby

5ヶ月を振り返って


ジョインして5ヶ月にしては頑張ってね?


本は無限に読んだ。実質タダだからいっぱいよむ。

よかった本


気づき

仕事

  • 総合職 / 技術職っていうのは便利なラベリング
  • 役割が違うだけで課題解決は一緒
    • 総合職の方々、まじで泥臭い事やってくれてる
      • 数字追うのはマジで向いてなかった
    • エンジニアいなくてもサービスはある程度まわるんやで? を体感した
    • どうやったら価値出るのか、 ビジネスとして何が大事なのか考えるようになった
  • エンジニアリング楽しいからまたエンジニアやろ って一周回って思った

個人

思想

  • 我慢せず楽しいことして生きていこう、みたいな哲学

ブログ

  • ブログ最高に勉強になる
    • 市場調査、ニーズ、マーケ、ライティング、SEOなど
    • ビジネス感覚

お金 - お金で解決できるのはお金で解決できる問題だけ - 経験と時間をお金で買おうと決めた


ゴール

  • 1個、自分のプロダクト作るところを目指してる
  • そろそろ 次のグレードに昇格したい
    • 基礎力なさすぎなので、基礎から固める1年にする