はぜにっき

日記です。(毎日更新ではない)

Next.js v9.4 で追加されたIncremental Static Regenerationの挙動を調べた

ReactにSSRとかファイルシステムルーティングとか色んな機能が付いたフレームワークのNext.jsのv9.4で Incremental Static Regeneration (beta) という機能が追加されました。
betaなのでGAになる頃には挙動が変わっていたり機能が増えていたりしそうですが、一旦現状の動きを調べてみたのでメモっておきます。

Incremental Static Regenerationについて

mizchi.dev

mizchiさんのわかりやすい解説を貼っておきます。

三行でどういうものかを書くと、
初回アクセス時にServer Side Renderingをすると同時に、生成されたHTML, JS等が所定の箇所に保存(キャッシュ)され、
初回アクセスで生成されたタイミングから暫くの間はキャッシュされたデータを使いレスポンスがされて、
キャッシュが破棄されてからアクセスされたら再度SSRしつつキャッシュを行う
という仕組み。

で、Vercelにデプロイする場合はVercelのCDNにキャッシュが保管され、めちゃくちゃ速くレスポンスが返ってくる。
CDNからレスポンスが返ってくるということは、(SPA部分でサーバへリクエストを送るような部分は除いて)サーバへのリクエストが飛びません。

すげーー!弊社のメディアこれでリニューアルしたい!!
ということでちょっと気になったいくつかの挙動を実際に動かして試してみることにしました。

補足: 仕様についてはこちらで議論されています。

英語できないのめちゃくちゃしんどい

github.com

調べたこと

  1. Incremental SSG + SPA 構成の作り方
  2. Incremental SSG で生成されたCDN Cacheはコードをdeployし直したら吹っ飛ぶか
  3. 2.でキャッシュが吹っ飛ぶ場合、Incremental SSG とは関係のない部分のコード変更でも吹っ飛ぶか

1. Incremental SSG + SPA 構成の作り方

普通にIncremental SSGにReact.Componentでできたコンポーネントを設置すればOK

gist.github.com

2021.01.31 追記

正式リリースのタイミングかいつかはわからないけど、 unstable_revalidate オプションは revalidate オプションに名前が変わっていた。
最新のバージョンだと上のコードは動かないので注意。

追記ここまで

components/loading がReact.Componentでできたコンポーネントやっていることは全然ローディングじゃないけど。
コンポーネントJavaScriptも含めてキャッシュされるのでそれがブラウザ上で実行される動き。

生成される静的ファイルは .next/server/static/development/pages に置いてある。
ローカルだとIncremental Static RegenerationはされないのでHTML, CSSファイルは無いので確認はできない。

2. Incremental SSG で生成されたCDN Cacheはコードをdeployし直したら吹っ飛ぶか

A. 吹っ飛ぶ

一応確認した。
デプロイのタイミングで .next/ も全部デプロイされたコードに置き換えられるが、そのタイミングでSmartCDNのキャッシュも全部Purgeされるっぽい。
まあそうじゃなかったら旧バージョンのものが残り続けることになるのでよろしくない。

3. 2. でキャッシュが吹っ飛ぶ場合、Incremental SSG とは関係のない部分のコード変更でも吹っ飛ぶか

A. 吹っ飛ぶ

差分デプロイになってたりしないかな?って思ったけど違った。そうだよね。


調査に使ったコードは以下のリポジトリにあります。

github.com

デプロイ先はこっち
https://isr-and-spa-test-h9i09bkq9.now.sh/mag/1

実用を考えた際の課題

記事の更新をフックにその記事のキャッシュを消す、といった動作が現状できない

https://vercel.com/docs/v2/edge-network/frequently-asked-questionsvercel.com

所謂CloudflareでいうCustom Purgeの機能がなさそう。

How do I use Cloudflare over your CDN (disable it)?) の欄があるし、CDNをVercelじゃなくてCloudflareにすればいいのかも。でもそれだとIncremental SSGの意味が無いような。

デプロイ直後にサーバの負荷が跳ね上がる

デプロイと同時にキャッシュが飛ぶので、その後のリクエストがURLに一回ずつ全部サーバまで飛んでくるようになる。
SSRだとキャッシュされずに全部飛んでくるのでそれと比べたらだいぶ少ないけど。
キャッシュされていることを前提にサーバの台数を減らしていたりすると、デプロイするたびに負荷が上がって大変なことになる。

そういう意味で、デプロイが差分でできたりすると良いなと思った次第。まあこれは難しいよなあ


tech.smartcamp.co.jp

インフラレイヤにあんまり力を入れたくはないけど実現できることは増やしたいので、VercelのFrontend All-inっぽい作りはめちゃくちゃ好き。
なんか貢献できないかな、zeit/next.js のissueとかPRをもうちょっと読んでみようと思いました。

