タグ

ブックマーク / numb86-tech.hatenablog.com (16)

  • もうすぐ 40 歳になるが労働を 3 年以上続けられたことがない IT エンジニアの話 - 30歳からのプログラミング

    「30歳からのプログラミング」と題したこのブログを書き始めたのが 2016 年 3 月。 そこから月日が立ち、立派なアラフォーとなったわけだが、私はこれまで 3 年以上継続して働いたことがない。プログラマに転身する前も含めて、である。一度もない。 3 年経つ前に、必ず無職になってしまう。労働して貯めた貯金い潰しながら無職生活を送り、カネが無くなりそうになってまた働く、ということを繰り返している。 だが、今の勤務先(株式会社HERP)に入社したのは 2021 年 10 月 1 日であり、入社してからもうすぐ 3 年になる。 つまり、 3 年以上労働を続けることになる可能性が高い。 仮にこの記事を投稿した直後に退職を決意したとしても、引き継ぎや有給休暇の消化などで、さすがに 9 月末までは在籍していると思う。そうなれば 3 年到達である。 今までの会社を辞めてきた理由は様々だ。同様に、今の

    もうすぐ 40 歳になるが労働を 3 年以上続けられたことがない IT エンジニアの話 - 30歳からのプログラミング
    mizdra
    mizdra 2024/09/01
    楽しそうで良かった
  • Next.js の skipTrailingSlashRedirect で trailing slash の設定をカスタマイズする - 30歳からのプログラミング

    Next.js のv13.1.0で追加されたskipTrailingSlashRedirectを使うことで、 trailing slash に関する挙動を自由に設定できる。 この記事では、skipTrailingSlashRedirectによって具体的にどのようなことが可能になったのかを見ていく。 動作確認はv13.1.1で行った。 環境構築 まずは Next.js の環境構築から。 $ yarn create next-app sample --ts こうするとsampleというディレクトリが作られるので、そこに移動して作業を進めていく。 まず、next.config.jsのbasePathに"/app"を指定する。 /** @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: true, b

    Next.js の skipTrailingSlashRedirect で trailing slash の設定をカスタマイズする - 30歳からのプログラミング
  • TypeScript の esModuleInterop フラグについて - 30歳からのプログラミング

    esModuleInteropフラグを有効にすると、コンパイル時にヘルパーメソッドが生成されるようになり、モジュールシステムの相互運用性が高まる。 これにより、defaultをエクスポートしていない CommonJS 形式のモジュールを、ES Modules でデフォルトインポートする、といったことが可能になる。 この記事の内容は、TypeScript のv3.9.6と Node.js のv12.17.0で動作確認している。 ES Modules と CommonJS の互換性 まず、検証用に以下のファイルを作成する。 // src/myModule.js const add = (a, b) => a + b; module.exports = { value: 123, add, }; // src/index.ts import {value, add} from './myModu

    TypeScript の esModuleInterop フラグについて - 30歳からのプログラミング
    mizdra
    mizdra 2022/10/26
    わかりやすい
  • Node.js Stream の初歩 - 30歳からのプログラミング

    Node.js には Stream というインターフェイスが用意されており、これを使うことでデータをストリーミングできる。 Stream を使うことで、データの全てをメモリに保持するのではなく、少しずつ順番にデータを処理していくことが可能になる。 この記事では、Stream の基的な使い方について説明していく。 WHATWG で定義している Stream はまた別の概念なので、注意する。この記事で扱っている Stream は、それとは別に以前から Node.js に実装されている Stream である。 以下の環境で動作確認している。 Node.js のバージョン 16.15.1 使っている npm ライブラリ @types/node@16.11.43 ts-node-dev@2.0.0 typescript@4.7.4 環境構築 まず最初に、手元で実際にコードを動かすための環境を構築す

    Node.js Stream の初歩 - 30歳からのプログラミング
    mizdra
    mizdra 2022/07/14
    drain と highWaterMark へー
  • 引きこもり・日記・エンジニア人生 - 30歳からのプログラミング

    2 年ぶりに労働し始めたことでブログの更新頻度が露骨に落ちているが、文章を全く書いていないわけではなく、折に触れて社内で長文を投下している。 社内向けの怪文書ばかり書いていて、パブリックなブログを全然書けない。— なむ (@numb_86) 2021年12月29日 内容は当に個人的なものというか、自分が考えていることや思っていることを書いているだけで、ブログと同じノリでやっている。 これは私だけがやっているわけではなく、例えば代表の庄田も最近考えていることや意識していることを scrapbox に書いていて、いくつかはブログの一部として社外にも公開されている。 自分の考えを文章にすることは私にとって自然なことなので深く考えずに書いていたのだが、その結果、会社から特別手当が支給された。 勤務先の HERP ではクオーター単位で全社的な振り返りを行っているのだが、そのタイミングで、会社が掲げ

    引きこもり・日記・エンジニア人生 - 30歳からのプログラミング
  • React の Concurrent Mode を使ってみる(2020年12月版) - 30歳からのプログラミング

    React で開発が進められている Concurrent Mode。 まだリリース前の開発中の機能だが、「実験的機能」として提供されており、Experimentalビルドをインストールすることで利用できる。 Experimentalはリリース間の安定性を何も保証しておらず、破壊的変更が行われる可能性がある。Concurrent Mode の動作も、大きく変わる可能性がある。 記事のタイトルに「2020年12月版」と入れたのは、そのため。 公式ドキュメントでは「並列モード」と翻訳されているが、まさに、並列的にレンダリングを行えるようになる。 ネットワークからデータを取得して要素をレンダリングする際に、ユーザーに見えないところで新しいレンダリングの準備をしつつ、データが取得できるまでは古いレンダリングを表示しておく、といったことが可能になる。 この記事では、どういった仕組みでそのようなことが可

    React の Concurrent Mode を使ってみる(2020年12月版) - 30歳からのプログラミング
    mizdra
    mizdra 2022/01/08
    難しかったけど分かりやすい
  • React の新しい概念「トランジション」で React アプリの応答性を改善する - 30歳からのプログラミング

    React v18 には多くの改善や新機能が盛り込まれる予定だが、そのなかでも特に注目を集めると思われるのが、Concurrent Features と呼ばれる一連の機能。 これらの機能を使うことで、コンポーネントのレンダリングについてより柔軟な設定が可能になり、上手く使えばパフォーマンスや UX の向上を実現できる。 この記事では Concurrent Features のひとつであるstartTransitionと、それを使いこなす上で重要な概念である「トランジション」について説明する。 この記事ではコンセプトの説明や具体例の提示のみを行う。詳細を知りたい場合は以下を参照。 一年前の記事であるため古くなっている部分もあるが、根幹は大きく変わっていないと認識している。 なお、上記の記事には「Concurrent Mode」という用語がタイトルに入っているが、これは今後は使われなくなってい

    React の新しい概念「トランジション」で React アプリの応答性を改善する - 30歳からのプログラミング
    mizdra
    mizdra 2022/01/06
    分かりやすい
  • React のクラスコンポーネントの bind は何を解決しているのか - 30歳からのプログラミング

    クラスコンポーネントでイベントハンドラを設定する際に必要になる、constructorメソッドでのバインド。 そもそもこれはなぜ必要なのか。どのような動作をすることで、どのような問題を解決しているのか。 Hooks が登場したことで今後はクラスコンポーネントを書く機会は減っていくと思うが、これは React 固有の話ではなく JavaScript の言語仕様の話なので、理解しておくに越したことはない。 React のコードは React のv16.10.2で、それ以外のコードは Node.js のv12.12.0で動作確認している。 問題のおさらい bindしないと何が起こるのか。 以下は、ボタンを押すたびにオンオフが切り替わるコンポーネント。 import React from 'react'; class App extends React.Component { constructo

    React のクラスコンポーネントの bind は何を解決しているのか - 30歳からのプログラミング
    mizdra
    mizdra 2021/11/24
    分かりやすい
  • 技術選定の観点や技術の優劣について - 30歳からのプログラミング

    技術選定を行う前にまず、どのような開発組織にしたいのか、どのように事業を進めていきたいのか、そこを整理しないと上手くいかない。 そんなことを最近考えていたので、ブログに書いておく。自分は書くことで思考を整理していくので。 この記事では、「技術選定」そのものについて書いていく。 そのため、個別のライブラリの良し悪しを判断する手法などについては扱わない。もっと抽象度の高い、どのような考え方や態度で技術選定に臨むべきか、というようなことを書いていく。 また、作りたいものを作れるか、仕様を満たせるか、セキュリティ上の問題はないか、などの当然の前提は省く。 そういった「最低条件」を満たした技術が複数あったときにどうやって選ぶのか、という意味での「技術選定」を扱う。 お互いの「納得感」のためにもまずは軸を明確にする 技術選定について考えたり誰かと議論したりする際には、「自分たちは今、どういう観点を基準

    技術選定の観点や技術の優劣について - 30歳からのプログラミング
    mizdra
    mizdra 2021/11/23
    良い
  • プログラミングを勉強するために 30 代半ばの 2 年間を無職として過ごした話 - 30歳からのプログラミング

    2019 年の夏に前職を辞め、そのまま無職として過ごし今年の 10 月にようやく再就職して働き始めた。 何か事情があって働けなかったわけではなく、プログラミングの能力を伸ばすために敢えて就職しなかった。 自分にとってそれなりに重要な期間だったと思うので、記録を残しておく。 予め断っておくが、何か「すごいこと」を成し遂げたわけではない。「すごくないプログラマ」が少しでもすごくなりたくて勉強していた話に過ぎない。 「すごいプログラマ」が「すごいこと」をした話を読みたければ、以下の記事などがよいと思う。 会社をやめて約1年プログラミングの勉強に費やしたことに対する満足と後悔 | blog.ojisan.io 2年間の独学をふりかえって – Happy Coder 予防線を張ったところで、題に入る。 背景や動機 プログラミングの勉強をするために前職を辞めたわけではなく、退職の理由は別にある。 そ

    プログラミングを勉強するために 30 代半ばの 2 年間を無職として過ごした話 - 30歳からのプログラミング
    mizdra
    mizdra 2021/10/16
    おお!ブログ楽しみに読ませてもらってました。ご就職おめでとうごさいます。
  • Yarn のワークスペースの初歩 - 30歳からのプログラミング

    Yarn にはワークスペースという機能があり、これを使うとひとつのリポジトリで複数の npm パッケージを開発できるようになり、効率的に作業を進められるようになる。 この記事の内容は、Yarn のv1.22.4で動作確認している。 シンボリックリンクが作られ、パッケージをまたいだ開発をしやすくなる ワークスペースをつかうためには、リポジトリのルートディレクトリにpackage.jsonを作成し、workspacesフィールドを指定する必要がある。 また、このディレクトリをパッケージとして公開することはないので、privateフィールドをtrueにしておく。 { "private": true, "workspaces": ["project-a"] } 上記の例では、project-aというディレクトリを、ワークスペースの対象としている。 次に、以下の内容の./project-a/pack

    Yarn のワークスペースの初歩 - 30歳からのプログラミング
    mizdra
    mizdra 2020/12/30
    分かりやすい
  • useEffect の概要と async function を使う際の注意点 - 30歳からのプログラミング

    使用している React のバージョンは16.8.4。 レンダー後の処理を指定するための仕組み React Hooks の一つであるuseEffectは、レンダー後に実行したい処理を React に伝えるための仕組み。 useEffect(fn)と記述すると、DOMの更新が終わったあとにfnを実行する。 useEffectはレンダー後に必ず実行される。最初にレンダーした際もそうだし、propsやstateに変更があってレンダーし直した際もそう。そこに区別はない。 以下の例では、このコンポーネントが表示された際にeffect!というログが流れる。 そしてボタンを押下した際にも、その都度effect!というログが流れる。 import React, {useState, useEffect} from 'react'; const App = () => { const [state, set

    useEffect の概要と async function を使う際の注意点 - 30歳からのプログラミング
    mizdra
    mizdra 2020/12/26
  • webpack のコード分割の初歩 - 30歳からのプログラミング

    JavaScriptTypeScript を使ってウェブアプリを提供する場合、開発時はimportやexportなどの ES Modules を使い、公開時はファイルをバンドルして公開することが多い。 以下の記事に書いたように、現在の主要なブラウザは ES Modules に対応してものの、バンドルせずに公開してしまうとパフォーマンスに悪影響を与える可能性がある。 numb86-tech.hatenablog.com ファイル数が増えれば増えるほど影響は深刻になるため、依存関係が深いライブラリを使っている場合などは、レイテンシが飛躍的に増加してしまう。 そのため、バンドルせずに公開するのは現実的ではない。 バンドルしてひとつのファイルにまとめてしまえば、JavaScript のダウンロードは一度で済む。 しかしそうすると今度は、バンドルファイルの肥大化という問題が発生する。 巨大なフ

    webpack のコード分割の初歩 - 30歳からのプログラミング
    mizdra
    mizdra 2020/12/06
    webpack のコード分割についていて色々説明されてて良い
  • TypeScript における変性(variance)について - 30歳からのプログラミング

    プログラミングの型システムに関する記事を読んでいると、共変や反変といった用語が出てくることがある。 TypeScript や Flow についての記事でも、見かけることがある。 それらは TypeScript を使う上で必須の知識ではないが、把握しておくに越したことはない。 この記事では、TypeScript を題材にして、変性について説明していく。 TypeScript に関する議論を理解できるようになることがこの記事の目的であり、より詳細な、学術的、数学的な内容には踏み込まない。 この記事の内容は、TypeScript のv3.9.5で動作確認している。 変性 変性(variance)とは、任意の型Tに対してどのような性質を持つのか示したものであり、以下の 4 種類がある。 不変性(invariance) Tそのものが必要 共変性(covariance) Tそのものか、そのサブタイプが

    TypeScript における変性(variance)について - 30歳からのプログラミング
    mizdra
    mizdra 2020/11/01
    分かりやすい
  • Cookie 概説 - 30歳からのプログラミング

    Cookie とは、HTTP でステートフルなやり取りを実現するために、ブラウザとサーバ間で情報を送受信する仕組みである。 HTTP は来ステートレスなプロトコルである。そのため、同一のユーザーが連続でリクエストを行っても、それぞれ独立したリクエストであり、「同じユーザーからのリクエストである」とサーバが認識することはできない。 これは例えば、ログイン状態の管理で問題となる。ID とパスワードで認証を行っている場合、リクエストの度に ID とパスワードを送信しなければならない。 Cookie を使うことで、このような事態を解決できる。 まず、サーバがブラウザに対して、Cookie としてどのような情報を保存するのか指示する。具体的には、レスポンスヘッダにSet-Cookieフィールドを含め、そこに Cookie として保存させたい情報を設定する。ログイン状態を管理したい場合は、セッション

    Cookie 概説 - 30歳からのプログラミング
  • 入社からの半年間でコードレビューで指摘されたことのまとめ - 30歳からのプログラミング

    実務未経験でプログラマとして入社して半年以上が経った。 コードレビューで指摘されたことを備忘録としてまとめておく。 自分なりにまとめたものなので、レビュアーが言いたかったこととニュアンスや解釈がずれている可能性はある。 初歩的な内容ばかりで我ながらうんざりする。 せっかく優秀な同僚ばかりなのだからもっと高度なことを学びたいが、こういう初歩的なことが出来ないのが俺の現状なのだから、仕方ない。 そもそもPullRequestを送ったこともなかったわけだし。入社初日は、一人でPullRequestの出し方を練習していた。 それを考えればまあ、こんなものだろうか。 当たり前のことをちゃんと当たり前に出来るようになって、早く、次のステージに進みたい。 PullRequest(PR) PRのタイトルは分かりやすいものに。必要に応じてチケットの番号なども入れる。 コミットやPRは出来るだけ粒度を細かくす

    入社からの半年間でコードレビューで指摘されたことのまとめ - 30歳からのプログラミング
  • 1