$ cat blog/entry_001.md
最初のコンパイル — アセンブラしか知らなかった男が、Webサービスを作るまで
First Compile — From Assembly-Only to Building Web Services
첫 번째 컴파일 — 어셈블리만 알던 남자가 웹 서비스를 만들기까지
2026-03-26
entry_001
./origin/
MOV AX, 0001h — すべてはここから始まった
自分のキャリアの最初の1行は、アセンブリ言語だった。
異機種メーカー間の汎用コンピュータ通信プロトコル。データ転送ドライバ。特殊大型機械の制御プログラム。ハードウェアに最も近い場所で、数十年間コードを書いてきた。プロジェクトマネージャーになり、アナリストになり、開発部技術本部長を務め、そして定年を迎えた。
たとえば、ハードディスクのドライバ。セクタを読み出すだけでも、こんなコードを書いていた。
;=============================================
; HDD Read Sector — INT 13h ディスクリード
; AH=02h: セクタ読み出し
; DL=80h: 第1ハードディスク
;=============================================
disk_read:
MOV AH, 02h ; 機能: セクタ読み出し
MOV AL, 01h ; 読み出しセクタ数 = 1
MOV CH, 00h ; シリンダ番号(下位8bit)
MOV CL, 02h ; セクタ番号(1始まり)
MOV DH, 00h ; ヘッド番号
MOV DL, 80h ; ドライブ番号(80h = HDD0)
MOV BX, OFFSET buffer ; ES:BX = 読み込み先バッファ
INT 13h ; BIOS ディスクサービス呼び出し
JC disk_error ; CF=1 ならエラー処理へ
RET
disk_error:
MOV SI, OFFSET err_msg
CALL print_string ; エラーメッセージ出力
HLT ; システム停止
buffer DB 512 DUP(0) ; 1セクタ = 512バイト
err_msg DB 'Disk read error', 0Dh, 0Ah, 0
レジスタに値をセットして、BIOSに割り込みをかけて、キャリーフラグでエラーを判定する。メモリのアドレスを1バイト単位で管理する。これが自分の「プログラミング」だった。HTMLの <div> とは、まるで別の世界だ。
退職した日、デスクの上にはもう端末がなかった。数十年間、毎日向き合っていた画面が消えた。するとふと、奇妙な静けさがやってきた。
> SYSTEM HALT
> 40 years of service completed.
> What do you want to compile next? _
HTML? 聞いたことはある
現役時代、Web技術にはまったく触れなかった。HTMLは「タグで囲むやつ」、CSSは「見た目を変えるやつ」、PHPは「サーバーで動くやつ」。それぞれ名前と一行説明くらいは知っていた。だが、一度もコードを書いたことはない。
JavaScriptに至っては「ブラウザの中で動く、なんか緩い言語」くらいの認識だった。アセンブラでレジスタのビットを操作していた人間にとって、動的型付け言語というのはどこか信用ならないものに感じられた。
だが、プログラミングの本質 — 問題を分析し、構造を設計し、手順に落とし込む — は言語が変わっても同じだ。40年間やってきたことだ。
コードは1行も書けない。でも、40年間設計してきた。
AIとの最初の会話
定年後、急速に発展するAI技術に興味を持ち始めた。1年以上かけて研究した。大規模言語モデルがコードを書けるということは知っていた。だが、最初は半信半疑だった。
ある日、試しにAIに聞いてみた。「PHPでユーザー認証を作りたい。JWTを使って、HTTP Onlyクッキーで管理する設計にしたい」と。
返ってきたコードは、動いた。正確に言えば、9割は動いた。残り1割にバグがあった。だが、そのバグの場所は自分にもわかった。ロジックの流れは読める。変数名も関数名も意味がわかる。データの流れが見える。
その瞬間、理解した。
> REALIZATION: AI can write code. I can architect systems.
> CONCLUSION: We are the perfect team.
> STATUS: Compiling new career... ██████████ 100%
設計書を書くように、Webサービスを設計した
通信プロトコルを設計するように、APIのエンドポイントを設計した。データ転送ドライバを書いたときと同じように、データベースのスキーマを設計した。制御プログラムの状態遷移図を描いたときと同じように、ユーザーの認証フローを設計した。
言語は違う。環境は違う。だが、「設計」という行為は同じだった。
こうして、68歳の元インフラエンジニアとAIによる共同開発が始まった。最初のプロジェクト名は「kitemir.jp」。AIファッション診断とバーチャル試着のWebサービス。ファッションとテクノロジーの交差点に、40年分の設計経験を注ぎ込む。
これは、その記録の最初のページだ。
$ git init life-story
$ git add first-compile.md
$ git commit -m "initial commit: the journey begins"
[main (root-commit)] initial commit: the journey begins
1 file changed, 68 insertions(+)
MOV AX, 0001h — Where It All Began
The first line of my career was assembly language.
Communication protocols between different manufacturers' mainframes. Data transfer drivers. Control programs for specialized heavy machinery. For decades, I wrote code at the closest possible level to the hardware. I became a project manager, then an analyst, then head of engineering, and finally reached retirement.
For example, hard disk drivers. Even just reading a single sector required code like this:
;=============================================
; HDD Read Sector — INT 13h Disk Read
; AH=02h: Read sectors
; DL=80h: First hard disk
;=============================================
disk_read:
MOV AH, 02h ; Function: read sectors
MOV AL, 01h ; Number of sectors = 1
MOV CH, 00h ; Cylinder number (low 8 bits)
MOV CL, 02h ; Sector number (1-based)
MOV DH, 00h ; Head number
MOV DL, 80h ; Drive number (80h = HDD0)
MOV BX, OFFSET buffer ; ES:BX = read buffer
INT 13h ; BIOS disk service call
JC disk_error ; CF=1 means error
RET
disk_error:
MOV SI, OFFSET err_msg
CALL print_string ; Print error message
HLT ; Halt system
buffer DB 512 DUP(0) ; 1 sector = 512 bytes
err_msg DB 'Disk read error', 0Dh, 0Ah, 0
Set values in registers, trigger a BIOS interrupt, check the carry flag for errors. Manage memory addresses byte by byte. That was my "programming." A world entirely different from HTML's <div> tags.
On the day I retired, there was no terminal on my desk anymore. The screen I had faced every day for decades went dark. And then, a strange silence arrived.
> SYSTEM HALT
> 40 years of service completed.
> What do you want to compile next? _
HTML? I've Heard of It
During my active career, I never touched web technologies. HTML was "the one with tags," CSS was "the one that changes how things look," PHP was "the one that runs on servers." I knew each name and a one-line description. But I had never written a single line of any of them.
As for JavaScript, my impression was roughly "some loosely-typed language that runs in browsers." For someone who had spent years manipulating register bits in assembly, a dynamically-typed language felt inherently untrustworthy.
But the essence of programming — analyzing problems, designing structures, translating them into procedures — remains the same regardless of language. That's what I'd been doing for 40 years.
I can't write a single line of code. But I've been designing systems for 40 years.
My First Conversation with AI
After retirement, I became interested in the rapidly advancing AI technology. I spent over a year researching. I knew that large language models could write code. But at first, I was skeptical.
One day, I tried asking an AI: "I want to build user authentication in PHP. I want to use JWT, managed with HTTP-only cookies."
The code it returned worked. To be precise, about 90% of it worked. The remaining 10% had bugs. But I could spot where those bugs were. I could read the logic flow. Variable names and function names made sense. I could see the data flow.
In that moment, I understood.
> REALIZATION: AI can write code. I can architect systems.
> CONCLUSION: We are the perfect team.
> STATUS: Compiling new career... ██████████ 100%
I Designed a Web Service Like I'd Write a Spec
I designed API endpoints the same way I designed communication protocols. I designed database schemas the same way I wrote data transfer drivers. I drew authentication flow diagrams the same way I drew state transition diagrams for control programs.
The languages are different. The environment is different. But the act of "designing" is the same.
And so, the collaboration between a 68-year-old retired infrastructure engineer and AI began. The first project: "kitemir.jp" — an AI fashion diagnosis and virtual try-on web service. Pouring 40 years of design experience into the intersection of fashion and technology.
This is the first page of that record.
$ git init life-story
$ git add first-compile.md
$ git commit -m "initial commit: the journey begins"
[main (root-commit)] initial commit: the journey begins
1 file changed, 68 insertions(+)
MOV AX, 0001h — 모든 것은 여기서 시작되었다
내 커리어의 첫 번째 줄은 어셈블리 언어였다.
서로 다른 제조사의 범용 컴퓨터 간 통신 프로토콜. 데이터 전송 드라이버. 특수 대형 기계의 제어 프로그램. 수십 년간 하드웨어에 가장 가까운 곳에서 코드를 써왔다. 프로젝트 매니저가 되고, 애널리스트가 되고, 개발부 기술본부장을 역임하고, 마침내 정년퇴직을 맞이했다.
예를 들어, 하드디스크 드라이버. 섹터 하나를 읽는 것만으로도 이런 코드를 작성해야 했다:
;=============================================
; HDD Read Sector — INT 13h 디스크 리드
; AH=02h: 섹터 읽기
; DL=80h: 첫 번째 하드디스크
;=============================================
disk_read:
MOV AH, 02h ; 기능: 섹터 읽기
MOV AL, 01h ; 읽을 섹터 수 = 1
MOV CH, 00h ; 실린더 번호 (하위 8bit)
MOV CL, 02h ; 섹터 번호 (1부터 시작)
MOV DH, 00h ; 헤드 번호
MOV DL, 80h ; 드라이브 번호 (80h = HDD0)
MOV BX, OFFSET buffer ; ES:BX = 읽기 버퍼
INT 13h ; BIOS 디스크 서비스 호출
JC disk_error ; CF=1이면 에러 처리로
RET
disk_error:
MOV SI, OFFSET err_msg
CALL print_string ; 에러 메시지 출력
HLT ; 시스템 정지
buffer DB 512 DUP(0) ; 1섹터 = 512바이트
err_msg DB 'Disk read error', 0Dh, 0Ah, 0
레지스터에 값을 세팅하고, BIOS에 인터럽트를 걸고, 캐리 플래그로 에러를 판정한다. 메모리 주소를 1바이트 단위로 관리한다. 이것이 나의 "프로그래밍"이었다. HTML의 <div>와는 완전히 다른 세계다.
퇴직한 날, 책상 위에는 더 이상 단말기가 없었다. 수십 년간 매일 마주하던 화면이 사라졌다. 그리고 갑자기, 기묘한 고요함이 찾아왔다.
> SYSTEM HALT
> 40 years of service completed.
> What do you want to compile next? _
HTML? 들어본 적은 있다
현역 시절, 웹 기술에는 전혀 접한 적이 없었다. HTML은 "태그로 감싸는 것", CSS는 "외관을 바꾸는 것", PHP는 "서버에서 동작하는 것". 각각의 이름과 한 줄 설명 정도는 알고 있었다. 하지만 한 줄도 코드를 작성한 적은 없었다.
JavaScript에 대해서는 "브라우저 안에서 동작하는, 뭔가 느슨한 언어" 정도의 인식이었다. 어셈블러로 레지스터의 비트를 조작하던 사람에게 동적 타입 언어라는 것은 어딘가 신뢰할 수 없게 느껴졌다.
하지만 프로그래밍의 본질 — 문제를 분석하고, 구조를 설계하고, 절차로 옮기는 것 — 은 언어가 바뀌어도 같다. 40년간 해온 일이다.
코드는 한 줄도 못 쓴다. 하지만, 40년간 설계해왔다.
AI와의 첫 대화
정년 후, 급속히 발전하는 AI 기술에 관심을 갖기 시작했다. 1년 이상 연구했다. 대규모 언어 모델이 코드를 쓸 수 있다는 것은 알고 있었다. 하지만 처음에는 반신반의했다.
어느 날, 시험 삼아 AI에게 물어봤다. "PHP로 사용자 인증을 만들고 싶다. JWT를 사용하고, HTTP Only 쿠키로 관리하는 설계로 하고 싶다"고.
돌아온 코드는 동작했다. 정확히 말하면 90%는 동작했다. 나머지 10%에 버그가 있었다. 하지만 그 버그의 위치는 나도 알 수 있었다. 로직의 흐름은 읽을 수 있었다. 변수명도 함수명도 의미를 알 수 있었다. 데이터의 흐름이 보였다.
그 순간, 이해했다.
> REALIZATION: AI can write code. I can architect systems.
> CONCLUSION: We are the perfect team.
> STATUS: Compiling new career... ██████████ 100%
설계서를 쓰듯이, 웹 서비스를 설계했다
통신 프로토콜을 설계하듯이 API 엔드포인트를 설계했다. 데이터 전송 드라이버를 쓸 때와 같이 데이터베이스 스키마를 설계했다. 제어 프로그램의 상태 전이도를 그릴 때와 같이 사용자 인증 플로를 설계했다.
언어는 다르다. 환경은 다르다. 하지만 "설계"라는 행위는 같았다.
이렇게 68세의 전 인프라 엔지니어와 AI의 공동 개발이 시작되었다. 첫 프로젝트 이름은 "kitemir.jp". AI 패션 진단과 가상 피팅 웹 서비스. 패션과 기술의 교차점에 40년분의 설계 경험을 쏟아붓는다.
이것은 그 기록의 첫 번째 페이지다.
$ git init life-story
$ git add first-compile.md
$ git commit -m "initial commit: the journey begins"
[main (root-commit)] initial commit: the journey begins
1 file changed, 68 insertions(+)