やりたいこと自体はCloudflare + Nuxt.js Universal Mode(をどっかに置く) でできるんだけど、こう、楽したい。

在宅勤務の主な装備を紹介しておきます

こんにちはこんにちは。みんな在宅で装備を揃えたかと思うんですが、こちらのデッキを紹介しておきます。
比較的安価で揃えられるものの中で、良さそうなやつを集めたのでお金があまり無い人の参考になれば。

合わせて読みたい

社での働き方 tech.smartcamp.co.jp

紹介

https://www.amazon.co.jp/gp/product/B071WJPTJNwww.amazon.co.jp

ガス式の昇降式デスクです。
今は売り切れてしまっているんですが、26,999円で購入しました。
同サイズの電気式の昇降式デスクよりはかなり安く、軽いです。
そんな頻繁にスタンディングにしないだろうし、持ち運びが楽で気楽に模様替えしたいのでガス式に。安かったからっていうのもあるけど...

大きさも見た目も使い勝手もかなり良いのでコスパ良しです。おすすめ。

ディスプレイ

会社のディスプレイを拝借して(許可を貰って)家で使っています。そんなに良いものではない。安いしもう一個買ってトリプルディスプレイにしても良いかもしれない。

モニタアーム

友人に教えてもらって買ったやつ。値段の割に妙に良い。
必要があればふたつモニタを付けられるというのは安心できます。

椅子

www.low-ya.com

会社で使っている椅子がかなり自分に合っていて、安いよ!と情シスが教えてくれたので購入。
アーロンチェアは前屈みっぽくなるんですが、これはちょっと後ろに倒れる感じ。長い間座っていても疲れないです。

フットレスト

椅子が後ろ向きで足に少し負担があるのでは?と思い、安かったので試しに購入したらめちゃくちゃ良かった。
会社用にも一つ買いました。本当におすすめ。

自転車漕ぎマシン

運動不足解消に。
朝に通勤時間と同じ時間、Twitterとかインターネットをしながら漕いでいます。あとMTG中。
負荷はちょっと弱いと思っていたんですが、長い時間漕ぎ続けているとわりとしんどくて、丁度良いみたいです。

マイク / オーディオインターフェイス

www.soundhouse.co.jp

https://www.amazon.co.jp/dp/B07YG4KVCF/www.amazon.co.jp

別にもう少し安いのでも良い気がします。
何ならオーディオインターフェイスとか買わずにYetiとか買うほうが楽です。

ただ机の上に普通に置くのはキーボード音や揺れの音が思いっきり入るのでマイクスタンドは安物で良いので買ったほうが良いです。
自分のマイクスタンドは何故か家にあったものを流用しました

机の背面にこれをふたつ横に並べています。
座ったときに上に置いたスピーカーがちょうど頭の高さになります。

スピーカー

www.soundhouse.co.jp

社の人におすすめを聞いたらこれになりました。


手札は以上です。対戦よろしくおねがいします。

TDD Workshop at SMARTCAMP 受けた

たのしかった、し、難しかった。
やった内容も公開して良いしtwitterとかブログとか書いてもいいよって仰っていたので書く

何やってたの

(事前にこれのどれかをローカルに持っておく)

github.com

午前中にこれ(ライブコーディング多め)を講演してもらい

speakerdeck.com

昼はこれをペアで解いた

Revenue Recognition · GitHub

gist.github.com

参加者の大半が自動テストを書いたことがある状態だったので、新作のお試し版になってちょっとラッキーだった(と思う)

演習でわかったこと

  • とりあえずModel作って < ApplicationRecord て書こうとした瞬間にRDBが存在しない世界であることに気付く
  • 俺たちはRuby on Rails(というかActiveRecord)の下で生きているんだなあ...
    • 「これってRubyの機能なんだっけ」っていうのを結構な回数言った
    • Rubyenumは無かった。enumでやろうとしたけどなくて配列にした(😇)
      • Moduleでやればよかった
  • 一回目が一番難しいし間違ったら手戻りがすごい
    • 変な焦り方をすると爆発するのは仕事と一緒。落ち着いて考える
  • 問題の大半が「どこにどう役割を持たせるか」なので、普段どこまでちゃんと設計してやっているかが如実にわかる
    • @haze-it は結構適当。あかん
    • デザインパターンは聞いたことがあってもまともに理解してないと使えない
  • Working Out Loudはスキルの一つ
  • それと同時に隣の人の話を聞くのも大事
  • ペアプロ普段からそこそこやっている気がするけどこの演習は意味わからん疲れ方するので前日はよく寝たほうが良い
    • 普段からそれぐらいの頭を使って仕事をしろっていう意味かもしれない...それはそう...

