OpenAI Codexのおかげで、数時間でPyTestのFixturesをRubyに持ち込めた

「PyTestのFixturesみたいなのがRubyにあったらいいんだけどなー」と思ってsmartestというテストランナーを試作した. GPT-5.5が登場してさらに賢くなったなーという実感があったので、なんとなくChatGPTに聞いてみたら5,6ターンしているうちに概要設計が…

画面操作仕様をAIエージェントと一緒に考えるなら、FigmaよりもAstro+HTML+CSSが最高なのでは説

ちょっと前までは、FigmaとかSketchとかで画面イメージを作ってからそれをAIエージェントになんとか読ませて実装する、という流れでやっていたわけだけど、Astroで HTML+CSSでUIを書かせて, iframeでそれをそのまま埋め込むようにすると、非常に効率的な画面…

MateBook X (2017) に ChromeOS Flex を入れたら、わりと「AI時代の開発端末」になりそう

最近、謎の衝動買いで、12インチMacbook のコピー商品とも言えるMatebook Xを中古で入手した。そこにChromeOS Flexを入れてみると、割と良かったのでその話。正直、「これ一台で何でもやるぞ」という期待で見ると粗は目立つが、AIコーディングのお供だと役割…

Pixel 8aでLinuxターミナルアプリが使えるので、外出先でも通勤中でもOSS開発ができる

Androidに乗っかっているTerminal appは、ChromeOSのcrostiniとほぼ同じで、違いはというとXウインドウがないくらいだ。探してみればDockerを動かしたりClaude Codeを動かしたりしている猛者はいる。 実際にやってみたところ、**たしかにヘッドレスFirefoxは…

生成AIは宣言型へ向かうのでは説

想定しているのは、生成AIを業務フローに組み込もうとしている人だ。問い合わせ対応の自動化、ドキュメントからの情報抽出、社内ナレッジの検索と要約。こうした用途でAIをプロダクションに載せようとすると、すぐに「ワークフローをどう設計するか」という…

生成AIの力を借りて、ブラウザ自動操作ライブラリを新たに開発した

今年はコーディングエージェントが大幅に進化した1年でもあり、そろそろAI主導で何か作れるんじゃなかろうかと思い立って、10月ごろから実はPuppeteerをベースとしつつ WebDriver BiDiを実装する取り組みをしていた。で、自慢がしたいというわけでもなく、…

ソフトウェアテスト自動化カンファレンス2025で、Playwright Agentsの生い立ちを少しだけ話した

ソフトウェアテスト自動化カンファレンス2025 自分も出したらなんと採択されたので採択されたので、かねてからPlaywrightのポーティングをやってきた身としての話をできた。

Kaigi on Rails 2025に参加 & テスト自動化×生成AI×アクセシビリティ なテーマで登壇した

2025/9/26-27に東京駅すぐのJPタワーで開催されたKaigi on Rails 2025で「あなたのWebサービスはAIに自動テストしてもらえる?アクセシビリティツリーで読み解く、AIの『視点』」というテーマで今年も登壇をした。いままで一貫してRailsのシステムテストの話…

今年もDevelopers Summit 2025のリレーセッションで少し登壇してきた

昨年に引続き、今年もDevelopers Summit 2025のリレーセッションで「個人開発から公式機能へ:PlaywrightとRailsをつなげた3年の軌跡」というタイトルで登壇してきた。

Kaigi on Rails 2024で生成AI+ブラウザ自動テストに関する登壇をしてきた

2024/10/25-26 で東京の有明で開催されたKaigi on Rails 2024で登壇発表してきた。 タイトルは「Capybara+生成AIでどこまで本当に自然言語のテストを書けるか?」 今年は仕事のほうがマジクソ忙しく、どう考えても過去2回ほどの準備時間は取れそうもなかっ…

Webアプリ開発者であれば、Chromebook Flexは一度見る価値あり

Macbook 12インチは結局スペック不足で早々に手放し、 Dockerが満足に使えるMacbook Air 2020 (Core i7 + 16GB/512GB)に乗り換え、さらにはM2, M3あたりの高性能さがほしいと思って、今年になって20万以上するMacbook Air 15インチ (M2, 16GB/1TB) に乗り換…

Developers Summit 2024 のリレーセッションでプチ登壇してきた

Developers Summit 2024 の最後の時間枠「生成AIで開発生産性向上!リレーセッション」の中で8分ほどだけしゃべってきました。れいによって、どういう取り組みをして登壇に至ったのかを書いておこうと思います。

Kaigi on Rails 2023 現地参加して "E2E testing on Rails 2023" というお話をしてきた

Kaigi on Rails 2023に現地参加してきました。2年前の「システムテスト解剖学」という発表の続編的な位置づけで、RailsのE2Eテストを取り巻く技術の解説に徹する発表でした。あれもこれもしなくても、1個だけ仕組みを作ればいいんだという発見の導出などなど…

Rakuten miniを3000円で買って、みまもり端末にする

Rakuten miniを中古で3000円で購入してAndroid Management APIでKIOSK端末にしてみまもり端末化してみた。

Ruby 2.7, 3.0, 3.1でもデータクラス (Data.define) が使えるようなライブラリdata_class_factoryを作った

