30歳からのプログラミング

30歳無職から独学でプログラミングを開始した人間の記録。

『マンガでやさしくわかる知識創造』を読んだ

野中郁次郎らが提唱した知識創造理論の入門書。 知識創造とはどのようなものか、そしてそれがなぜイノベーションにつながるのか、具体例を用いながら平易な文章で解説されている。 pub.jmam.co.jp 知識創造理論については存在も知らず、現職の同僚との 1on1 …

もうすぐ 40 歳になるが労働を 3 年以上続けられたことがない IT エンジニアの話

「30歳からのプログラミング」と題したこのブログを書き始めたのが 2016 年 3 月。 そこから月日が立ち、立派なアラフォーとなったわけだが、私はこれまで 3 年以上継続して働いたことがない。プログラマに転身する前も含めて、である。一度もない。 3 年経…

target や config を理解して dbt model の出力先を制御できるようになる

dbt

dbt を使おうとすると、profile や target、config、property など、様々な概念が出てくる。 それらをあまり理解できていなくても、何となく動かすことはできるかもしれない。 しかし、これらの概念を理解していないと、意図した通りに動かしたり他者が記述…

Embulk に入門して Amazon RDS にあるデータを BigQuery に転送する

この記事では、Embulk を使ってデータ転送を行う方法について述べていく。 今回は題材として Amazon RDS から Google Cloud の BigQuery にデータを転送する。Embulk の実行はローカルマシンで行う。 使っている Embulk のバージョンは0.9.25。 0.10や0.11だ…

Terraform で GitHub の Branch protection rule を定義する

Terraform では GitHub の Branch protection rule を管理する resource が提供されている。この記事ではそれを使って rule を定義する方法について扱う。 動作確認は Terraform のv1.7.4で行った。 Branch protection rule は、指定したブランチに対してル…

『AWSネットワーク入門 第2版』を読んだ

AWS でネットワークを構築しウェブサーバを公開する手順を解説した入門書。 丁寧かつ簡潔な説明で、初心者でもスムーズに進めていくことができる。 tatsu-zine.com Kubernetes を勉強していた時、ローカル環境である程度動かすことができたので、次はより実…

『Software Design 2022年1月号』の「TerraformではじめるAWS構成管理 インフラを自動で構築&コードで管理」を読んだ

Terraform 何も分からん、取り敢えず概要を知りたいなと思い、手に取った。 雑誌の特集のひとつであるためコンパクトであり(41 ページ)、手っ取り早く雰囲気を掴むのにちょうどよかった。 gihyo.jp 私のような初心者を対象としていると思われ、かなり初歩…

Restart Policy と Probe を使った Pod の管理

Kubernetes には Restart Policy や Probe という設定や仕組みがある。 これらを適切に使うことで、コンテナが意図した通りに動いているのか、再起動させる必要はないのか、といったことを Kubernetes が継続的にチェックしてくれるようになる。そしてそれだ…

Docker Desktop を使って学ぶ Kubernetes の基本的な仕組み

この記事では Docker Desktop 上で Kubernetes クラスタを作り、実際に動かしながら、Kubernetes の基本的な仕組みについて説明していく。 動作確認は以下の環境で行った。 Docker Desktop 4.22.1 Kubernetes 1.27.2 事前準備 Kubernetes の有効化 Docker De…

『Cプログラミング入門以前 [第3版]』を読んだ

プログラミングを学び始める前に押さえておくべき基礎知識を学べる一冊。 コンピュータやプログラムが動く仕組みをちゃんと理解しなければいけないと感じており、その一環で読んだ。 tatsu-zine.com 著者が執筆した『基礎からわかるTCP/IP ネットワークコン…

『なるほどUnixプロセス―Rubyで学ぶUnixの基礎』を読んだ

Unix プロセスとはどのようなもので、どのような特徴を持つのか、平易な文章と簡潔なコードを使って解説していく一冊。 tatsu-zine.com プロセスID、プロセスの親子関係、標準ストリームといった、プロセスに関する基本的な概念について説明していきながら、…

『Software Design 2023年4月号』の「x86やArmって何? 一度は学んでおきたいCPUのしくみ」を読んだ

CPU について学ぶ初歩的な教材としてよさそうと思い、手に取った。 期待した通り、平易な内容で程よくコンパクトにまとまっており、読みやすかった。 gihyo.jp CPU はレジスタや ALU から構成されること、CPU は0と1で構成される機械語しか理解できないため…

『ゾンビスクラムサバイバルガイド 健全なスクラムへの道』を読んだ

スクラムのように見えるがスクラムではない、機能していないスクラムを「ゾンビスクラム」と名付け、なぜそれが発生するか、いかにそこから回復すべきかを説いた一冊。 ゾンビスクラムという、上手くいっていない状態を題材にすることで、本来はどうあるべき…

『熊とワルツを - リスクを愉しむプロジェクト管理』を読んだ

「リスク」をどのように捉え、どのように向き合っていくべきなのか説いた一冊。 用語や概念の整理をしつつ、具体的にどのように取り組むべきかを論じていく。 2003 年頃に出版されたということもあってか、ソフトウェアの受託開発を念頭に置いた説明が多いが…