講演も演習も学べたことは多いけど、それをうまく仕事に持っていけるかどうかは別なので頑張りたい

週4勤務からフルタイムに勤務形態を変えることになりました

合わせて読みたい:

hazediary.hateblo.jp

報告: 時短正社員(週4勤務) -> 正社員(フルタイム) への転換

2020年2月から、スマートキャンプでの勤務形態を変更しフルタイム勤務になることになりました。

内部事情的な話もそこそこあるため詳細な理由は控えますが、少なくとも半年以上はフルタイム勤務になりそう。
今年の後半か2021年ぐらいからは週4に戻したい気持ちはあります。

週1+αの クラウドワークス社の新規事業開発室のお手伝い は副業として続ける予定。今後ともよろしくお願いします。

整理

時短勤務、副業・業務委託者の受け入れは、開発プロセスがそれに合っていないと相当しんどい。
仕様共有の仕組みや取り決め、開発フロー等、理由は色々あるがフルタイムの4/5分の成果は出せていない感覚が暫く続いていて消耗することが多かった。

よく心配にあがるコンテキストスイッチや副業のことが頭から抜けない、といったことについては大きな問題はなかった。
昼休憩中に副業のほうのレビューをするといったこともよくあったが、それが原因で本業に影響が出たりしたことは一度もなかったと思う。

何となく課題感というか、どうすれば解決するかはイメージがついているが、それを今の開発チームで構築してうまく運用していくには人と時間が足りない。 半年後ぐらいには安心して週4に戻してちゃんと成果を出し続けられるようにしていきたいので、仕組み作りと採用はちょっと力を入れていくつもり。

「分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計」読んだ

12月、予定の隙間の時間を使ってゆっくり読んだ。

どういう本だったか

コンテナへのデプロイを前提とした、システム設計のパターン本。
だが、コンテナ化されていなくても適用できるパターンや思想は多く、近代的な設計のシステムでなくても参考になる内容も多かった。
モノリシックなアプリケーションに機能を追加する際のパターンといったものもあり、一通りさらっと読んで頭の片隅に置いておくと良さそうな内容だった。

kubernetesを使ったハンズオンもあり、具体的な構築イメージが湧きやすくとても良かった。

あとkubernetesに限らず、バックエンドのシステム開発、インフラ、コンテナ周りの前提知識はそこそこ必要。パターン本だからそらそう

個人的な感想

hazediary.hateblo.jp

読む動機は、仕事で少しずつ分散システムの思想、考えを使ってアプリケーション改善をやっていくための前提知識の獲得、とっかかりのため。
思っていたよりずっと薄く、気軽に開いて気軽に読めて良かった。
MapReduceってなんだっけ...と調べ直したり、KubernetesのConfigMap オブジェクトって何???てなったりして、事前にもっと知っておくべきものがありそうな気もするが、一旦読んで良かったなと思う。

パターン本、デザパタとかDDDとかあまり読むのが得意じゃなかったけど、一旦気軽に読んでおいて、何か似たような形見たことあるなーって思ったら読み返せばいいか、ぐらいの気持ちで読むとさらっと行けるのかなと今回思った。厚さが全然違うっていうのもあるんだけど。

f:id:hazeblog:20200105225957p:plain
社Slackのtimesにメモを書いている様子

普段、本を読んでいる途中に書くメモをinkdropに書いているんだけど、試しにslackのthreadを使って書いてみたらとても良かった。
短くも長くも書けるし、何より気楽。あと参考のリンクを貼るとOGPが展開されて良い

次に読む本

同じ文脈で次に読もうとしている本。
分散システムのデータ周りを中心とした、今回の本よりもでかくて分厚い本です。がんばろう。

2019年振り返りと2020年にやろうとしていること

2019年に書いたエントリ

hazediary.hateblo.jp

これ含め20記事。去年よりかなり減った。「日記」ぽいエントリが減っただけな気がするからまあ良いかなあ。

大きめの出来事

hazediary.hateblo.jp

転職、同時に兼業を始めた

年初に立てていた目標を見る

hazediary.hateblo.jp

仕事 - Ruby on Rails + React

仕事が変わったのでReactから離れてしまったが、Vue, Nuxtは書いている。
中身までちゃんと理解しているかと言われるとそんなことはない。2018年末よりはだいぶコードも読んだり書いたりできるようになったはず。
とはいえまだまだな部分が多いので来年はもっとコードを書いていきたい。

技術だけではなく、サービス設計、組織などについても考えていきたい。

この辺は転職前後ぐらいからよく考えるようになった。
前職との差分とか、理想形を考えてそこの差を埋めるための動きみたいなことを意識してやっている。これからも継続して続けたい

hazediary.hateblo.jp

