「Ruby on Rails」のバージョン7から、Hotwireという機能が入ったんですけれども、これも、たぶんベロシティをケアしているからこそ生まれたテクノロジーなんじゃないかなと思います。
(中略)
非常に興味深いことで、昔は、Railsアプリケーションは例えば、「15分でWebアプリケーションを作りました」みたいなデモをしていたわけなんですけれども、極端な話、現代的なシングルページアプリケーションを15分で作ることができるようになるという希望が、これによって与えられたということだと思います。
Windows PCでWebアプリなどを開発しているときに、iPhoneなどのAppleデバイスでの動作確認をしたいときがあります。
しかしながら、Appleデバイスの標準ブラウザであるSafariのWindows版は2012年頃にサポートが終了しています。
その一方で、SafariのHTMLレンダリングエンジンであるWebKitをWindows上で走らせることは現在でも可能です。
local-ssl-proxyを使ってhttpsでhttp://localhost:3000/へアクセスする方法
背景
Webの機能には、httpsでアクセスしているときにしか利用できないものがあります。 例えば、navigator.clipboardを用いてクリップボードへ書き込む機能はhttpsでアクセスしているときにのみ利用可能です。 ローカル環境においてhttpで走っている開発中のアプリに対して、こういった機能をテストするために、httpsでアクセスしたい場合があります。
ローカルでhttpsアクセスをhttpアクセスへ振り向ける方法
以下のコマンドを実行すれば、httpで走っている( http://localhost:3000/ )アプリに、ブラウザからhttps( https://localhost:3001/ )からアクセスできるようになります。
なお、アプリが走っているPCとは別のデバイスからアクセスする場合には、httpのポートのために行ったポートフォワーディングやファイアウォールの設定がhttpsのポートにも必要となります。
余談その1
Copilot先生によれば、httpで走っているアプリにhttps相当でアクセスするための別の方法としては、以下のものがあるそうです。
なお、Copilot先生の回答全文はこちらです。
余談その2
local-ssl-proxy
は、Copilot先生に教えてもらいました。Google検索ではlocal-ssl-proxy
にはたどり着いていませんでした。__init__.pyの解説記事
__init__.py
とモジュール・パッケージ・名前空間の関係について、以下の記事が分かりやすかったです。単に「こう書けば動く」ではなく、概念が説明されていてありがたいです。パスワード入力でミスしたらC-uでたいていやり直せる
C-u
、つまり、Ctrl
キーを押しながらu
キーを押す操作は、Bashやその背後にあるreadlineライブラリで、「カーソルから行頭までの切り取り」に割り当てられている。そのせいなのか、Unixシェルでパスワード入力中に失敗したときに、C-u
を押してからパスワードを正しく再入力すれば、処理が通ることが多い、という小ネタです。参考
https://ja.manpages.org/bash より
https://manpages.org/readline/3 より
importmap-railsは、2.x系でiOS 16.3以前のサポートを打ち切りました。
回避策が公式リポジトリのREADMEに掲載されたので、回避策のところを更新しました。
Copilot Studioのニュースや記事
Copilot Studioに関するよくある質問
日本マイクロソフトの社員さんによる記事。ただし、「会社の公式見解ではない点をご承知おきください」とのこと。
w3c_validators gemでNu validatorのコンテナイメージを利用する場合
Nu validatorのコンテナイメージである
ghcr.io/validator/validator:latest
をローカルで走らせて、 これをw3c_validators
のW3CValidators::NuValidator
から使う場合は、以下ようにuriを指定してnewすれば動きます。ちなみに、ローカルで走らせたNu validatorに切り替えたところ実行時間がだいぶ減りましたので、
w3c_validators
が遅いと感じている方はローカル実行を試すと良いかもしれません。慣れればコンテナを走らせるのはサクッと出来ますよ。まつもとゆきひろ氏のHotwire評
Rubyの生みの親・まつもとゆきひろ氏が、ベロシティ(つまり開発速度)の向上や維持のために生まれた技術なのではないかとHotwireを評している記事です。
全文はこちらから。
captureを使ってform_withのようにblockを活用したヘルパーメソッドを作る
背景
Railsのactionviewのヘルパー関数には、
form_with
のように、blockを活用して入れ子のHTML要素を記述できる便利なヘルパーメソッドがあります。 具体的には、以下のような記述(Railsガイドより引用)が出来るヘルパーメソッドです。blockを用いてHTML要素の入れ子を出力できるこのようなヘルパーメソッドの自作に関する話です。
作り方
actionviewの
capture
というヘルパーメソッドを用いると、form_with
のように、blockを使ってHTML要素の入れ子を記述できるヘルパーメソッドを自作できます。ちなみに、この
capture
は、Railsガイドを読んでも、RailsのAPIドキュメントを読んでも、いまいち使い道が分かっていなかったのですが、このような自作ヘルパーで使うというのが1つの使い道のようです。自作ヘルパーメソッドの実装例
自作ヘルパーメソッドの利用例
ERBから利用
出力結果
Rubyのコード内から利用
出力結果
Rubyのコード内からblockなしで利用
出力結果
importmap-railsは、2.x系でiOS 16.3以前のサポートを打ち切りました。
問題
importmap-railsはv2.0.0で、「ネイティブでImport mapsに対応していないブラウザでImport mapsを機能させるためのshims」の利用を打ち切りました。 一方で、iOS 16.3以前に搭載されているSafariブラウザは、ネイティブではImport mapsに対応していません。 したがって、importmap-railsを1.x系から2.x系にバージョンアップすると、iOS 16.3以前のデバイスではJavaScriptを利用したRailsアプリが動かなくなります。 このことは、この打ち切りのプルリクエスト #216で議論されているように、開発陣に既に認識されており、認識した上での打ち切りとなっています。
なお、特にiOS 15は、2024-01-22にセキュリティアップデートが出ているAppleがサポートをまだ続けているOSであるにもかかわらず、最新の15.8.1へアップデートしたデバイスであってもRailsアプリが動かなくなるため要注意です。
(参考)iOS 15とiOS 16の状況
以上から、iOS 15とiOS 16のデバイスは、2024年2月現在まだまだ利用されていると言えます。
回避策
importmap-railsを用いたRails 7アプリで、iOS 16.3以前をサポートするには、 以下のように
javascript_importmap_tags
の前にes-module-shims
を入れます。 詳細は、GitHubの公式リポジトリのREADMEの該当部分(Supporting legacy browsers such as Safari on iOS 15)を参照してください。参考情報
Windows上でPlaywrightを使ってWebKitブラウザを実行する方法
Windows PCでWebアプリなどを開発しているときに、iPhoneなどのAppleデバイスでの動作確認をしたいときがあります。 しかしながら、Appleデバイスの標準ブラウザであるSafariのWindows版は2012年頃にサポートが終了しています。 その一方で、SafariのHTMLレンダリングエンジンであるWebKitをWindows上で走らせることは現在でも可能です。
Playwrightを利用するとWebKitブラウザをWindowsにインストールして実行することが比較的簡単に出来ますので、 このコメントではその方法を以下に示します。
NodeJSのインストール
Windowsの公式パッケージマネージャであるwingetを利用すれば、以下のコマンドでNodeJSをインストール出来ます。
Playwrightのインストール
まず、適当な作業フォルダを作成します。次にそのフォルダでコマンドプロンプトかPowerShellを開き、以下のコマンドを実行します。
このコマンドを実行すると出てくる「Install Playwright browsers」の質問項目でYesつまりtrueを選択します。 (ここでYesを選択できなかった場合には、このコマンドに続いて
npx playwright install webkit
を実行して下さい。)WebKitブラウザの起動
以下のフォルダを開き、
Playwright.exe
を実行すると、WebKitブラウザが起動します。