かずきち。の日記

サーバサイドエンジニアのつぶやき

拡張子エラーにサヨナラ。Macの標準機能だけで作る「heic自動変換フォルダ」が便利すぎる


iPhoneで撮影した写真をブログにアップロードしようとして、.heic拡張子のままではてなブログに対応しておらず、困ったことはありませんか?

今回は、Macの標準機能「オートメーション(フォルダアクション)」を使い、指定のフォルダに写真を放り込むだけで、一瞬で.pngに自動一括変換する仕組みの作り方を解説します。

今回作成する仕組みの概要

「HEIC変換」用のフォルダをデスクトップなどに作成。
そのフォルダに.heicファイルをドラッグ&ドロップする。
バックグラウンドで自動的に.pngに一括変換され、元のHEICファイルは自動消去(またはゴミ箱へ移動)される。

設定手順(クイック3ステップ)

Macに標準搭載されている「オートメーター(Automator)」アプリを使用します。コードを書く必要は一切ありません。

1. フォルダの作成
まず、デスクトップなどの分かりやすい場所に、新規フォルダを作成します。名前は「HEIC自動変換」などにしておきましょう。

2. Automatorの起動と設定
「フォルダ」右クリック→「フォルダアクション」を選択します。

画面最上部にある「"フォルダアクション"は、次の場所で受け取る選択項目を処理します:」のプルダウンから、先ほど作成した「HEIC自動変換」フォルダを選択します。

3. アクションの配置(ドラッグ&ドロップ)
左側のライブラリから、以下の順番で右側のワークスペースにアクションをドラッグ&ドロップして繋ぎます。

「イメージのタイプを変更」
ここでは.heic画像を.png画像に変更します。
途中で「追加時に元のファイルをコピーしますか?」とダイアログが出ますが、フォルダ内を整理するために「追加しない(コピーしない)」を選択します。

変更後のタイプを「PNG」に指定します。

これだけでワークスペースの設定は完了です!
ファイルを「HEIC_to_PNG」といった分かりやすい名前で保存(Cmd + S)して、Automatorを閉じます。

実際の動作と使い方

作成した「HEIC自動変換」フォルダに、iPhoneからAirDropなどで取り込んだHEIC画像を複数枚まとめてドラッグ&ドロップしてみましょう。

ネットで.heic画像を拾ってきます。

heic.digital
引用:
https://heic.digital/ja/samples/

今回はこちらのサンプル画像をこの作ったフォルダに入れてみます。
数秒待つだけで、フォルダ内のファイルがすべて自動的に高画質な.png画像に置き換わります。

注意点は処理が終わる前にファイルを移動させないよう、フォルダ内のアイコンが「PNG」に切り替わるのを一瞬だけ待ってくださいね。

まとめ

このオートメーションフォルダを1つ作っておくだけで、ブログの下書き作業が劇的にスピードアップします。WebPへの変換など、応用も簡単にできるのでぜひ試してみてください!
お役に立ちましたら、ぜひブックマークやシェアをお願いします。

【爆速開発】1時間で作成!ウェブ記事を太宰治風に書き換えるChrome拡張機能「太宰治風に読む」を作ってみた


1時間で「太宰治」を召喚せよ――ブラウザ拡張機能爆速開発記

「メロスは激怒した。だが、現代のネット記事は退屈すぎる」。そんな虚無感を抱いた私は、ウェブページを太宰治風の文体に変換するChrome拡張機能『太宰の小窓』を、生成AIを相棒にわずか1時間で作り上げることにした。

開発の設計図

時間は敵だ。思考を最小化し、AIに実装を丸投げする。

マニフェスト作成(5分): manifest.jsonをGoogleGeminiに生成させ、必要な権限(ActiveTab)を定義。

ロジック実装(20分): コンテンツスクリプトでDOMからテキストを抽出し、AI APIへ送信する関数を構築。

プロンプト調整(20分): 「汝の文体は太宰治。憂鬱かつ諧謔に満ち、独自の感性でウェブの凡百な文章を文学へ昇華させよ」という命題をAIに叩き込む。

UI実装(15分): 変換ボタンを配置したシンプルなポップアップを作成。

生成AIとの対話
最大の難関はプロンプトだ。単に「太宰風に」と命じても、似て非なるものが返ってくる。

「読者の顔色を窺うような媚びた文章は不可。自意識過剰で、どこか諦念を含んだ、それでいて魂を揺さぶるような一文に書き換えよ」。

AIは即座に理解した。試しにニュースサイトの天気を読み込ませると、画面にはこう表示された。

「空は灰色に澱み、雨が降りそうな予感だけが、私の心に鉛のような重苦しさを強いている。ああ、傘を忘れた私は、結局のところ、雨に濡れる運命なのだ」。

悪くない。むしろ、切実なほどに美しい。

結び

開発開始から58分。拡張機能は完成した。世界は相変わらず凡庸だが、このボタンを押せば、私のブラウザ内だけは津軽の冬のような、冷たくも温かい文学が広がる。