趣味えんじにありんぐ - プロダクト開発 / 利益

個人プロダクトは特に作ってない。
副業が0->1、数人で作っている規模感のため割と小さく早く作る、みたいなのは出来ている。
マネタイズはまだまだだなあ、個人でできる範囲も結構狭いんだなというのを今年はたくさん感じた気がするので、ここは考えが変わったかも。やれたらいいんだけど。

表に出る機会

4~5回ぐらいLTした気がする。
Advent Calendar辺りが去年はなかった取り組みだったかなあ。
他の人に見られる文章っていうのを多少気にするようになった。

健康

去年よりは確実に健康になった。めでたい。
年末に溶連菌にかかってしまったが、それ以外は1〜2回風邪を引いた程度なので全然良い。
睡眠不足は徹夜麻雀とかカラオケとか泥酔とかしなければあんまりならなくなった。

今後の選択肢を増やす

副業をやり始めたり、転職を考えたタイミングでそれなりに選択肢はあるなあと思った気がする。

海外で働きたい意欲は元々特になかったが最近は更になくなってきてしまい、国内指向が強くなった。
放送大学、籍はあるんですが単位もそこまで取れていない。来年続けるか少し悩んでいる...

振り返り

仕事について

転職
今年も転職をした。
3回転職をしているけど、する理由も毎回違うし仕方ないというか、今のところ後悔はしていないし説明もできるから良いかなと思っている。

副業
本業と副業、両方をやっている体制は個人的にはとても楽しいし、本業だとあまり触れない方面の技術(Firebaseとか)が触れててとても勉強になっている。

ただ、副業で学んだことを本業で活かせているかというとそうでもないなあというのが最近ちょっと考え事になっていて、まだ自分の勉強のためにしか週4勤務ができていないので少し申し訳ない。
来年やっていくプロジェクトを考えていると、週4で本当になんとかなるかな、という不安もあったりするので、また少し後に振り返って考えてみようと思っている

長期スパンでのキャリアについてはまだわからない。数年は振り子みたいな形でエンジニアリングをやりつつ、飛び込むタイミングがあれば別のことをしつつ、みたいな感じになりそう。

仕事以外

ダイビングをやった。かなり楽しいけどお金が飛ぶ。
ゴルフを再開した。かなり楽しいけどお金が飛ぶ。ダイビングほどではない。
麻雀を会社でやるようになった。お金は飛ばないけど時間が飛んでいく。

彼女はいません。よろしくおねがいします。

来年やろうとしていること

Developerとして

来年はちゃんとエンジニアリングというか、技術をちゃんと付けたいなと思っている。
小手先でなんとかする、とかが多いほうだと思っていて、土台になる部分がまだ出来てはいないなあとよく感じるし、危機感も多少ある。
後述する通り、しばらくはバックエンドをやっていくのでそこにちゃんと集中できるように動いていきたい

本業

hazediary.hateblo.jp

にも書いているが、リファクタリング・サービス分割に関わっていくことになりそうなのでその辺りの知識習得と技術をやっていく、と思う。
急いで分散システムや設計の本を読んでいる。1〜2月ぐらいで読み切りたい&なんとなく理解したい。

プロダクトもそこそこでかいし負債もまあまああるので、既存のコード理解とかドメインロジックを理解した上で理想形を考えていく、というのをやる予定。
がんばりたい

副業

引き続き。
プログラマとしての成果を出した上で、本業だとすぐ出来なさそうな技術とか方針を習得するお気持ちは持ち続けたい。のと、前述の通りに本業にどうやったら還元できるかも考えつつ。

イベント・カンファレンス運営

Builderscon tokyo 2020 のスタッフになった のでやっていく。

スマートキャンプの勉強会にも結構かかわることになった。外から見た会社とか色々意識しながら施策を試していきたい。

アウトプット

コードで出せることはコードで、文章に起こすべきこと、言葉でちゃんと伝えないといけないことの使い分けを意識してやっていきたい。
考えや方針を文書で説明できるスキルはそれなりにあるっぽいので、うまく使っていく。

全体的に、無理して先のことを考えようとするとうまく行かない気がしているので、現状とあるべき理想のイメージだけを意識して動いていきたいねって思った。
プライベートは体調を崩さない程度に遊んで、温泉とかいっぱい入って良い感じにやりたい。

来年もよろしくお願いします。🙏

2019年12月振り返り

年末ですね。

前回

hazediary.hateblo.jp

業務

本業

BOXIL

ボクシルSaaS - 法人向けSaaSの比較・検索サイト

BOXILの開発を引き続き。少しずつ機能を覚えてきているんですが、こんな画面あるんだ...が毎週のように出てきます。すごい。 Railsあんまりちゃんと理解せずに書いているなあと毎回思うので、Rails Guideを読み直したり現場Railsを一通りやったりしようと思っている。

