土曜日, 9月 13, 2025
No menu items!
ホーム ブログ ページ 9039

Pythonで設計するDecoratorパターン:振る舞いを柔らかく追加する拡張技法 #デザインパターン – Qiita



Pythonで設計するDecoratorパターン:振る舞いを柔らかく追加する拡張技法 #デザインパターン - Qiita

概要

Decorator(デコレーター)パターンは、
既存のオブジェクトや関数の構造を変更せずに、新しい振る舞いを動的に追加する構造的デザインパターンである。

Pythonでは @decorator 構文によって言語レベルでサポートされており、
関数・メソッド・クラスの振る舞いをシームレスに拡張する非常に重要な機構のひとつである。


1. なぜDecoratorが必要か?

❌ 既存関数のコードを変更して機能を追加

def process():
    # ログ出力を追加したい
    print("Start")
    ...  # 処理本体
    print("End")

→ コードの可読性・保守性が低下し、再利用も困難


✅ デコレーターで機能を“包む”

@with_logging
def process():
    ...

本体に手を加えずに、任意の前後処理を柔軟に追加可能


2. 関数デコレーターの構造

✅ デコレーター関数の基本形

def with_logging(func):
    def wrapper(*args, **kwargs):
        print(f"[LOG] Start {func.__name__}")
        result = func(*args, **kwargs)
        print(f"[LOG] End {func.__name__}")
        return result
    return wrapper

✅ 使用例

@with_logging
def compute():
    print("Computing...")

compute()
[LOG] Start compute
Computing...
[LOG] End compute

3. デコレーターの応用

✅ 引数付きデコレーター(ファクトリ形式)

def with_prefix(prefix):
    def decorator(func):
        def wrapper(*args, **kwargs):
            print(f"{prefix}{func.__name__}")
            return func(*args, **kwargs)
        return wrapper
    return decorator
@with_prefix(">>>")
def greet():
    print("Hello")

greet()

functools.wraps による関数情報の保持

from functools import wraps