技術は本来、こうあるべきだ。孤独な魂を救うためにこそ、コードは書かれるべきなのだから。さあ、皆もAIという名の魔法使いを使い、君だけの「文学」をブラウザに実装してはどうだろうか。

デモ

拡張機能をインストールの上任意のページにアクセスします。
例えば、Yahooニュースのページにしてみましょう。

任意のページを太宰治風に変換するためにChromeブラウザに先ほどインストールした「太宰の小窓拡張」押します。

こんな太宰治の横顔のアイコンがあるはずなので、クリックします。
表示されない方は拡張機能一覧からホームに固定してください。

今見ているウェブページを太宰治が上記の画像のように書き換えててくれます。

今後の課題

アプリは簡単に作成ができますが…
太宰治の人格・太宰治の文体に対する学習データが不足しています。

太宰治だったら、「太陽」ではなく「空の中央で我が物顔に居座る光の塊」
というようなデータセットもしくはAI学習資料をいただけますと、バージョンアップします。

chromewebstore.google.com

ダウンロードはこちらから。
こちらの拡張機能はAPIを利用しており、課金が発生しますので今後自身のAPIキーをGoogleAIStudioから変更してもらう仕様変更を行う予定です。

【個人開発】GASのソースコードを爆速でQiita記事にできるChrome拡張機能「Qiitafy for GAS」

chromewebstore.google.com

Google Apps Script(GAS)でコードを書いた後、Qiitaに技術メモとして投稿したくなることってありませんか?

でも、エディタからコードをコピーして、QiitaのMarkdownエディタを開いて、言語指定のコードブロック(```javascript ~ ```)で囲む……という手作業は地味に面倒です。
そこで、GASのエディタ画面からワンクリックで「Qiita投稿用に綺麗に整形されたMarkdownコード」をクリップボードにコピーできるブラウザ拡張機能「Qiitafy for GAS」を作りました!

「Qiitafy for GAS」でできること

この拡張機能を導入すると、GASの開発画面に専用のボタンが追加されます。

ワンクリックコピー: ボタンを押すだけで、現在開いているコードを自動取得。
Markdown自動整形: 先頭と末尾に「```javascript」と「```」を自動で付与。
即時貼り付け可能: クリップボードに保存されるので、そのままQiitaの編集画面にペースト(Ctrl+V)するだけ!

開発の背景と仕組み

GASの標準エディタは非常に使いやすいのですが、外部の技術ブログ(特にQiitaやはてなブログ)にソースコードを素早く転載するためのエクスポート機能がありません。

今回の拡張機能は、Chrome Extensionとして開発しました。
バックグラウンドで動作するContent Scriptsを使い、GASのソースコードが表示されているDOM要素(Monaco Editorのテキスト領域)からプログラム的にテキストを取得し、Markdownのマークアップを結合してクリップボードAPIに書き込んでいます。

まとめ:開発効率をさらに上げたい

これまでは「コード選択 → コピー → Qiitaを開く → コードブロックを手入力 → 貼り付け」だった5ステップが、「ボタンを押す → 貼り付け」の2ステップに激減しました。
「ちょっとしたGASのTipsをすぐにシェアしたい」という時に絶大な効果を発揮します。コードはGitHubで公開していますので、GAS開発者の皆さんはぜひ使ってみてください!

chromewebstore.google.com

プライムデーKIOXIA XCERIA BASIC SSD 2TBを6.5万円→5.4万円で購入!サブスク依存からの脱却。AmazonプライムデーでMacのストレージを6TBへ増強した記録


半導体の価格の高騰が止まらない

iCloud、GoogleOneといったストレージ価格が高騰しています。
毎月課金型のストレージはじわじわ家計にボディブローを与えてきます。
もうこれ以上月額サブスに課金すると家計を圧迫しかねないということで、500GBのMacを6.5TBのMacに増強してみることにしました。

今回のプライムデーで購入したは唯一、このSSD53,699円とサウナハット2,097円を購入しました。

届いたSSDを開封

このSSDが53,699円で購入しました。
通常価格は65,000円で、今回のプライムデーは-17%ので値引き額は11,331円です。
この値引きを受けられたので、Amazonプライムの年会費5,900円はペイしたようなものです。

高額なSSDがポストに投函され、Macドッキングステーションに対応します

数ヶ月前にかったこのドッキングステーションの裏蓋を開けて、キオクシアのSSDを搭載します。

開封したSSDはこんなビニール袋に入っていて、これだけで5万円台の代物です。
慎重に壊さないように開封します。

Macドッキングステーションの裏蓋も開ける

精密ドライバで裏蓋を開けて先ほど届いたSSDをセッティングします。
ちゃんと認識するかな?とSSDをセットしてパソコンに繋いでみます。

パソコンを起動

無事2TBのキオクシアのSSDが認識され、私のMacは計6TBのマシンになりました。