tech.smartcamp.co.jp

平成Ruby会議でBOXILの課題について話してきました。
来年はスライドに書いてある リファクタリング・分割大作戦をやっていく予定です。大変。一緒にやってくれる人を募集しています。

tech.smartcamp.co.jp

アドベントカレンダーをやっておりまして、自分は上記のスポンサーをした話と、オンボーディングのお話を書きました。

smartcamp.connpass.com

あと、弊社主催のイベントの運営手伝いとLTを。

前月からやっているドキュメントツール移行は無事成功しそうです。Kibelaめっちゃ良い。

副業

Firestore, Nuxtがそこそこ慣れてきました。良かった良かった。
LPを改修したりレスポンシブの対応で苦しんだりしてCSSもだんだんまともに書けるようになってきた気がします。多分。

読んだ本

読んでいる途中。12/31までに読み終わる予定。
次に現場Railsを流し読みする。

イベント

Firebase Meetup #15 Cloud Functions Day - connpass
【PLAID × ラクスル】Vue.js for 2020 - connpass
に参加した。

B2B SaaSエンジニアMeetup - Sharing Issues #2 - connpass
平成Ruby会議01@株式会社ドリコム - connpass
でLTをした。

ブログ

仕事をする上で気をつけていることを整理してみる - はぜにっき
エンジニアチームで行っているオンボーディングを紹介するよ - SMARTCAMP Engineer Blog
平成Ruby会議 01 にドリンクスポンサーとして参加しました - SMARTCAMP Engineer Blog
スマートキャンプ、TechBowlのAdvent Calendarで書いた。会社のブログで書くのちょっと力むから大変だった。

業務外

  • 忘年会等々でかなり飲んだ。人生で一番か二番目ぐらいに飲んだ月だったかもしれない。
  • 徹夜麻雀をした。
  • 徹夜カラオケをした。
  • 自宅が職場の酔っぱらい達の宿になり始めた。まずい。

  • 社内SlackでNon Engineer達にtimesを流行らせた

  • 溶連菌にかかった。

38.9°まで上がって筋肉痛がありめちゃくちゃふらついたので絶対インフルエンザだと思ったら違った。

  • 歳を取った

寿司を握りました。

先月の「来月やりたいこと」の振り返り

  • CSSと仲良くなる
    • => まずまず
  • GCPのサービス諸々を触る
    • => あんまり触れてない。時間を作る
  • Vue, Nuxtの設計を考える
    • => まずまず
  • 年末年始にやることを考える、何かする
    • => 本を読むことにした
  • 手を動かす
    • => Vueは適度に書いてたけどRailsはあんまり書けてない
  • 鍋をたくさん食べる。野菜をたくさん入れる
    • => 三日に一回ぐらい食べてるから良さそう
  • クリスマスは慎ましく生活する
    • => クリスマスイブの夜は麻雀をしました

来月やりたいこと

  • 積本の消化
  • RubyRailsの読み書きを増やす
  • ウイスキーを嗜めるようになる
  • 副業先プロダクトのリリース
  • 温泉に入る
  • 食洗機の設置

仕事をする上で気をつけていることを整理してみる

なにこれ

qiita.com

【Mentor Ver.】TechTrain Advent Calendar 2019 の9日目のエントリです。
前回は @fkske_pro さんの アウトプットスキルを加速させる越境学習のススメ でした。


目次


はじめましての人ははじめまして。

はぜ という名前でインターネットをしています。スマートキャンプという、全然キャンプと関係のないWeb事業をしている会社で働いています。
TechTrainのメンターには同僚に誘われて、先月なったばかりです。よろしくおねがいします。

仕事をする上で気をつけていること

現在4社目なんですが、普通に働いていたり、転職をしたり、副業をしてみたりしていく中で、"これは意識してやろう"、と決めていることがいくつかあります。
それらがもしかしたら人のためになるかもなあ、と思ったのでその紹介をゆるくやっていくことにします。

意識してやろうとしていること

  1. 自己開示
  2. 正直であること、わからないことはわからないと言う
  3. 立場と視点を気にする
  4. ちょっとだけ無理をする

です。

1. 自己開示

入社した時、チームが変わったとき、そういったときに自己紹介は嫌というほどやると思いますが、それ以外でも積極的に自分のことを話すことを心掛けています。

自分がどういう考えで物事を決めているのか、考えているのか、仕事をやっている上でどこを気にかけたか、どこができなくて後悔したか、半年後どうなっていたいか...
1on1でマネージャには伝えても、チームメンバには伝えていなかったりしませんか。

どうしてやるのか