Ruby 3.2のデータクラスっていうやつがとてもハイセンスで、おそらく多くのRubyistたちが望んだものだろう。Ruby 2.7-3.1でRailsアプリケーションを動かしているところでも使いたいので、バックポートしたライブラリを作った。

自分で開発しているRuby用のライブラリに型情報を足す

自分で開発しているplaywright-ruby-clientのライブラリに型情報 (RBS) を追加するためにやったことを紹介します。

DBを読み取り専用で使うWebアプリケーションを作るならSinatraがお手軽

社内向けWebアプリで、機能が限定的だったとしても、SinatraじゃなくてRailsで書いたほうが総合的にラクだ。しかし、最近になって、SinatraでWebアプリケーションを書いてみて「これはうまく行った」という例を1つ見つけた。

Fukuoka.rb 第256回でLT登壇するまでの話

Fukuoka.rbのLTで久々に登壇をした。まじめなasync/awaitの話をするように見せかけて、ポニョの歌を使った並列処理の勉強会ライブコーディングをするというネタを仕込んでの登壇。その反省記事。

rakudaでWebアプリケーションのHTTPクライアントを"段階的に"作る

最近のSPAはだいたい、裏でJSON APIを叩いて結果をレンダリングする作りをしている。なので、自分用に必要な機能だけ詰め込んだコンソールアプリを簡単に作ることができる。以前作ったrakudaでは不便だったところを改善して、自分用のコマンドラインHTTPクラ…

HTTPieのような使い勝手でちょっとだけカスタマイズできるコマンドラインAPIクライアントを作った

最近、仕事のほうでAndroid Management APIってのをさわってて、お試しでAPIを叩くときの開発体験があんまり良くないなーと感じ、自分用にHTTPieのような使い勝手でHTTPクライアントが作れるライブラリを書いてみた。

入力フォームや設定画面をつくるときのデータ構造アンチパターン

「なんで?」と聞かれるとうまく言語化できてない部分が多いけど、経験的に不吉な香りがするやつ。 デフォルトがtrueの選択肢 デフォルトtrueの選択肢は、falseとNULLを厳密に区別しないといけなくなる。 item.value || true なんて書いた瞬間にバグる ユー…

Kaigi on Rails 2021で「Railsのシステムテスト解剖学」の話をした

10/22(金)に、Kaigi on Rails 2021に登壇した。登壇者としての回想日記。

なんだかんだで1年半くらいRuby向けにブラウザの自動操作ライブラリを作っている

かれこれ1年半くらい、Ruby向けのブラウザオートメーションツールをいろいろ趣味で開発している。IEがほぼ滅んだ今となってはRubyでもPlaywrightはSeleniumと同様に使っていけるはずで、そろそろ「Seleniumが唯一無二の選択肢」みたいな状況には終止符を打…

PlaywrightをRailsのsystem specから使いたくてCapybaraドライバを作った

RailsからPlaywrightでの自動操作をするには少しハードルが高い。Playwrightは自分が起動したブラウザじゃないと自動操作できないので、CapybaraがSeleniumドライバ経由でブラウザを起動しているところをごっそり置き換えたカスタムドライバを作った。 capyb…

糸島のパン屋 "のたり" のネット通販を利用してみた

糸島の桜井にある"のたり"のパンをネットで買えるなんて、素晴らしい時代である。 pic.twitter.com/AejJLujWRf— Yusuke Iwaki (@yi01imagination) 2021年4月24日 久々に、エンジニアリングじゃないネタ。 のたりのパン 過去にパンを自分で焼く重要性を説いて…

いよいよPuppeteerを使う理由がなくなってきた

Playwright 1.9.0で browserType.connectOverCDP というAPIが追加されて、まさに puppeteer.connect 相当のことをやってくれるようになった。つまり、「Seleniumの補強として使う」ということが、PuppeteerのみならずPlaywrightでもできてしまうようになった…

スキマ時間は意外とある

昨年の暮れに12インチMacbookを入手してからというもの、肌身離さず12インチMacbookを持ち歩くようになった。 yusukeiwaki.hatenablog.com こいつはとても優秀で、本当にどこにいてもコーディングが可能なのだ。スタバでドヤるという意味ではなく、エレベー…

第13回フクオカRuby大賞で入賞!その振り返り。

第13回フクオカruby大賞っていう、Rubyをネタにしたビジネスコンテストてきなものに参加した。puppeteer-rubyを発表して優秀賞とマネーフォワード賞の2つをいただけた。(わーい!)

ブラウザ自動操作のPlaywrightはRubyからでも使える?

Playwrightには爆速の多言語展開スピードを支える何かがあるらしいことはわかるが、ドキュメントには一切書かれていない。なので、いろいろソースを読んで調べた&実際にRubyからPlaywrightを使うPoCを作ってみた。

2020年のふりかえり

とくに書くことは決めていないが、2020年にあったことを書いとこう。 ちょっと昇給した 2019年の6月でクラウド○ークスをやめて、2019年7月から福岡が本社のIT企業で働き始めた。もともとCW社にいた頃もジリ貧生活していたものが、転職後しばらくはさらに貧乏…