1. 6TBは「どれくらいの量」?
「TB(テラバイト)」は、データの大きさを表す単位です。6TBを身近なものにたとえると、こうなります。

写真なら: スマホで撮った綺麗な写真が、約150万枚〜200万枚も入ります。毎日1枚ずつ撮っても、5,000年以上かかります。
本なら: 分厚い本(約300ページ)を、約600万冊分保存できます。巨大な図書館のすべての本を1台のパソコンに詰め込むようなイメージです。
ゲーム・動画なら: 大人気のゲームソフトを100個以上入れても、まだ余裕があるくらいの広さです。

2. なぜそんなにすごいの?
昔のパソコンは、写真やデータを少し入れるだけで「もういっぱいです!」と止まってしまうことがありました。

しかし、6TBという容量があると、「消すことを考えなくていい」というすごさがあります。
思い出の写真も、動画も、全部残しておける。
重たいゲームやソフトを、いくつも同時にインストールできる。

何年経っても、データの整理に悩まされることがほとんどない。

まるで、「終わりが見えないほど巨大な、魔法の本棚」を持っているような状態です。

まとめ
6TBのパソコンは、「どれだけ遊んでも、どれだけ記録しても、一生使いきれないくらいの広大な倉庫を持っている」のと同じくらいのすごさがあります。

もしそのパソコンを持っていれば、好きなだけ写真や動画を残して、自分だけの巨大なライブラリーを作ることができますよ。

これで私のプライムデーは終わりました。

ポイ活は「節約」ではなく「運用」である。キャンペーンを逃さないための徹底ルール

現代の消費社会において、効率的な資産形成を目指すのであれば「キャンペーン」を活用しない手はありません。私はこれまで、実利を追求する姿勢を貫き、支払い方法を状況に応じて戦略的に切り替えることで、着実なリターンを積み上げてきました。現金支払いのポイント5倍や、PayPayなどのキャッシュレス決済による20%還元といったキャンペーンは、単なる節約術ではなく、一種の「運用」であると捉えています。

支払い方法切り分けのメリット・デメリット

キャンペーンに合わせて支払い方法を柔軟に変更することには、明確なメリットとそれに伴うリスクが存在します。

【メリット】
最大の利点は、驚異的な還元率による直接的な収益の最大化です。
例えば、20%還元のキャンペーンを利用すれば、同じ商品を買っても実質的な支出を大幅に削減できます。
また、決済履歴がデジタルデータとして残るため、支出の可視化が容易になり、家計管理が最適化されます。
キャッシュレス決済の普及により、現金を持ち歩く手間を省ける点や、スピーディーな会計が可能になる点も大きな魅力です。

【デメリット】
一方で、管理の複雑化という代償も伴います。決済サービスごとに付与条件や有効期限が異なり、これらを把握するための学習コストは無視できません。また、支払行動が「無意識化」しやすく、利便性の高さゆえに使いすぎを誘発するリスクがあります。さらに、通信障害やシステムトラブルが発生した際には決済が不可能になるため、災害時などの備えとして最低限の現金は手元に残しておく必要があります。

キャンペーンを逃さない「戦略」

私はこれらのメリットを最大化し、デメリットを抑制するために「徹底したルール化」を行いました。
まずは、自分が利用するすべての決済サービスの還元率とキャンペーン情報を一元管理することです。

具体的には、高還元率のキャンペーンが開催されている店舗を優先的に選定し、あらかじめ対象となる決済方法をチャージまたは準備しておきます。
例えば、ポイント5倍の日は現金で、特定の還元キャンペーン中はPayPayで支払うといった判断を、レジの前ではなく「来店前」に完結させるのです。

この「キャンペーンに乗る」姿勢は、単なるケチな行いではありません。
経済的なリテラシーを高め、支出に対して常に最適解を求める姿勢そのものです。
結果として得られるポイントや還元額は、将来的な資産運用や自己投資へと循環させることができます。

今後も技術の進化とともに決済手段は多様化し、新たなキャンペーンが登場し続けるでしょう。
その変化を冷静に分析し、自身の生活に取り入れ続けることこそが、賢い消費者の生存戦略なのです。
情報感度を高く保ち、日々の小さな積み重ねを最大化していく。
それこそが、私のポイ活の核心にほかなりません。

なぜアウトレットは安いの?「在庫処分」だけではない、賢い消費者が知っている「専用ライン」の秘密


アウトレットモールで目にする商品が、なぜこれほどまでに低価格で販売されているのか

多くの人は「型落ち品」や「在庫処分品」が回ってきているからだと考えているだろう。
もちろん、それらも間違いではない。
しかし、現在のアウトレット流通において無視できない存在が「アウトレット専用品(ファクトリーストア専用モデル)」である。

アウトレット専用品とは何か

アウトレット専用品とは、正規店で販売される定番モデルとは別に、アウトレットストアでの販売を目的として企画・製造された商品のことだ。
これらは在庫処分の延長線上にあるものではなく、最初から「コストを抑えること」を前提に設計されている。

