Comments

コメントを利用してコマンドを再利用する方法

wakairo @wakairo
Last edited

よく使うコマンドはaliasやシェルスクリプトの形で保存し再利用するのが王道かと思いますが、
「#」」を使ったコメントをコマンドの後ろに付けることで、コマンドを手軽に再利用する方法もあります。

例えば、以下のようにコマンドの後ろにコメントを付けておきます。

cd ~/foo/bar/baz #cfbb

すると今後は、このコマンドをそのまま再実行したいときには、C-rのあと#cfbbと入力してEnterで再実行できます。

ちなみに、コマンド全体が同じではなく、引数などの部分をそのときそのときで変えたい場合には、 先ほどの操作から続けて、C-eで行末に移動し、M-bM-fで単語単位で移動して、M-dC-wで単語単位で削除して、新たな内容を入力、といった形で対応することも出来はします。 もちろん、こういった操作がややこしい感じになるなら、素直にaliasかシェルスクリプトの活用の方が良いのではないかと思いますので、このコメントを利用した方法が活躍する場面は、全く同じコマンドを繰り返す場合だと思います。

0
Raw
https://www.techtips.page/en/comments/296
💡1

commonmarker v1.xは、出力の編集が必要ならまだ時期尚早?

wakairo @wakairo
Last edited

2023/12/25にcommonmarker v1.0.0がリリースされました。 それから4ヶ月以上が経過していますが、v1.xを採用せずにv0.xに留まっているライブラリやプロジェクトが多いように見受けられます。

たとえば、 jekyll-commonmarkのgem指定commonmarker-rougeのgem指定は、 2024/05/13現在ではv0.xになっています。

v0.xで出来ていた編集操作がv1.xではまだ出来ない?

commonmarkerにMarkdownを入力して、出力されたHTMLをそのまま使う分には現在のv1.xで十分でしょう。 しかし、スタイル変更やJavaScriptによる機能付与などで、出力されるHTMLを多少変更したいことがあります。 v0.xではこういうときに使えるものとして、任意のHTMLを挿入する方法があったのですが、少なくともこのv0.xの方法はv1.xでは出来なくなったようです。

Pluginの活用か何かで、v1.xでもv0.xと同じように、出力のHTMLを部分的に好き勝手な形に編集することは出来るのでしょうか? ご存じの方がいらっしゃいましたら、コメントをいただけると嬉しいです。

0
Raw
https://www.techtips.page/en/comments/293
😿1

WSL2上にてrails serverで立ち上げたサーバに別デバイスからのアクセスを可能にする方法

wakairo @wakairo
Last edited

別デバイスからhttpsでrails serverにアクセスする方法

前述の方法で別デバイスからhttpでアクセスできるようになりますが、httpsでアクセスする必要がある場合には、 local-ssl-proxyを使ってhttpsをhttpに振り向けることで、httpsアクセスが可能になります。具体的な方法は以下をご覧ください。 なお別デバイスからhttpsでアクセスするには、前述のポートフォワーディングとファイアウォールの設定をhttpsのポート番号で行う必要があります。

0
Raw
https://www.techtips.page/en/comments/292
🔧1
💡1

local-ssl-proxyを使ってhttpsでhttp://localhost:3000/へアクセスする方法

wakairo @wakairo
Last edited

背景

Webの機能には、httpsでアクセスしているときにしか利用できないものがあります。 例えば、navigator.clipboardを用いてクリップボードへ書き込む機能はhttpsでアクセスしているときにのみ利用可能です。 ローカル環境においてhttpで走っている開発中のアプリに対して、こういった機能をテストするために、httpsでアクセスしたい場合があります。

ローカルでhttpsアクセスをhttpアクセスへ振り向ける方法

