Skip to content

Instantly share code, notes, and snippets.

View harupy's full-sized avatar
🇯🇵
Focusing

Harutaka Kawamura harupy

🇯🇵
Focusing
View GitHub Profile

2025 年を振り返る

Coding Agent の登場によって、この 1 年(正確には 5 月以降)でソフトウェアエンジニアとしての働き方が大きく変化したと感じたので、ざっくりと振り返ってみる。

自身でコードを書くことがほとんど無くなった

Claude Code を使い始めてから、実装という工程が「Claude Code に必要なコンテキスト、制約、ゴールを与えて自走させ、適宜フィードバックを与える」という形に変化した。実装する機能・修正の規模/複雑さによって、必要なコンテキスト、制約、ゴールの粒度は変化するが、いずれにせよ、自分でコードを直接書くことがほとんど無くなり、実装にかかる時間が大幅に短縮された。一方で、実装に至るまでの設計、チーム間での合意形成、コードレビューといった工程には人間が大きく関与していて、ボトルネックのままであり、エンジニアリング全体の生産性が劇的に向上したわけではない。

実装以外のユースケース

# /// script
# requires-python = "==3.10"
# dependencies = [
# "pydantic",
# "openai",
# ]
# ///
# ruff: noqa: T201
"""
How to run (https://gist.github.com/harupy/bc281c07d1a2d0678f97cf519aa81131)
import ast
from pathlib import Path
import subprocess
from typing import List, Dict
from dataclasses import dataclass
def line_no_to_offset(lines: List[str]) -> Dict[int, int]:
services:
mysql:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root-password
MYSQL_DATABASE: mlflowdb
MYSQL_USER: mlflowuser
MYSQL_PASSWORD: mlflowpassword
command: mysqld --default-authentication-plugin=mysql_native_password
from __future__ import annotations
import ast
import os
import random
import subprocess
import textwrap
import openai
b"""
{
"id": "chatcmpl-7lG2usbCnpQIBmid2fGZjsT9Wymh4",
"object": "chat.completion.chunk",
"created": 1691497452,
"model": "gpt-3.5-turbo-0613",
"choices": [
{
"index": 0,
"delta": {"content": " set"},
import boto3
import requests
import uuid
import tempfile
from pathlib import Path
import sys
with tempfile.TemporaryDirectory() as tmpdir:
# Create a 500MB file
import mlflow
from sklearn.linear_model import LogisticRegression
from pathlib import Path
import tempfile
with mlflow.start_run():
mi = mlflow.sklearn.log_model(LogisticRegression(), "model")
client = mlflow.MlflowClient()
with tempfile.TemporaryDirectory() as tmpdir:
import libcst as cst
import pathlib
import argparse
import difflib
class AssertMethodTransformer(cst.CSTTransformer):
@staticmethod
def is_unittest_assert_method(node: cst.Call, name: str) -> bool:
return (
import libcst as cst
import pathlib
import argparse
import difflib
class AssertMethodTransformer(cst.CSTTransformer):
@staticmethod
def is_unittest_assert_method(node: cst.Call, name: str) -> bool:
return (