なぜこのような手法がとられるのか。

最大の理由は、需要の拡大だ。
憧れのブランドをより手頃な価格で提供することで、新規顧客の獲得やブランドの裾野を広げることが目的である。

専用品としてコストダウンを図るために、企業は以下のような手法をとることが多い。
素材の簡略化: 正規モデルが高級な本革を使用しているのに対し、アウトレット専用品では合成皮革を使用したり、革のランクを下げたりする。
デザイン・装飾の簡略化: 金具の装飾を減らす、縫製工程を簡略化する、あるいは複雑な刺繍や特殊な染め方を避けるといった工夫で、製造時間を削減する。
生産地の調整: 製造コストを極限まで抑えるため、正規モデルとは異なる国や工場で生産されることもある。
これらにより、正規品のブランドイメージを損なうことなく、「手が届く価格」を実現しているのである。

具体的なブランドの例

アウトレット専用モデルを展開しているブランドは、特にアメリカ系ブランドで顕著に見られる。代表的な例をいくつか挙げよう。
1. コーチ (COACH)
アウトレットの代名詞ともいえるコーチは、専用モデルの展開が非常に明確だ。見分け方は非常に分かりやすく、製品の内側に刻印されている品番(型番)が「F」から始まるものはアウトレット専用品である。これらは定番の「コーチ」のデザインを踏襲しつつ、素材や金具をアウトレット向けに調整して生産されている。
2. プラダ (PRADA) や グッチ (GUCCI)
これらのハイブランドもアウトレット専用ラインを持っている。見分け方としては、タグや内側の刻印に特徴がある。例えば、グッチには丸で囲まれた「G」の刻印がある場合、それがアウトレット専用品であることを示している。素材やデザインを限定することで、ハイブランドの品質を維持しつつ、アウトレットモールという特殊な市場での競争力を高めている。
3. マイケル・コース (MICHAEL KORS)
トレンドを取り入れたバッグで人気だが、アウトレットストアでは専用のデザインが数多く並んでいる。これらも「アウトレット販売を前提とした価格設計」が行われており、正規店の最新コレクションとは異なるモデルが中心となっている。

賢い買い物のために

アウトレット専用品は「ニセモノ」ではなく、れっきとしたブランド純正の「本物」である。重要なのは、それを理解した上で購入することだ。
もし「正規店の最高品質のものが欲しい」のであれば、アウトレットモールでも「型落ち品(かつて正規店で売られていたもの)」を探す必要がある。
一方で、「ブランドの雰囲気やデザインを日常使いで楽しみたい」「コストパフォーマンスを重視したい」のであれば、アウトレット専用品は非常に優れた選択肢となる。

型番のルールやタグの刻印を確認する知識を持っておくことで、納得感のある買い物が可能になるだろう。
アウトレットは単なる「安売り店」ではなく、ブランド戦略に基づいた「もう一つの市場」であると捉えるのが、賢い消費者の視点といえるのではないだろうか。

『すぐ欲しい』は最高の贅沢。買い物に“プレミアム”を支払うという考え方💡

最近、ネット通販の利便性が極限まで高まっています。
しかし、それでもなお「店頭で買う」という行為には、ネットにはない決定的な付加価値が存在します。
店頭で商品を買うという行為は、東京ディズニーリゾートの「ディズニー・プレミアアクセス(DPA)」を買うことと、本質的に同じで
レストランで食事をするのも、スーパーで食材を買って、調理するプロセスを省くので付加価値が付きます。

「時間」をお金で買うという体験

ディズニー・プレミアアクセスは、長い待ち時間を短縮し、貴重な体験を確実にするための「時間短縮チケット」です。
追加料金を払うことで、待機というコストをカットし、快適な体験を手に入れます。
これと全く同じことが、店頭購入にも言えます。

ネット通販であれば、注文から到着まで最短でも半日、通常は1〜3日かかります。
今すぐ欲しい」「今日使いたい」という欲求に対し、ネットは「待つ」というコストを要求します。
私としては遠足前の小学生が遠足を待ち遠しく眠れないようなもので、届くまでのワクワクを提供してくれているとも思っています。

一方、店頭に足を運ぶということは、「移動」という労力を支払う代わりに、「今すぐ手に入れる」というプレミアムを享受している

「配送の待ち時間」という目に見えないコスト
私たちは普段、通販の送料やポイント還元ばかりに目が行きがちですが、実は「時間」という最大の資産を消費しています。

ネット通販: 配送料やポイントでお得感を得るが、届くまでの「待ち時間」というコストを支払う。
店頭購入: 移動コスト・人件費を支払うが、「今すぐ使える」というプレミアムを即座に受け取る。

つまり、今すぐ欲しい商品があるとき、店舗に行くことは「時間短縮オプション」を購入しているのと同じです。
物流の網の目から商品を今すぐ物理的に取り出す体験は、ネットには再現できない、ある種の贅沢な体験と言えるでしょう。