以下のコマンドを実行すれば、httpで走っている( http://localhost:3000/ )アプリに、ブラウザからhttps( https://localhost:3001/ )からアクセスできるようになります。

npx local-ssl-proxy --source 3001 --target 3000

なお、アプリが走っているPCとは別のデバイスからアクセスする場合には、httpのポートのために行ったポートフォワーディングやファイアウォールの設定がhttpsのポートにも必要となります。

余談その1

Copilot先生によれば、httpで走っているアプリにhttps相当でアクセスするための別の方法としては、以下のものがあるそうです。

  • localtunnelなど、ローカルで走っているアプリをインターネットに公開するサービスを利用してしまう。
  • Chrome DevToolsのリモートデバッグ機能を利用する。

なお、Copilot先生の回答全文はこちらです。

余談その2

local-ssl-proxyは、Copilot先生に教えてもらいました。Google検索ではlocal-ssl-proxyにはたどり着いていませんでした。

0
Raw
https://www.techtips.page/en/comments/291
😄1
🔧1
❤️1

captureを使ってform_withのようにblockを活用したヘルパーメソッドを作る

wakairo @wakairo
Last edited

背景

Railsのactionviewのヘルパー関数には、form_withのように、blockを活用して入れ子のHTML要素を記述できる便利なヘルパーメソッドがあります。 具体的には、以下のような記述(Railsガイドより引用)が出来るヘルパーメソッドです。

<%= form_with url: "/search", method: :get do |form| %>
  <%= form.label :query, "Search for:" %>
  <%= form.text_field :query %>
  <%= form.submit "Search" %>
<% end %>

blockを用いてHTML要素の入れ子を出力できるこのようなヘルパーメソッドの自作に関する話です。

作り方

actionviewのcaptureというヘルパーメソッドを用いると、form_withのように、blockを使ってHTML要素の入れ子を記述できるヘルパーメソッドを自作できます。

ちなみに、このcaptureは、Railsガイドを読んでも、RailsのAPIドキュメントを読んでも、いまいち使い道が分かっていなかったのですが、このような自作ヘルパーで使うというのが1つの使い道のようです。

自作ヘルパーメソッドの実装例

def some_helper(content=nil, &block)
  object_passed_to_block = 'hello, capture'
  content = capture(object_passed_to_block, &block) if block
  tag.div(content, class: 'some-class')
end

自作ヘルパーメソッドの利用例

ERBから利用
<%= some_helper do |object| %>
  <p><%= object %></p>
<% end %>
出力結果
<div class="some-class">
  <p>hello, capture</p>
</div>
Rubyのコード内から利用
some_helper do |object|
  tag.p(object)
end
出力結果
<div class="some-class"><p>hello, capture</p></div>
Rubyのコード内からblockなしで利用
some_helper('123')
出力結果
<div class="some-class">123</div>
0
Raw
https://www.techtips.page/en/comments/281
🔧1
💡1

ChatGPTやCopilotを活用したペルソナ作成

wakairo @wakairo
Last edited

Copilotを利用したペルソナの作成例

ペルソナ作成用プロンプトとその実行結果

入力プロンプト:

あなたはプロのUXデザイナーです。 以下のサービスのペルソナを作成してください。
#背景、#課題、#課題への対応策、#想定ターゲット顧客
を読み込んで、ペルソナを作成してください。
#フォーマットに沿って出力すること。

#背景:"""
サービス開始から20年が経過したSNSのデザインについてメジャーアップデートを行う。
"""

#課題:"""
時間経過と共にメインユーザーの年代も上がってしまい、若い年代のユーザーが入りにくくなってしまっている。
"""

#課題への対応策:"""
若い年代のターゲット顧客が魅力を感じるUXにする。
ただし、現在のメインターゲットにとって支障が無いUX変更の範囲内に収める。
"""

#想定ターゲット顧客:"""
30歳前後の働き盛り。
趣味でも仕事でも交友関係が広い。
友人や知人にSNSを勧誘できる人。
"""

#フォーマット:"""
名前:
年齢:
性別:
趣味:
勤務先の企業風土:
役職:
職務内容:
特徴的な行動・活動:

Coplilotの回答:

ペルソナの作成をお手伝いします。
以下に、ご指定のフォーマットに沿ったペルソナを提示します。

名前:佐藤 明美 (さとう あけみ)
年齢:29歳
性別:女性
趣味:旅行、写真撮影、ソーシャルメディアでの活動
勤務先の企業風土:革新的で、社員の自由な発想を奨励するIT企業
役職:マーケティングマネージャー
職務内容:新しいマーケティング戦略の開発、チームのリード、プロジェクトの管理
特徴的な行動・活動:仕事の成果をSNSで共有し、業界内外のネットワークを広げる。趣味の旅行中に撮影した写真をSNSで共有し、フォロワーとの交流を楽しむ。

このペルソナは、SNSのデザインを若い世代にも魅力的に感じさせるための参考になるでしょう。
また、現在のメインターゲットにとっても支障がないようなUX変更を考慮する際に役立つ情報を含んでいます。
ご要望に沿った内容でしょうか?

続けてペルソナに関して質問をする例

入力プロンプト:

この佐藤さんは既にSNSで盛んに活動しています。
この佐藤さんが年代が高めのSNSを新たに始めるとしたら、どのような考えの結果でしょうか?

Coplilotの回答:

佐藤さんが新たに年代が高めのSNSを始めるとしたら、以下のような考えがあるかもしれません。

- **プロフェッショナルなネットワーキング**: 佐藤さんは仕事での成果をSNSで共有し、業界内外のネットワークを広げることを重視しています。年代が高めのユーザーが多いSNSは、より経験豊富な専門家や業界リーダーとのつながりを築くための新たな機会を提供するかもしれません。

- **多様な視点の獲得**: 年齢層が広いSNSでは、異なる世代の意見や視点に触れることができます。これにより、佐藤さんはマーケティング戦略を考える際に、より幅広い顧客層のニーズを理解することができるでしょう。

- **影響力の拡大**: 若い世代だけでなく、年配のユーザーにも影響を与えることで、佐藤さんのSNS上での影響力をさらに拡大することができます。これは、彼女の職務内容やキャリアにとって有利に働く可能性があります。

- **個人的な成長**: 新しいSNSを通じて、佐藤さんは自身の趣味や興味を共有し、異なる年代の人々と交流することで、個人的な成長を遂げることができるでしょう。

これらの考えは、佐藤さんが新しいSNSを始める際の動機として考えられるものです。
彼女の活動的な性格とプロフェッショナルな目標に合致していると言えるでしょう。
どう思われますか?
1
Raw
https://www.techtips.page/en/comments/279
😄1
🔧1

ChatGPTやCopilotを活用したペルソナ作成

wakairo @wakairo
0
Raw
https://www.techtips.page/en/comments/278
💡1
❤️1

importmap-railsは、2.x系でiOS 16.3以前のサポートを打ち切りました。

wakairo @wakairo
Last edited

問題

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)を参照してください。