私は特にですが、隣で働いている人がどう考えて、どう思って仕事をしているのかが気になります。
また、一緒に作業をしている人が何を得意としていて、何が苦手かが気になります。

それを知っていることで、 「このタスクは自分よりこの人のほうが得意だから、一緒にやって教えてもらう」 とか、
「この作業はあの人があんまり好きじゃないって言っていた。自分は結構好きだから代わりにやってもらおう!」 とか、そういう動きができたりします。

それは相手のことを知らないとできません。自分のことを知ってもらい、適切な判断を取り合っていけたら良いなあと思ってやっています。

どうやるのか

やり方はいくらでもありますが、自分は可能な限り文章化するようにしています。
自社だとKibelaという情報共有ツールを使っており、そこに色々書きなぐっています。

入社した直後に自分の経歴とか会社でやりたいこと、今後どうなりたいか、仕事以外で何やっているか、趣味とかを書いた自己紹介を投稿したり、
こういうこと全社でやったほうが良くない?と思ったら提案する文章を書いたり、
よく聞かれることをまとめて書いたりしています。

f:id:hazeblog:20191208142849p:plain
現職には週休3日の時短正社員として入社していて、休みの日なにしてんの?とよく聞かれるので書いた

※社内のあだ名文化により、 とってぃ と呼ばれています。まだ慣れません。

.

それとは別に、金曜の夜に週報を書いています。

f:id:hazeblog:20191208143503p:plain
週報は前職で書いている人がいて真似しました

週報を書くことでチームメンバに今自分がやっていることを共有したり、自分の頭の整理をしたり、タスクが溢れていないか確認したり、といったことが毎週できます。
あとちゃんと書いていると半期評価とかのタイミングでこれを読むだけで大体何してきたかがすぐわかって便利。おすすめです。

(あとは当然、対面でのコミュニケーションもたくさんします。)

2. 正直であること、わからないことはわからないと言う

そのまんまです。

どうしてやるのか

1.自己開示 と被るのですが、正しく人に自分の状況、知識を伝えないと誤解されて大変です。
自分ですぐ調べられる範囲であれば、調べればわかるから大丈夫、と伝えれば大丈夫だと思いますが、そうでない場合は自分でなんとかするしかなくなります。大変です。

どうやるのか

「初心者なので...」とかの前置きをせずに、「わからん!!!」と自信を持って言うと良いです。
むしろ先に「こことここがわからんから事前に教えてくれ、どっかに書いてあるなら文献をくれ」みたいな感じで言うと大体教えてくれます。

業界全体に薄く 自分で調べられないとエンジニアではない みたいな雰囲気がある気がしますが、3年ぐらい仕事をしていてもわからないことは無限にあるし、自分の触ったことのない技術はわからなくて当然です。
自分で数分調べてみて、あと10分かけてもわからなさそうなら軽く聞いたほうが良いと思います。仕事中は特に。

人に説明してもらうより自分でコードを読んだり調べて納得したほうが理解が深まりやすい(はず)なので、自分で調べてなんとかする力は並行して身につけていきましょう。

(自分は考え込んで時間を無にしがちなので、仕事中は意識してすぐ聞くようにしています...)

3. 立場と視点を気にする

いわゆる視座の話です。
(自分が今マネージャならメンバであるこの人にはこう動いてほしいな) みたいな考え方をしたり、
(自分がこう動いているけど、事業部全体で言うと今これやるよりこっちを進めたほうが良いんじゃないかな?提案してみるか) みたいな動き方をすることです。

どうしてやるのか

ざっくり言うと組織のパフォーマンスの最適化のためです。
状況によって "一メンバに徹したほうが良い" ときもあれば、 "チーム外のことまで手を広げたほうが良い" ときもあります。

また 開発者として働いていて、相手が何を求めているかを考えなければならないタイミングは多いです。

どうやるのか

一番良いのは経験してみることだと思います。
マネージャになってみる、チームリーダとして動いてみる、CSの仕事を手伝ってみる、などなど。

rfushimi.hatenablog.jp

(個人的に参考にしている考え方です。)

難しければ当事者に話を聞いてみたり、ある程度想像で考えてみたり、という形になるかなと思います。
自分はよくPdMに1on1で 「先週はこういう目線でこう動いてみたんですけど、あなたから見てどうでしたか?」と聞いています。

4. デフォルトはちょっとだけ無理をする、疲れたらちょっとだけ手を抜く

どうしてやるのか

まだ開発者としてはまだまだ下っ端(だと思う)なこともあり、技術者としての成長速度はもっと上げたいと思っていて、
とはいえ無茶をしすぎて身体を壊したり精神的に疲労するのも嫌なので、適度に難しいことに挑戦しよう、という意識からです。

どうやるのか