もちろん、すべての買い物を店頭でする必要はありません。

急ぎではないもの、比較検討が必要なものは「ネット通販」
今すぐ体験したいもの、所有欲を即座に満たしたいものは「店頭購入」

このように使い分けることで、私たちは自分の時間をより豊かに使うことができます。
「ネットの方が安い」という固定観念を捨て、「自分は今、時間をお金で買っているのだ」と意識するだけで、買い物の体験は驚くほどプレミアムなものに変わります。

店頭・コンビニなどの実店舗に足を運ぶ際は、ぜひ「自分は今、プレミアムアクセスを使っているんだ」と胸を刻んでみてください。
その買い物は、きっといつもより少しだけ特別に感じられるはずです。

このプレミアムアクセスAmazonやコストコは年会費が発生しているという事実を知るべき

Amazonプライムは年間5,900円の年会費を支払う必要があります。
もしAmazonプライム未加入で、お買い物をした場合1個の商品を配送してもらうのに500円のコストが発生します。
プライム未加入でAmazonでは発注するときは3,500円以上注文しないと送料が無料になりません。
かつプライム加入で東京在住の場合、本当にすぐに届きます。
もしこれが沖縄など離島に住んでいた場合、プライムデーに参加してもすべての商品がすぐに届くというわけではありません。


Amazonよりも早く入手したい・10分後に必要みたいな人のためにコンビニエンスストアや空港の家電ショップがあると思っています。

空港で出国前に医薬品や家電を購入できるコーナーでAmazonなら半値で購入できるのに、空港だと死ぬほど高いのはこのプレミアムを支払っているからです。
本当だったら、Amazonで1週間前に買っておけばよかった、地元のドラックストアで買っておけばよかったを無視した結果…
空港で高いプレミアムを支払って同じ製品を掴まされることになります。
Amazonは大抵の商品が返品無料なので、この商品1週間後必要かな?と思った場合とりあえず購入しておいて、やっぱり使わなかったら返品をすればいいとすら思っています。
購入後30日以内の商品であれば、未開封商品であればほぼ返品可能商品の対象です。

Uberも似たような仕組みを持っていますが、Uberは返品ができない

www.uber.com

UberもAmazon同様に医薬品を届けてくれますが、UberがAmazonに勝てない理由は「返品ネットワーク」を持たないからです。
Uberの配達員が自宅に「牛丼」を配達してくれても、やっぱりお腹いっぱいだからいらないみたいなことはできません。
配達員が特定のルート配送に乗っているわけでなく、オンデマンドで配達ルートを変更するので一度受け取ってしまった商品はサポセン(サポートセンター)に連絡する以外にありません。
彼らにはオーダー通り配送する義務があります。

紅しょうが2個って注文したのに、1個しか入っていなかったぞ
ケチャップをオーダーしたのに、入っていなかったぞ
トマト2枚って言ったのに、1枚しか入っていなかった

それくらい我慢しなよという意見もありそうですが、高い手数料を支払っているのでサポート行きは確定です。
クレーマーのように聞こえますが、クレームしておかないとこの不手際が常態化するのできちんとクレームは伝えておいたほうがいいと思います。

AKBの楽曲でフライングゲットという楽曲があるのもこうした背景を写している

ヲタクの間では他人より早くいいものを手に入れたいという心理があります。

youtu.be

秋元康の作詞には今の市場状況をこんな歌詞で表しているような気がします。

価格競争は負け確。ユニクロ流「バリエーション戦略」でAmazon販売を攻略する極意


引用:
https://www.uniqlo.com/jp/ja/contents/corp/press-release/2008/12/121715_knit.html

ユニクロから学ぶ「差別化」の極意:Amazon販売におけるバリエーション戦略

ユニクロの強みは「少品種多量販売」にあります。
彼らはTシャツやヒートテックといった定番商品を絞り込み、色や柄、あるいはインナーとしての機能といった「バリエーション」を増やすことで、顧客のニーズを細やかに満たしつつ、効率的な大量生産を実現しています。
この戦略は、AmazonなどのECプラットフォームで販売を行うセラーにとっても非常に示唆に富んでいます。
まさにプライムデーで同一商品がいろんな色、いろんな匂い、いろんなサイズで売られていて、この色とサイズなら値引き率がいいなと思い、手に取ってしまう消費者もいると思います。

Amazonセラーが「仕様変え」戦略を取ります。

Amazonでは「1商品につき1ページ」が原則です。
単に仕入れた商品をそのまま売るだけでは、他のセラーとの価格競争に飲み込まれます。そこで、ユニクロ流の「バリエーション戦略」を応用して、同じ商品でも

「2個入り」「4個入り」
「ピンク」「スカイブルー」
「パッケージ付き」「詰替え用」