<script async src="https://ga.jspm.io/npm:[email protected]/dist/es-module-shims.js" data-turbo-track="reload"></script>
<%= javascript_importmap_tags %>

参考情報

0
Raw
https://www.techtips.page/en/comments/277
😄1
🔄1
😿1
💯1

Windows上でPlaywrightを使ってWebKitブラウザを実行する方法

wakairo @wakairo

Windows PCでWebアプリなどを開発しているときに、iPhoneなどのAppleデバイスでの動作確認をしたいときがあります。 しかしながら、Appleデバイスの標準ブラウザであるSafariのWindows版は2012年頃にサポートが終了しています。 その一方で、SafariのHTMLレンダリングエンジンであるWebKitをWindows上で走らせることは現在でも可能です。

Playwrightを利用するとWebKitブラウザをWindowsにインストールして実行することが比較的簡単に出来ますので、 このコメントではその方法を以下に示します。

NodeJSのインストール

Windowsの公式パッケージマネージャであるwingetを利用すれば、以下のコマンドでNodeJSをインストール出来ます。

winget install -e --id OpenJS.NodeJS.LTS

Playwrightのインストール

まず、適当な作業フォルダを作成します。次にそのフォルダでコマンドプロンプトかPowerShellを開き、以下のコマンドを実行します。

npm init playwright@latest

このコマンドを実行すると出てくる「Install Playwright browsers」の質問項目でYesつまりtrueを選択します。 (ここでYesを選択できなかった場合には、このコマンドに続いてnpx playwright install webkitを実行して下さい。)

WebKitブラウザの起動

以下のフォルダを開き、Playwright.exeを実行すると、WebKitブラウザが起動します。

C:\Users\<ユーザ名>\AppData\Local\ms-playwright\webkit-<バージョン>
1
Raw
https://www.techtips.page/en/comments/276
😄1
🔄1
💡1