定期的に自分の状態を振り返る運用をしています。
部屋の散らかり度合い、気持ちの浮き沈み、一人で酒を飲んだ量、実施したタスクの数や質、スケジュールの空き具合、など。

めっちゃバリバリ仕事ができていると思っていても実はこなしたタスク自体は小さかったり、一週間で部屋が異常に汚くなっていたり、妙に気分が落ちたりしたら次の週は意識して手を抜くようにしています。
体調が悪い(実際こういうときは大体悪い)と言って有給を唐突に入れて一日ゆっくりしてみたり、早めに帰って近場の温泉に行ったり、外食したりすると良いです。

どうしても無理をしないといけなくなる瞬間はあるっちゃあるんですが、一人一日休んだところで事業が死ぬようになることはそうないです。まあ役職がついたり経営者とか取締になってくるとそうも行かなくなるんでしょうが...

疲れてきたらチームに共有して、ちょっと来週はやる仕事減らすと思います、みたいなことを言ったりすると多少は気を使ってくれると思います。たぶん。
逆にチームメンバがつらいって言ってきたら助けてあげる ぐらいのことはやってあげると良いでしょう。徳を積むのも大事です。

最後に

そんなことを考えながら仕事をしています。(できていないときもたくさんあります。)

Engineerと言っても根本的には会社に属して業務に従事する以上はビジネスマンなので、コードを書く、ものを作るだけではうまく行かないことが多いです。
色んな人と協力しながらプロダクトを、サービスを作ることを楽しみつつ、仕事ができると良いですね。

これからソフトウェアエンジニアとなる、なったばかりの、あるいはまた別の誰かの参考になればと思います。

次回は @umikawat さんの 次世代のエンジニアを目指す人に伝えたいこと(IT業界を15年経験してみて) です。おたのしみに。

qiita.com

2019年11月振り返り

はぜです。
もう12月ですか...

前回

hazediary.hateblo.jp

業務

本業

チーム往復

Biscuet(ビスケット)|「インサイドセールスで、営業活動を最適化」インサイドセールス特化型CRM

11月の前半2週間は配属先ではないBiscuetの開発チームにお邪魔して、コードを書いたりスクラムのセレモニーに参加したりしていました。
Vue.js + Rails API Modeの構成だったおかげか、キャッチアップはそこまでしんどくなく普通にプログラマとして働けました。よかったよかった。

ボクシルSaaS - 法人向けSaaSの比較・検索サイト

後半はBOXILの開発チームに戻り色々やってました。
相変わらずRailsのViewとかslimとかRoutingには苦しめられています。全く慣れない...どうしたものか...

開発以外のところ

ドキュメントツールの刷新プロジェクトを立ち上げて作業中。全社説明とか調整とかが大変です。
入社して一ヶ月しか経っていないのにいきなりM&Aしたのでマネフォの人たちと交流したり麻雀したりしました。

副業

Firestoreになんとなく慣れてきた。気がする。
rulesがつらい。エラー起きたときの原因調査にめちゃくちゃ時間を取られがち。
Nuxt / Vueもそれっぽく理解して境界をどこに置くかとかはちゃんと考えられるようになってきた。
Vuexおつらい、というかSPA上にでかいStore置きたくないという気持ちになっている

CSSまじわからん 助けてくれ

技術面

Vue

templateの拒否反応は少しずつ薄れてきた、コンポーネント間のデータの受け渡しはずっともやもやしながら書いている
コンポーネントの分け方とかStoreの使い方とかの自分用の型みたいなのを作りたいなと思っていて、
自分で色々作ってみて試行錯誤しようと考えている。年末とか。

Rails

全然RailsとかRubyのことを理解していないんだなーと最近よく感じる。
どこまでがRailsで一般的なものなのか、どこからがアーキテクチャパターンで使われるものなのか、どこからが独自で存在するものなのか みたいなところをもう少しパッと分かるようにしたい。
Rails Guideを読み直しているが現場Rails買って一通り読むほうが早そう。

読んだ本

GCP使いたい...

Webフロントエンド ハイパフォーマンス チューニング

Webフロントエンド ハイパフォーマンス チューニング

前提知識の総まとめ、という感じの本でとても良かった。

s-dev talks 〜サービス開発勉強会〜 - connpass でLTをした。

業務外

  • 麻雀をした
  • ゴルフコース回った。10年前よりスコアは落ちた、がリハビリはできた
  • 酒を飲む回数がかなりに増えた。これは会社のせい
  • 10月に上がっていた睡眠の質が下がった。多分酒のせい

  • 転職により10月給与が無い状況に陥っていたがなんとか耐え忍ぶことができた

  • だめそう