といった多彩なラインナップで消費者を狙い撃ちにしてきます。
するといろんな種類のなかでも4個入の詰替え用ピンクは他の組み合わせの中でも単価が安いと思って消費者はここで購入を決断します。
本当ならAmazon、楽天、メルカリなど他のECサイトとも比較をしないといけないのですが、Amazonの商品ページでラインナップが複雑すぎてもうこれでいいかとAmazonで買わせようとするし…
いろんなバリエーションがあるからこの商品は人気商品なのでは?と消費者に錯覚させることができます。

「セット組み」による独自性の演出

メーカー品を単体で売るのではなく、相性の良い消耗品や便利な小物を同梱して「セット商品」として販売します。
これにより、既存の相乗りページとは別のASIN(商品識別番号)として登録することが可能になります。
顧客にとっては「これ一つで完結する」という利便性が高まり、セラーにとっては競合が容易に相乗りできない独自の市場を作れるメリットがあります。

ノベルティ・特典による付加価値

メインの商品は変えず、オリジナルのお手入れガイドや専用ポーチなどのノベルティを付ける手法です。
これはユニクロがトレンドに合わせてカラー展開を変え、顧客に「選ぶ楽しみ」を提供しているのと同様に、単なるモノの販売を超えた「体験価値」を提供することにつながります。
またユニクロがサイズ展開をオンライン限定で網羅するように、Amazonでも「ギフト用パッケージ」や「大容量セット」など、特定のニーズに特化した仕様を用意することで、通常品とは異なるターゲット層を取り込む戦略です。

価格競争から「価値競争」へ

Amazonでの販売において、価格のみで勝負を挑むのは消耗戦です。
ユニクロが「価格よりも先に価値を定義する」ことで強固なブランドを築いたように、Amazon販売主も「仕様に一工夫加える」ことで、顧客に対して「なぜこの出品者から買うべきか」という明確な理由を提示できます。
バリエーション戦略とは、単なる品揃えの拡大ではありません。顧客のライフスタイルや購入シーンを深く洞察し、最も「ちょうど良い」組み合わせや形を提案することです。
この戦略を軸にすれば、Amazonという巨大なマーケットプレイスの中でも、独自の立ち位置を確立できるはずです。
コンビニでも「ワールドカップ限定コラボビール」や「ファミマ限定」と消費者を煽ってきますが、私は梱包は無視して、その商品の値段が妥当なのかよく考えています。

【javascript】特定のIPアドレスからのアクセスを簡易的にブロックする方法

Webサイトを運営していると、特定のアクセス元からの閲覧を制限したい場面が出てくることがあります。今回は、JavaScriptを使ってアクセス者のIPアドレスを判別し、特定のIPアドレスからのアクセスを強制的に拒否する(画面を真っ白にする)コードの仕組みを分かりやすく解説します。

1. 今回解説するスクリプトの全体像

まずは、今回使用するコードの全体を見てみましょう。

(function() {
  // ① 外部APIを使って、アクセスした人のIPアドレスを取得する
  fetch('https://api.ipify.org?format=json')
    .then(function(response) {
      return response.json();
    })

    .then(function(data) {
      var clientIp = data.ip; 

      // デバッグ用:取得したIPをコンソールに表示
      console.log("取得されたIPアドレスは: " + clientIp);

      // ② ブロックしたいIPアドレスを設定
      var blockIp = 'xxx.xxx.xxx.xxx'; 

      // ③ 一致したらアクセス拒否(ページを真っ白にする)
      if (clientIp === blockIp) {
        window.location.replace('about:blank');
      }
    })
    .catch(function(error) {
    console.error('IPアドレスの取得に失敗しました:', error);
    });
})();

このコードは、全体が (function() { ... })() という即時関数で囲まれています。これにより、この中で定義した変数(clientIp や blockIp)が、サイト内の他のJavaScriptと衝突してバグを起こすのを防いでいます。

2. 処理の3つのステップ

このスクリプトは、大きく分けて「取得」「設定」「判定」の3つのステップで動いています。

