Skip to content

Instantly share code, notes, and snippets.

@knzm
knzm / gist:827fad1de5d697522ed38eeda714f41a
Last active June 22, 2025 14:50
AIとDIYの意外な共通点:現代の大工から学ぶソフトウェア開発の5つの知恵

AIとDIYの意外な共通点:現代の大工から学ぶソフトウェア開発の5つの知恵

AIコード支援が当たり前になった今、ソフトウェア開発の現場に職人の時代が戻ってきているのかもしれません。例えば、GitHub Copilot のようなAIツールの登場でコードの自動生成・修正が瞬時に可能となり、従来エンジニアの高度なスキルが要求される場面は減りつつあります 。あるエンジニアは「自分は家づくりの親方で、AIが優秀な大工だ」と述べ、クライアント→親方→職人→製作という家造りの流れが、クライアント→プログラマー→AI→製作という形で再現されていると語っています 。果たしてソフトウェアエンジニアは現代の大工と言えるのでしょうか?本稿では、AIとDIY(日曜大工)の類似性に着目し、ソフトウェアエンジニアが現代の大工から学べる5つのポイントを探ってみたいと思います。

1. 道具の使い方:AIを新たな大工道具として

大工はノコギリやカンナから電動ドリル・丸ノコまで、多彩な道具を使いこなして精巧なものづくりを行います。近年では電動工具やプレハブ資材の普及で作業効率が飛躍的に向上しましたが、それでも道具の選択と扱い方は職人の腕にかかっています。ソフトウェア開発も同様で、エディタやフレームワーク、そして今やAIまで、多くのツールを駆使して製品を作り上げます。

とはいえAIはあくまでツールです。優秀な電動ノコギリがあっても最後の仕上げは大工の判断に委ねられるように、AIがコードを書いてくれる時代になっても、最終的な方向性を決めるのは開発者自身に他なりません 。AIを鵜呑みにして無思慮に使えば、バグやセキュリティ不安を見逃す危険もあります。しかし逆に、その新しい道具を巧みに操るスキルを身につければ、開発効率は飛躍的に高まります。実際、AIツールを使いこなし限界を理解した上で問題解決に挑む力が重要だと指摘されており、これによりエンジニアは反復作業から解放され創造的な業務に集中できると期待されています 。

from contextlib import closing
from http.client import HTTPConnection, parse_headers
def get_mjpeg_frame(host, path, method='GET', connection_cls=HTTPConnection):
with closing(connection_cls(host)) as conn:
conn.request(method, path, headers={'Host': host})
with closing(conn.getresponse()) as res:
assert res.status == 200
import datetime
def get_last_sunday(dt: datetime.datetime) -> datetime.datetime:
"""
ある時刻が与えられたときその時刻を前回の日曜の15時に変換する
>>> get_last_sunday(datetime.datetime(2022, 12, 13, 2, tzinfo=datetime.timezone.utc))
datetime.datetime(2022, 12, 11, 15, 0, tzinfo=datetime.timezone.utc)
>>> get_last_sunday(datetime.datetime(2022, 12, 18, 14, 0, tzinfo=datetime.timezone.utc))
const fetch = require('node-fetch')
const { JSDOM } = require('jsdom')
const nodeEval = require('node-eval')
const xmlParser = require('fast-xml-parser')
const DEFAULT_LANG = 'ja'
function extractTracksFromHTML(body) {
const dom = new JSDOM(body)
import re
import operator
import json
import requests
import lxml.etree
import lxml.html
def collect_global_vars(doc):
#!/bin/sh
set -eu
SELECT_SCHEMA_SQL=<<EOF
SELECT SCHEMA_NAME FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME NOT IN ("information_schema", "performance_schema");
EOF
mysql -u root -N -e "${SELECT_SCHEMA_SQL}" | while read dbname; do
@knzm
knzm / index.md
Last active August 18, 2020 06:18

django-cms ライブラリ調査資料

Chapter. 1 使用ライブラリ調査

1-1. django-cms を djangocms-installer でインストールした場合にインストールされるライブラリ一覧

django 関連

  • django
  • django-classy-tags
$ go version
go version go1.12.5 darwin/amd64
$ go test -bench .
goos: darwin
goarch: amd64
BenchmarkContainsUint64-4 500000 2286 ns/op
BenchmarkContainsUint64Unroll2-4 1000000 1988 ns/op
BenchmarkContainsUint64Unroll4-4 1000000 1589 ns/op
BenchmarkContainsUint64Unroll8-4 1000000 1795 ns/op
PASS
@knzm
knzm / 00-README.md
Last active July 20, 2019 05:52
build tesserocr for Python 2.7 on Windows
@knzm
knzm / gist:149fdda292a03caa7a49498bcff4fdb2
Created May 4, 2019 14:42
Fix firefox's disabled extensions related to the certificate issue occured at May 4, 2019
cd ~/Library/Application Support/Firefox/Profiles/<profile folder>
mv extensions.json extensions.json-20190504
cat extensions.json-20190504 | jq '(.addons[] | select(.signedState == -1)) |= (.signedState = 1 | .active = true | .appDisabled = false)' > extensions.json