MySQL の SQL Mode について

MySQL には SQL Mode という設定があり、この内容によって、許容される構文やデータの妥当性チェックのルールが変化する。 この記事では SQL Mode の確認方法や設定方法の他、設定内容によって挙動が変化する例を見ていく。 動作確認は MySQL のバージョン8.…

『UNIXという考え方―その設計思想と哲学』を読んだ

UNIX やそのツールはどのような考えに基づいて作られているのか解説した本。 UNIX が開発されていくなかで培われていった文化や考え方について書かれている。 www.ohmsha.co.jp UNIX が具体的にどのように動いているのかではなく、 UNIX はなぜそのように動…

Web API で文字列を可逆圧縮する

この記事では、 Web API で文字列の可逆圧縮を行う方法について書いていく。 任意の文字列を圧縮し、そして圧縮された文字列のリテラル表現から元の文字列を復元できることを目指す。 以前書いたように、 Node.js なら文字列の可逆圧縮は簡単に行える。 numb…

Next.js の skipTrailingSlashRedirect で trailing slash の設定をカスタマイズする

Next.js のv13.1.0で追加されたskipTrailingSlashRedirectを使うことで、 trailing slash に関する挙動を自由に設定できる。 この記事では、skipTrailingSlashRedirectによって具体的にどのようなことが可能になったのかを見ていく。 動作確認はv13.1.1で行…

JavaScript で Base64

この記事では Base64 やbtoa、そしてbtoaの挙動を理解するために必要な Latin1 について説明していく。 この記事に出てくるコードの動作確認は以下の環境で行った。 Deno 1.28.3 TypeScript 4.8.3 概要 Base64 はデータのエンコード方式の一種。 全てのデー…

『優れた技術者の集まる会社にする方法 ソフトウェア開発者採用ガイド』を読んだ

前回読んだ『Joel on Software』の Joel Spolsky が、ソフトウェア開発者の採用について論じた一冊。 自身が優秀な開発者であり経営者でもある Joel が、多くのソフトウェア開発者が採用に対して何となく感じていることを平易な文章で明快に説明していく。 …

『Joel on Software』を読んだ

Microsoft での勤務経験を持ち Stack Overflow の創業者でもある Joel Spolsky によるエッセイ集。 Joel は自身が運営するウェブサイト Joel on Software で多数の記事を公開しており、その一部を掲載したのが本書。 ひとつひとつの章がかなり短い(長いもの…

Unicode における置換文字(replacement character)について

この記事では、 Unicode において表示不可能な文字を表現する「置換文字」について説明する。 この記事に出てくるコードの動作確認は以下の環境で行った。 Deno 1.26.0 TypeScript 4.8.3 概要 Unicode において、表示しようとした文字が何らかの理由で表示不…

JavaScript における文字コードの初歩

この記事では、 JavaScript で文字コードを扱う際に知っておくべき概念である Code Point や Code Unit、サロゲートペア、といったものについて説明していく。 また、具体的にそれらの概念を使ってどのようにコードを書いていくのかについても扱う。 この記…

継続渡しスタイルを使ってプログラムの見通しをよくする

この記事では、継続渡しスタイル(continuation passing style、以下 CPS)の概要と、CPS の活用例を書いていく。 この記事に出てくるコードの動作確認は TypeScript の4.7.4で行っている。 後続の処理を引数として渡す 関数が終わった後に実行される後続の…

Node.js Stream の初歩

Node.js には Stream というインターフェイスが用意されており、これを使うことでデータをストリーミングできる。 Stream を使うことで、データの全てをメモリに保持するのではなく、少しずつ順番にデータを処理していくことが可能になる。 この記事では、St…

『図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書』を読んだ

Amazon Web Services(以下 AWS)の入門書。 AWS やその前提となる知識について、非常に平易に解説している。理解を促すための図も豊富で、分かりやすい。 AWS を学ぶ最初の一冊としてオススメ。 gihyo.jp AWS が提供しているサービスは多岐に渡り、独自の用…

Docker の volume と network の初歩

Docker の volume は、コンテナが使うデータを永続化するための仕組みで、これを使うことでコンテナのライフサイクルとは別にデータを管理することができる。 また、network という機能を使うことで、コンテナ間で通信ができるようになる。 この記事では、vo…

Dockerfile に入門して Node.js アプリを作ってみる

Docker への入門の一環として、自分で Dockerfile を作成し、それを使って Node.js アプリを Docker Container で動かしてみる。 Hello World Dockerfile を使うことで、既存の Docker Image を編集して新しい Docker Image を作ることができる。 具体的には…

Prisma に入門して API サーバを作ってみる

Prisma は、Node.js の ORM。 この記事では、導入方法、基本的な使い方について説明したのち、Prisma を使って簡単な API サーバを作ってみる。 Node.js のバージョンは16.13.2、MySQLのバージョンは8.0.28という環境で、動作確認している。 使用している np…

Next.js で始める GraphQL

この記事では、GraphQL を利用したアプリを Next.js で構築していきながら、GraphQL の初歩について書いていく。 GraphQL のクライアントもサーバも、Apollo を用いる。 また、できるだけ型安全に開発したいので、graphql-codegenで型定義ファイルを生成する…