Home Software プログラミング言語 Python Pythonライブラリの作成に関する公式情報 @wakairo 2024/05/25 20:19 最終更新 2024/05/25 20:24 なるほど、Pythonのパッケージングに関して、公式情報に相当する情報があるのですね。勉強になります。 それから、言及されているチュートリアルとサンプルプロジェクトのどちらも設定を書くのがsetup.pyではなくpyproject.tomlなのですね。 自分でも少し調べてみたのですが、python.orgにあるガイドには、「(パッケージングの設定には)pyproject.tomlファイルを使うのが標準的な慣習です。」と書いてあり、Zennの記事でも「現在でも歴史的経緯から setup.py のみで設定を行っているプロジェクトは多く存在しますが、このような構成は現在では非推奨」、「setup.pyを設定ファイルの一部として用いる場合であってもpyproject.tomlは配置するのが現在の標準的なセットアップ方法」と書いてある記事を見つけました。 どうやら、Pythonパッケージにはpyproject.tomlを用意すべし、pyproject.tomlを起点にしてPythonパッケージをビルドすべし、というのが公式見解のようですね。コマンドラインからsetup.pyを直接実行するやり方はlegacy、つまり、廃止予定とのことですし。
Home Software Unix Unix commands bash コメントを利用してコマンドを再利用する方法 @wakairo 2024/05/16 20:34 最終更新 2024/05/16 20:41 よく使うコマンドはaliasやシェルスクリプトの形で保存し再利用するのが王道かと思いますが、 「#」」を使ったコメントをコマンドの後ろに付けることで、コマンドを手軽に再利用する方法もあります。 例えば、以下のようにコマンドの後ろにコメントを付けておきます。 cd ~/foo/bar/baz #cfbb すると今後は、このコマンドをそのまま再実行したいときには、C-rのあと#cfbbと入力してEnterで再実行できます。 ちなみに、コマンド全体が同じではなく、引数などの部分をそのときそのときで変えたい場合には、 先ほどの操作から続けて、C-eで行末に移動し、M-bとM-fで単語単位で移動して、M-dかC-wで単語単位で削除して、新たな内容を入力、といった形で対応することも出来はします。 もちろん、こういった操作がややこしい感じになるなら、素直にaliasかシェルスクリプトの活用の方が良いのではないかと思いますので、このコメントを利用した方法が活躍する場面は、全く同じコマンドを繰り返す場合だと思います。
Home Software Libraries Ruby commonmarker commonmarker v1.xは、出力の編集が必要ならまだ時期尚早? @wakairo 2024/05/13 19:40 最終更新 2024/05/13 19:42 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を部分的に好き勝手な形に編集することは出来るのでしょうか? ご存じの方がいらっしゃいましたら、コメントをいただけると嬉しいです。
Home Software Libraries Ruby rails WSL2上にてrails serverで立ち上げたサーバに別デバイスからのアクセスを可能にする方法 @wakairo 2024/05/08 21:10 最終更新 2024/05/08 21:11 別デバイスからhttpsでrails serverにアクセスする方法 前述の方法で別デバイスからhttpでアクセスできるようになりますが、httpsでアクセスする必要がある場合には、 local-ssl-proxyを使ってhttpsをhttpに振り向けることで、httpsアクセスが可能になります。具体的な方法は以下をご覧ください。 なお別デバイスからhttpsでアクセスするには、前述のポートフォワーディングとファイアウォールの設定をhttpsのポート番号で行う必要があります。 local-ssl-proxyを使ってhttpsでhttp://localhost:3000/へアクセスする方法
Home Software Libraries JavaScript local-ssl-proxy local-ssl-proxyを使ってhttpsでhttp://localhost:3000/へアクセスする方法 @wakairo 2024/05/08 20:34 最終更新 2024/05/08 20:57 背景 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のポートにも必要となります。 (設定方法の参考資料) WSL2上にてrails serverで立ち上げたサーバに別デバイスからのアクセスを可能にする方法 余談その1 Copilot先生によれば、httpで走っているアプリにhttps相当でアクセスするための別の方法としては、以下のものがあるそうです。 localtunnelなど、ローカルで走っているアプリをインターネットに公開するサービスを利用してしまう。 Chrome DevToolsのリモートデバッグ機能を利用する。 なお、Copilot先生の回答全文はこちらです。 余談その2 local-ssl-proxyは、Copilot先生に教えてもらいました。Google検索ではlocal-ssl-proxyにはたどり着いていませんでした。
Home Software Libraries Ruby importmap-rails importmap-railsは、2.x系でiOS 16.3以前のサポートを打ち切りました。 @wakairo 2024/05/02 17:09 回避策が公式リポジトリのREADMEに掲載されたので、回避策のところを更新しました。
Home Software Libraries Ruby actionview captureを使ってform_withのようにblockを活用したヘルパーメソッドを作る @wakairo 2024/04/18 11:01 最終更新 2024/04/18 11:14 背景 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>
Home Web Service Copilot (formerly "Bing Chat" and "The new Bing") ChatGPTやCopilotを活用したペルソナ作成 @wakairo 2024/04/08 12:37 最終更新 2024/09/04 11:36 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を始める際の動機として考えられるものです。 彼女の活動的な性格とプロフェッショナルな目標に合致していると言えるでしょう。 どう思われますか?
Home Web Service Copilot (formerly "Bing Chat" and "The new Bing") ChatGPTやCopilotを活用したペルソナ作成 @wakairo 2024/04/08 12:32 ChatGPTやCopilotのような生成AIの力を借りてのペルソナの作成に関するTopicです。 参考資料 https://unique1.co.jp/column/marketing-measures/9782/ https://note.com/tsumura_design/n/n2d2b5de6be61?sub_rt=share_h https://mieru-ca.com/blog/chatgpt-persona/ https://twitter.com/sawawww/status/1639925031777226753 https://dev.classmethod.jp/articles/chatgpt_persona/
Home Software Libraries Ruby importmap-rails importmap-railsは、2.x系でiOS 16.3以前のサポートを打ち切りました。 @wakairo 2024/02/12 21:30 最終更新 2024/05/02 17:09 問題 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の状況 2024-01-22にセキュリティアップデートが出されているため、iOS 15以降はAppleがサポートを続けているOSであると考えられます。 こちらのWebサイトによると、2023年8月時点の国内シェアはiOS 16が85.1%、iOS 15が10.4%となっています。 こちらのWebサイトによると、2023年5月時点の全世界でのシェアはiOS 16が81%、iOS 15が13%となっています。 以上から、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 %> 参考情報 この回避策で上手く行ったという報告
Pythonライブラリの作成に関する公式情報
なるほど、Pythonのパッケージングに関して、公式情報に相当する情報があるのですね。勉強になります。
それから、言及されているチュートリアルとサンプルプロジェクトのどちらも設定を書くのが
setup.py
ではなくpyproject.toml
なのですね。 自分でも少し調べてみたのですが、python.orgにあるガイドには、「(パッケージングの設定には)pyproject.toml
ファイルを使うのが標準的な慣習です。」と書いてあり、Zennの記事でも「現在でも歴史的経緯から setup.py のみで設定を行っているプロジェクトは多く存在しますが、このような構成は現在では非推奨」、「setup.py
を設定ファイルの一部として用いる場合であってもpyproject.toml
は配置するのが現在の標準的なセットアップ方法」と書いてある記事を見つけました。どうやら、Pythonパッケージには
pyproject.toml
を用意すべし、pyproject.toml
を起点にしてPythonパッケージをビルドすべし、というのが公式見解のようですね。コマンドラインからsetup.py
を直接実行するやり方はlegacy、つまり、廃止予定とのことですし。コメントを利用してコマンドを再利用する方法
よく使うコマンドはaliasやシェルスクリプトの形で保存し再利用するのが王道かと思いますが、
「#」」を使ったコメントをコマンドの後ろに付けることで、コマンドを手軽に再利用する方法もあります。
例えば、以下のようにコマンドの後ろにコメントを付けておきます。
すると今後は、このコマンドをそのまま再実行したいときには、
C-r
のあと#cfbb
と入力してEnterで再実行できます。ちなみに、コマンド全体が同じではなく、引数などの部分をそのときそのときで変えたい場合には、 先ほどの操作から続けて、
C-e
で行末に移動し、M-b
とM-f
で単語単位で移動して、M-d
かC-w
で単語単位で削除して、新たな内容を入力、といった形で対応することも出来はします。 もちろん、こういった操作がややこしい感じになるなら、素直にaliasかシェルスクリプトの活用の方が良いのではないかと思いますので、このコメントを利用した方法が活躍する場面は、全く同じコマンドを繰り返す場合だと思います。commonmarker v1.xは、出力の編集が必要ならまだ時期尚早?
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を部分的に好き勝手な形に編集することは出来るのでしょうか? ご存じの方がいらっしゃいましたら、コメントをいただけると嬉しいです。
WSL2上にてrails serverで立ち上げたサーバに別デバイスからのアクセスを可能にする方法
別デバイスからhttpsで
rails server
にアクセスする方法前述の方法で別デバイスからhttpでアクセスできるようになりますが、httpsでアクセスする必要がある場合には、
local-ssl-proxy
を使ってhttpsをhttpに振り向けることで、httpsアクセスが可能になります。具体的な方法は以下をご覧ください。 なお別デバイスからhttpsでアクセスするには、前述のポートフォワーディングとファイアウォールの設定をhttpsのポート番号で行う必要があります。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
にはたどり着いていませんでした。importmap-railsは、2.x系でiOS 16.3以前のサポートを打ち切りました。
回避策が公式リポジトリのREADMEに掲載されたので、回避策のところを更新しました。
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なしで利用
出力結果
ChatGPTやCopilotを活用したペルソナ作成
Copilotを利用したペルソナの作成例
ペルソナ作成用プロンプトとその実行結果
入力プロンプト:
Coplilotの回答:
続けてペルソナに関して質問をする例
入力プロンプト:
Coplilotの回答:
ChatGPTやCopilotを活用したペルソナ作成
ChatGPTやCopilotのような生成AIの力を借りてのペルソナの作成に関するTopicです。
参考資料
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)を参照してください。参考情報