① 外部APIを使ったIPアドレスの取得
JavaScript単体では、アクセスしてきたユーザーの「パブリックIPアドレス」を直接取得することができません。そのため、ここでは fetch 関数を使って、IPアドレスをJSON形式で返してくれる外部の有名サービス「ipify(https://api.ipify.org )」に通信を行っています。

返ってきたデータを解析し、clientIp という変数にアクセス者のIPアドレスを格納します。

② ブロックしたいIPアドレスの設定
blockIp という変数に、アクセスを禁止したい特定のIPアドレスを文字列としてあらかじめ登録しておきます(このコードの例では 61.127.16.2)。

③ 一致したらアクセス拒否(ページを真っ白にする)
if (clientIp === blockIp) で、先ほど取得した「アクセス者のIP」と「ブロックしたいIP」が完全に一致するかを比較します。

もし一致した場合、以下の処理が実行されます。

window.location.replace('about:blank');

これは、ブラウザのURLを強制的に about:blank(完全に真っ白なページ)に切り替える命令です。replace メソッドを使っているため、ブラウザの「戻る」ボタンを押しても元のページに戻れないようになっています。

💡 補足:もし通信エラーなどでIPアドレスの取得に失敗した場合は、一番下の catch ブロックが動き、開発者ツールのコンソールにエラーログを残して処理を安全に終了します(サイト自体はそのまま閲覧できます)。

3. ⚠️ 運用上の重要な注意点(セキュリティの限界)

このコードは手軽に導入できる反面、本気のセキュリティ対策としては不十分です。理由は以下の2点にあります。

簡単に回避されてしまう:
この処理はユーザーのブラウザ側(クライアントサイド)で実行されます。そのため、ユーザーがブラウザの設定で「JavaScriptを無効」にしたり、開発者ツールを使ってこの判定処理をスキップしたりすると、簡単にブロックを突破されてしまいます。

表示のタイムラグ(チラつき)がある:
外部APIからIPアドレスを読み込むまでに、どうしてもわずかな時間がかかります。そのため、通信環境によっては一瞬だけ元のページが表示された後、パッと画面が真っ白に切り替わるという現象が発生します。

まとめ:確実なブロックを行いたい場合は?

今回紹介したJavaScriptによる方法は、「特定の相手にちょっとだけ見せたくない」「悪質な一般ユーザーを簡易的に遠ざけたい」というフロントエンド側での手軽な対策としては役立ちます。

しかし、不正アクセスやサイバー攻撃などを確実に遮断したい場合は、ブラウザ側ではなくサーバー側(バックエンド)で処理を行うのが鉄則です。
具体的には、.htaccess ファイルの設定を変更するか、PHPやNode.jsなどのサーバーサイド言語を使って、ページを読み込む前にIPアドレスを判定してアクセスを拒否する方式を検討しましょう。

「Apple公式も匙を投げた」Macの外部モニター問題を解決!ウィンドウ配置を崩さず特定画面だけ消灯・制御する神ツール「BetterDisplay」の全貌

Mac miniをデスクトップの主軸に据え、外部モニターを複数台並べたマルチディスプレイ環境

これ自体は、作業領域を広げて生産性を極限まで高めるための、エンジニアやクリエイターにとっての「理想のデスク環境」のはずです。

しかし、MacというOSは、Apple純正の「Studio Display」や「Pro Display XDR」といった高価な純正モニターに対しては至れり尽くせりな反面、
サードパーティ製の一般的なモニターを接続した途端、急に不器用で頑固な一面を見せ始めます。

例えば
モニタA-モニタB-モニタCがある状況で、モニタAとB,モニタBとCを点灯させることはできます。
しかし、モニタAとCのみを点灯させる離れ業は困難でした。
それはおそらくMacの映像端子でHDMIを主端子・TypeCを副端子のように切り替える設定が奥深くに存在したことに起因します。

今回は、私が長年マルチモニター環境で抱えていた「どうしても解決したかったある悩み」と、それをApple公式のサポートすらお手上げだった状態から、一瞬で、しかも完璧に救い出してくれた神アプリ『BetterDisplay』の恐るべき魅力について、熱量全開で語らせてください。

 Appleサポートもお手上げだった「特定モニターだけの消灯」問題

事の発端は、私のデスクにある複数台のモニターのうち、「特定の1枚だけを、ウィンドウ配置を維持したまま一時的にオフにしたい」というシンプルな欲求でした。
例えば、集中して目の前のメイン画面だけでコードを書きたいときや、テキスト作成に没頭したいとき。横にあるサブモニターが明るく光っているだけで、視界の端に余計な情報が入り、人間の集中力は微妙に削がれてしまいます。使わない画面はサッと消したい。誰もが思いつくごく自然な使い方です。

しかし、これをMacでやろうとすると、恐ろしい罠が待ち受けています。

「モニターの物理電源ボタンをパチッと落とせばいいじゃないか」

そう思いますよね。

ですが、サードパーティ製モニターの物理電源を切ると、Mac側は「ディスプレイの接続が完全に切断された」と認識します。

その瞬間、今までそのサブモニター側で綺麗に整理して開いていたブラウザ、ターミナル、メモなどのウィンドウ群が、残されたメイン画面へと雪崩のように一斉に崩れ込んできます。画面はグチャグチャ、せっかくの作業スペースは台無しです。
ウィンドウの配置はそのままに、特定の画面の表示(バックライト)だけをスマートに消したい。

この挙動をコントロールする方法がどうしても見つからず、私はAppleの公式サポートへ問い合わせました。
スペシャリストの方に状況を説明し、何か隠されたコマンドや設定がないかを確認したのです。
しかし、返ってきた回答は非情なものでした。

「現在のmacOSの仕様では、接続された複数の外部ディスプレイのうち、特定の1枚だけを論理的にスリープさせたり、ウィンドウ配置を保持したまま画面出力を完全に停止したりする標準機能はございません。現状では、ディスプレイのミラーリング機能で凌いでいただくか、物理的にケーブルを抜いていただく他ございません……」

天下のAppleサポートでも「仕様です、諦めてください」と匙を投げるしかない。
これが、macOSが抱えるマルチディスプレイ管理の限界です。

「BetterDisplay」がそのかゆい問題を解決する

半ば諦めかけていた私を救ってくれたのが、メニューバー常駐型のディスプレイカスタムツール『BetterDisplay』でした。

もともとは、Macに4Kやウルトラワイドモニターを繋いだ際の「文字が大きすぎるか、小さすぎるか」というスケーリング問題を解決するための、いわゆる「解像度ハック」のアプリとして有名です。しかし、このアプリの本質はそんなレベルに留まりませんでした。
私がやりたかった「特定のモニターだけをスマートにオフにする」という設定は、このアプリを導入した瞬間、拍子抜けするほどあっさりと解決したのです。

BetterDisplayを起動すると、メニューバーから各モニターの出力を個別にコントロールできるようになります。
ここで、消灯したい目的のモニターの項目から、以下のいずれかのアプローチを取るだけです。

1. 「Disconnect(仮想的な切断)」を実行する
2. 輝度(Brightness)を「0%(完全にバックライトを消灯)」にする

ここが秀逸なポイント

BetterDisplayはMacとモニターの間に仮想的なレイヤーを挟むため、アプリ側で画面への信号出力をシャットダウンしたり、バックライトを完全にゼロにしたりしても、Mac側には「まだそこにマルチディスプレイ環境が存在している」と錯覚させ続けることができます。
結果として、サブモニターはまるで電源が落ちたかのように真っ黒に消灯しているのに、ウィンドウの配置は1ミリも崩れることなく、内部で完璧に保持されるという、理想通りの環境が爆誕しました。Appleサポートが「できない」と言った難題を、このアプリは完全にクリアできました。

✨ 解像度だけじゃない、BetterDisplayの変態的な4つの魅力

この消灯機能だけでも私にとっては課金確定の神ツールなのですが、BetterDisplayの魅力はこれだけに留まりません。外部モニターを愛する全てのMacユーザーに刺さる、その圧倒的なメリットをさらに語らせてください。

1. ネイティブの限界を超える「自由自在なHiDPIスケーリング」
Macの標準設定では、接続したモニターの性能によって、選択できる解像度の選択肢が極端に狭まることがあります。BetterDisplayは、OSの制限を突破して「中間の絶妙な疑似解像度(HiDPI)」を強制的に生成できます。
「あとほんの少しだけ作業領域を広げたい、でもドットバイドットだと文字が小さすぎて目が疲れる」という我が儘な要望に、ドットの美しさを保ったまま完璧に応えてくれます。

2. キーボードの手元操作で、外部モニターの輝度・音量を一元管理
通常、Apple純正モニターでしか使えない「キーボードのF1/F2キーによる輝度調整」を、あらゆるサードパーティ製モニターで有効化できます(DDC/CI制御)。
日中の明るい時間帯は明るく、夜間の作業時はサッと手元で輝度を落とす。モニターの裏側にある押しにくい物理ボタンを手探りでポチポチ操作するストレスから、完全に解放されます。

3. 「仮想ディスプレイ(Dummy Display)」というトドメの神機能
物理的に存在しない「見えないディスプレイ」をMacの内部に作り出す機能です。これがどこで役立つかというと、iPadからのリモートデスクトップ接続や画面共有の際です。iPadの画面アスペクト比(4:3や16:10など)に完璧に一致させた仮想画面をMac側に作り、そこをキャプチャして転送することで、歪みや黒帯のない美しいフルスクリーン遠隔操作が可能になります。

4. HDRの強制有効化とモニターポテンシャルの最大化
Mac側がうまく認識してくれないモニターに対しても、HDR信号を強制的にマッピングしたり、高輝度モニターのハードウェア性能を極限まで引き出したりすることができます。手持ちのモニターが、まるでワンランク上の高級ディスプレイに進化したかのような感動を味わえます。

すべての外部モニター派Macユーザーへ

macOSの標準機能は洗練されていますが、サードパーティ製のハードウェアを組み合わせた途端に、融通の利かない「痒いところ」がいくつも生まれてしまいます。Appleサポートでさえ「仕様」として片付けるしかなかったマルチモニターの挙動を、BetterDisplayは美しく、スマートに、そして完璧に手懐けてくれました。
メニューバーにこのアイコンが常駐しているだけで得られる安心感と、デスクのコントロール性は計り知れません。
マルチディスプレイ環境でウィンドウの配置崩れにイライラしている方、画面の解像度や輝度調整に妥協している方は、今すぐ導入することをおすすめします。
間違いなく、あなたのMacライフの快適性を数段階引き上げてくれる傑作アプリです。

注目記事