来月やりたいこと

  • CSSと仲良くなる
  • GCPのサービス諸々を触る
  • Vue, Nuxtの設計を考える
  • 年末年始にやることを考える、何かする
  • 手を動かす
  • 鍋をたくさん食べる。野菜をたくさん入れる
  • クリスマスは慎ましく生活する

2019年10月振り返り

はぜです。
ここ一年ぐらい直近の記憶が飛ぶことが多いのでメモ取る癖が強くなりました。原因はアルコールな気がしますが、どうでしょう。

業務

入社

hazediary.hateblo.jp

本業

スマートキャンプというキャンプ用品メーカーみたいな名前のWeb企業に入社しました。
10月はBOXILというメディアとCRMが合体してその上にメディアとメディアとLPページと細々を乗せたようなサービスの改修をやっていました。
所謂モノリスRailsを初めて触って不思議な気持ちになりました。
チームとしてはモブプロをやって振り返って改善していくのを毎日していて、少しずつ良くなっていくのが面白いです。すごい疲れます。

来月は営業向けのSaaSを作るチームにいます。VueとRailsだそうです。

ついでに住宅補助が出るようになるので田町に引っ越しもしました。田町は家賃以外は最高の土地なのでおすすめです。

兼業

Nuxtの雰囲気が少しだけわかってきました。
まだFirebaseとは仲良くなれていません。OR検索したい。

技術面

Vue

前職でReactを雰囲気で書いていたんですが、最近はVueです。
正直まだよくわかっていない部分が多いのと、templateの拒否反応がまだあるので早く何とかしたい。
HTML, CSSとブラウザの理解が薄いことが原因なのかなと思ったので最近はそっち方面の本を読んでいます。

TypeScript

兼業がNuxt + TypeScriptなのと、会社の開発合宿でLambdaにNode.jsを載せてAPIサーバを作る際にちょっと型を付けたりしました。
まだ型パズルができませんが、少しずつ読んだり書いたりができるようになってきて成長を感じたり感じなかったりしている。
実践TypeScript の写経がかなり良かった。

Rails

触ると思っていたらほとんど触らなかった。

読んだ本

Nuxt.jsビギナーズガイド―Vue.js ベースのフレームワークによるシングルページアプリケーション開発

Nuxt.jsビギナーズガイド―Vue.js ベースのフレームワークによるシングルページアプリケーション開発

  • 作者:花谷 拓磨
  • 出版社/メーカー: シーアンドアール研究所
  • 発売日: 2018/10/17
  • メディア: 単行本(ソフトカバー)

Nuxt.jsを触るために写経。
これで大体の雰囲気を理解して小さいProductionのコードを書けるようになった。おすすめです。
Vue.jsは公式ドキュメントとググりで補完している。

実践TypeScript ~	BFFとNext.js&Nuxt.jsの型定義~

実践TypeScript ~ BFFとNext.js&Nuxt.jsの型定義~

前職でTypeScript力が足りないことを実感したので購入して積んでいたのを読んだ。
会社に置いて定期的に読んでいる。まだすべてを理解できているわけではない。

booth.pm

会社の開発合宿でDynamoDBを触ることになったので読み直した。
10分ぐらいで読める割にこれを読んだら多少触れるようになれたので良かった。

読んでいる途中。ブラウザの気持ちになりたい。
一番最初のブラウザの描画の流れだけでもかなり勉強になって良い。

イベント運営の手伝いを2つした。本業での開催と兼業先での開催。

【増枠】B2B SaaSエンジニアMeetup - Sharing Issues #1 マネジメント - connpass

【増枠】Vue.jsアーキテクチャリング勉強会 - connpass

事前準備は大変なんだなというのを実感した。
11月〜12月もどこかでお手伝いをするっぽい。

業務外

  • 麻雀を片手で数えられないぐらいはした
  • 酒を結構飲んだ
  • 健康診断はBが2つあった(血中中性脂肪コレステロール)
  • ゴルフを再開した
  • 保険に入った(Orico団体保険)
  • タコパが楽しい
  • 睡眠の質が大幅に向上した

所感

時間が足りないと思うことが大幅に増えた。
効率的にやっていくのと、自分じゃなくて良いところをうまく依頼したりなくしたりしていくことを11月は意識したい。

人と話す回数が大幅に増えて良い。
モブプロはずっと話しているので疲れるというのはあるが、その分コミュニケーションしているなあという実感が強くなって精神衛生上良い。
あとかなり疲れるのか睡眠の質が上がる。本当に上がった。

11月にやりたいこと

  • Vue, Nuxtにもう少し慣れたい
  • TypeScriptも同様
  • シュッと作りたいものを作る
  • 仕事の効率化
  • 兼業へのコミットを増やす
  • ゴルフとピアノを頑張る
  • 麻雀は頑張らない