def with_logging(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        ...
    return wrapper

docstring, 関数名などのメタ情報を保持可能に


4. クラスベースのデコレーター

class Timer:
    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        import time
        start = time.time()
        result = self.func(*args, **kwargs)
        end = time.time()
        print(f"{self.func.__name__} took {end - start:.4f}s")
        return result
@Timer
def work():
    sum(range(10**6))

work()

5. 実務ユースケース

✅ 関数トレーシング・ログ出力

→ 実行タイミング、引数、戻り値の記録


✅ 認証・認可制御(Flaskなどでよく利用)

@app.route("/admin")
@requires_admin
def admin_panel():
    ...

✅ リトライ機構やキャッシュ制御

@retry(times=3)
def unstable_operation():
    ...

✅ テストコードにおけるセットアップ装飾

@pytest.mark.parametrize(...)
def test_case(...):
    ...

6. よくある誤用と対策

❌ wrapperで戻り値を返さない

→ ✅ 必ず return func(...) を忘れずに書くことで、オリジナルの機能を壊さない


❌ functools.wraps を使わないことで関数情報が破損

→ ✅ デバッグ性を高めるために、@wraps は常に付けるのが基本


❌ 本体と無関係な機能を過剰に追加

→ ✅ デコレーターは「責務の周辺」に限定し、1つのデコレーターに1つの機能


結語

Decoratorパターンとは、“拡張を内包し、振る舞いを優しく包み込む”設計技法である。

  • 実装本体を変えずに、新しい機能を動的に付加できる
  • Pythonにおいては関数・クラスレベルでの応用が可能で、テスト性・柔軟性・再利用性を劇的に高める
  • 設計の明瞭さと実装の疎結合性を両立できる、非常に実用的な構造

Pythonicとは、“変えずに加える”柔らかさを設計することであり、
Decoratorパターンはその柔軟な包容力を、コード全体に優雅に浸透させる。





Source link

Views: 0

ディズニーリゾートライン、2026年7月で2次元コードへ移行 交通系ICカードは継続して利用可能 – GAME Watch


 舞浜リゾートラインは、東京ディズニーリゾート各施設を結ぶ「ディズニーリゾートライン」について、2026年7月に全て二次元コードを使用した乗車券に置き換えると発表した。なお交通系ICカードは引き続き利用可能となる。

 対象となる券種は普通乗車券、フリーきっぷ、定期乗車券、団体乗車券。自動改札機前部に読み取り部を設け、印字された二次元コードをかざすことで利用できる。





Source link

Views: 0

『スーパーマリオRPG』のオリジナルサウンドトラックが発売開始。SFC版とリメイク版の楽曲をすべて収録した豪華盤アルバムには解説本が付属




「森のキノコにご用心」「対 武器ボス戦」などの楽曲をSFC版、リメイク版の両方で楽しめる豪華盤アルバムには解説本が付属。作曲家・下村陽子氏へのインタビューも公式HPで公開中



Source link

Views: 0

もう検証してるの!?「スイッチ2」限られたプレイ映像から他機種版と比較する動画が多数公開




さまざまなスイッチ2版ソフトのトレイラー動画から、早くも他機種とのグラフィック比較を試みるゲーマーたちが現れました。



Source link

Views: 0

Ilya SutskeverはGoogleクラウドをタップしてAIのスタートアップの研究を強化します



Ilya SutskeverはGoogleクラウドをタップしてAIのスタートアップの研究を強化します

Openaiの共同設立者であり、元チーフサイエンティストのIlya Sutskeverの新しいAIスタートアップであるSafe Superintelligence(SSI)は、Google CloudのTPUチップを使用してAIの研究を強化しています。 プレスリリース

Google Cloud氏によると、SSIはTPUを使用して「安全で緊密なAIの構築に向けた研究開発の取り組みを加速しています」と言います。

クラウドプロバイダーは、AI Foundationモデルをトレーニングするために毎年数億ドルをコンピューティングパワーに費やすいくつかのユニコーンAIスタートアップを追いかけています。 SSIのGoogle Cloudとの取引は、前者がGoogle Cloudでコンピューティング予算の大部分を費やすことを示唆しています。馴染みのある情報源は、Google CloudがSSIの主要なコンピューティングプロバイダーであることをTechCrunchに伝えています。

Google Cloudには、以前のAIの研究者とのストライキングコンピューティング取引の歴史があり、その多くは現在、数十億ドルのAIスタートアップを運営しています。 (SutskeverはかつてGoogleで働いていました。)10月、Google Cloud氏は言いました それは主要なコンピューティングプロバイダーです 世界ラボEx-Google Cloud AIチーフサイエンティストFEI-FEI LIによって設立されました。

SSIが他のクラウドまたはコンピューティングプロバイダーとのパートナーシップを攻撃したかどうかは不明です。 Googleクラウドのスポークスマンはコメントを拒否しました。安全なSuperintelligenceのスポークスマンは、コメントの要求にすぐに応答しませんでした。

SSIは2024年6月にSutskeverの数ヶ月後にステルスから出てきました 彼の役割から離れた Openaiのチーフサイエンティストとして。同社は、Andreessen Horowitz、Sequoia Capital、DST Global、SV Angelなどから10億ドルの支援を受けています。

SSIの発売以来、スタートアップの活動についてはほとんど聞いていません。その上 WebサイトSSIは、安全で緊密なAIシステムの開発は、「私たちの使命、私たちの名前、そして私たちの製品ロードマップ全体であるため、私たちの唯一の焦点だからです。サツケイバー 以前に言った 彼は「登る新しい山」を特定し、フロンティアAIモデルのパフォーマンスを改善する新しい方法を調査していることです。

Sutskeverは、Openaiを共同設立する前に、Google Brain Researching Neural Networksで数年間過ごしました。 Sutskeverは、OpenaiのAIの安全作業を何年もリードした後、2023年11月にOpenai CEOのSam Altmanの追放において重要な役割を果たしました。サッツキーバーは後に従業員運動に加わり、CEOとしてAltmanを復活させました。

試練の後、Sutskeverは数か月間Openaiのオフィスで見られなかったと伝えられており、最終的にSSIを開始するためにスタートアップを去りました。



Source link

Views: 0

空に浮かぶ島で居心地の良いジオラマを作るデコレーションゲーム「Twinkleby」,Steamストアページを公開中



 MightandDelightは,日本語対応のPCゲーム「Twinkleby」のSteamストアページを公開中だ。リリースは2025年内を予定している。本作は,空に浮かぶ島で居心地の良いジオラマを作る,のんびりしたデコレーションゲームだ。



Source link

Views: 0

日本マクドナルド、チキンタツタ×名探偵コナンが実施。「タルタル南蛮チキンタツタ」などが4月16日より期間限定販売 – GAME Watch


 日本マクドナルドは、「名探偵コナン」と「チキンタツタ」メニューとのコラボを4月16日より期間限定で販売を開始する。

 本コラボではハンバーガー「チキンタツタ」の新メニュー「タルタル南蛮チキンタツタ」をはじめ、定番「のチキンタツタ」が期間限定で登場。さらに、17時からの限定メニューとして新たに「ごはんチキンタツタ タルタル南蛮」と復活メニュー「ごはんチキンタツタ」が販売される。

 さらに新メニューとして「マックフィズ/マックフロート 瀬戸内レモンヨーグルト味」が登場する。

 4月15日から放映開始の新TVCMでは「名探偵コナン」とコラボレーション。「名探偵コナン」の世界観で、チキンタツタを描くオリジナルストーリーが展開される。

 また、数量限定でコラボパッケージも登場。2種のチキンタツタと2種のごはんチキンタツタでそれぞれで異なったデザインとなっており、様々な表情のキャラクターが描かれている。

【チキンタツタ「名探偵コナン 黄金の御馳走」篇 15秒】

【チキンタツタ「名探偵コナン 黄金の御馳走」篇 30秒】

【ごはんチキンタツタ 「名探偵コナン 夕景の御馳走」篇 15秒】

「チキンタツタ」メニュー

チキンタツタ

価格:450円~

タルタル南蛮 チキンタツタ

価格:500円~

ごはんチキンタツタ

価格:500円~

ごはんチキンタツタ タルタル南蛮

価格:550円~

シャカシャカポテト じゃがバタ

価格:ポテト単品+40円~

マックフィズ 瀬戸内 レモンヨーグルト味

価格:300円~

マックフロート 瀬戸内 レモンヨーグルト味

価格:380円~

X キャンペーン

リプライで当たる!「タツタとコナンが帰ってきた」キャンペーン

・応募期間:2025年4月10日7時30分~23時59分
・応募方法:マクドナルド公式 Xアカウント(@McDonaldsJapan)をフォローし、同アカウントから投稿された「タツタとコナンが帰ってきた」のハッシュタグが付いたポストに「タツタとコナンが帰ってきた」 のハッシュタグを付けてリプライ(返信)してください。
・賞品/当選数:ご応募いただいた方の中から、抽選で100名様に1,000円分のマックカードが当たります。

リプライで当たる!「ずっと待ってたチキンタツタ発売前日」キャンペーン

・応募期間:2025年4月15日7時30分~23時59分
・応募方法:マクドナルド公式Xアカウント(@McDonaldsJapan)をフォローし、同アカウントから投稿された「ずっと待ってたチキンタツタ発売前日」のハッシュタグが付いたポストに「ずっと待ってたチキンタツタ発売前日」のハッシュタグを付けてリプライ (返信)してください。
・賞品/当選数:ご応募いただいた方の中から、抽選で100名様に1,000円分のマックカードが当たります。

リプライで当たる!「チキンタツタ黄金の御馳走ついに登場」キャンペーン

・応募期間:2025年4月16日7時30分~23時59分
・応募方法:マクドナルド公式Xアカウント(@ McDonaldsJapan)をフォローし、同アカウントから投稿された「チキンタツタ黄金の御馳走ついに登場」 のハッシュタグが付いたポストに「チキンタツタ黄金の御馳走ついに登場」のハッシュタグを付けてリプライ (返信)してください。
・賞品/当選数:ご応募いただいた方の中から、抽選で100名様に1,000円分のマックカードが当たります。





Source link

Views: 0

iPhoneを米消費者が「パニック買い」–計104%関税、アップル製品の9割中国製 – CNET Japan


 トランプ大統領が導入する関税により、iPhone価格が高騰する懸念が広まり、Appleストアで購入を急ぐ動きが広がっている。

 Bloombergによれば、先週末のAppleストアは、iPhoneの値上がりを心配する客で混雑した。Appleの収益の大半を占めるiPhoneは主に中国で製造されており、中国製品には最大54%の関税が課される可能性がある。

 店舗スタッフはBloombergに対し「ホリデーシーズンのような混雑だった」と話している。ただ、来店客から価格上昇に関する質問は多かったものの、従業員向けには具体的な説明の指示がなかったという。なお、AppleはBloombergのコメント要請に応じていない。

 先週末にはAppleの時価総額が5000億ドル以上下落し、過去20年で最悪レベルの短期間の落ち込みとなった。

 パニック買いによって短期的にiPhoneの販売は伸びる可能性があるが、関税の影響が本格的に表れるのは7月以降と見られている。

 Bloombergは、Appleが関税対策として在庫を増やし、税率の低いインドへの生産シフトを加速させていると報じている。Times of Indiaによると、価格を安定させるため、Appleは3月の最終週にインドや中国からiPhoneを積んだ飛行機5機分をアメリカへ輸送した。また、Appleはベトナムやマレーシア、アイルランドなどでも一部製品の生産を行っている。

iPhoneの価格が「2倍以上」に膨れ上がる

 市場調査会社ABI Researchのディレクター、デビッド・マクイーン氏は、「この時期の買い替えや在庫確保の動きは、追加関税だけでなく、それに伴うさらなる影響を見越したものだろう」と述べた。

 「中国が対抗措置を取れば、さらに50%の関税が追加される可能性があり、関税は合計104%にも達しかねない。ティム・クックCEOが昨年10月に述べたように、米国で販売されるApple製品の95%以上が中国で製造・組み立てされており、ほぼすべてのApple製品の価格が2倍以上に跳ね上がることもあり得る」と指摘した。

(国内編集部注:トランプ政権は中国に対し、さらに50%を上乗せした計104%の関税を現地時間9日0時に発動すると発表。これによって米国をはじめとする株式市場は再び急落し、Apple株も5%急落している)

Amazonで現在開催中のセールを見る

コンセントに挿して充電器にもなるAnkerのモバイルバッテリー(価格をAmazonでチェック)

この記事は海外Ziff Davis発の記事を朝日インタラクティブが日本向けに編集したものです。





Source link

Views: 0

日本人 高齢者への虐待をやっていた「生き地獄やな。なぜここまでして生かされるのか」


an

続きを読む



Source link

Views: 0

【本日みつけたお買い得品】Radeon RX 7900 XTX搭載ビデオカードが約2万4千円引き – PC Watch


 Amazonにおいて、玄人志向のビデオカード「RD-RX7900XTX-E24GB/TP」が直近価格からの2万4,456円引きで、15万5,345円にて購入可能だ。

 RD-RX7900XTX-E24GB/TPは、「Radeon RX 7900 XTX」GPUを備えるハイエンドクラスのビデオカード。中央のファンを逆回転とし冷却性能を高めたとする3連ファンクーラーを搭載する。主なスペックは、ストリーミングプロセッサ6,144基、ブースト周波数2,525MHz、搭載メモリ24GB(GDDR6)、メモリスピード20Gbps、メモリバス幅384bit。補助電源コネクタは8ピン 2基を装備する。本体サイズは、320×118.5×62mm。

 ASRock「Radeon RX 7600 Steel Legend 8GB OC」は、直近の販売価格から4,480円引きにより、4万4,800円で購入できる。Radeon RX 7600、8GB GDDR6を搭載する。本体サイズは、303×131×45mm。





Source link

Views: 0