自作PCをRyzen 7 5700Xに更新する

Windows 11 PCの入手計画を立てるの続き。2017年に作成した自作PCCore i7-7700 + GTX 1070 )を更新してWindows 11を入れ、 2023年でも通用するPCにするまでの記録です。アマゾンアフィリエイトを利用しています。

パーツ選定

CPU

結論を言うとAMDAMD Ryzen 7 5700Xを購入しました。以下は選定の過程です。

CPUの世代は最新であることにはこだわらず、代わりに値段がこなれていることと、かつ消費電力が小さいことを重視しました。 つまりコストパフォーマンスとワットパフォーマンス重視です。

前に使っていたCPU (Core i7-7700) のTDPが65Wであったので、これを基準とし、 TDPが同じく65WのCPUから選定することにしました。 私見ですがTDP 65Wは性能と消費電力のバランスが優れているように思います。

IntelのCPUだと、以下あたりが候補でした。

CPU 価格 (調査時点) Passmarkのスコア
Core i5-13500 36,940 32,513
Core i5-13400F 30,726 25,691
Core i5-13400 33,680 25,473

AMDのCPUだと、以下あたりが候補でした。

CPU 価格 (調査時点) Passmarkのスコア
Ryzen 7 5700X 26,977 26,813
Ryzen 5 5600X 21,450 21,945
Ryzen 5 5600 17,980 21,651

最新世代のCPU (Zen 4) だとソケットがAM5に、メモリがDDR5のみの対応になります。 ソケットがAM5のATXマザーボードは高く(現時点で最低2万1千円)、またメモリも買い直しになってしまいます。

旧世代のCPU (Zen 3) だとソケットはAM4、メモリはDDR4になります。 ソケットがAM4のATXマザーボードはAM5のそれに比べると比較的安く、またメモリは古いのを使いまわせます。

今から旧世代のマザーボードとCPUとをそろえるのは心情的に微妙ですが、 私は頻繁にCPUを買い替えるようなことはしないだろうと思い、 現時点での値段を考慮して、今回は旧世代のCPU (Zen 3) のみを選定対象としました。

また、AMDのCPUにはグラフィック機能付きのCPU(例えばRyzen 7 5700G)がありますが、 PCI Express 4.0に対応していなかったりして性能が劣るので、これも選外にしました。

上記のように候補出ししたあと、まずIntelAMDにどちらにするかの大きな分岐点がありました。 非常に迷いましたが、以下の理由からAMDを選びました。

  • まだ使ってみたことのないAMDのCPUを試してみたかった
  • Intelはおおむね2世代ごとにソケットが変わるのに痛い目を見たので、心情的にIntelは避けたかった
  • AMDのほうがIntelより若干コスパが良かった

Intelにも以下の魅力がありましたが、今回は選びませんでした。

  • Core 第13世代CPUはDDR4メモリ、DDR5メモリの両方に対応しているので、DDR4メモリ対応のマザーボードを買えばDDR4メモリを使いまわせる
  • IntelのCPUに最適化しているソフトのほうが多い(らしい)

残るはどのCPUにするかですが、ここは単純にもっともPassmarkのスコアが高く、長く使えそうなRyzen 7 5700Xにしました。

悔しかったのは過去の価格で、このCPUは今年の6月ころ22,000 ~ 23,000円程度で購入できたという事実です。 待つと再び安くなる可能性もありましたが、逆に高くなる可能性ももちろんあったので、 結局私はドスパラで26,980円で購入しました。

マザーボード

ATX規格、かつ、AM4ソケット、かつ、重いGPUをさしても大丈夫なようにスロットが補強されているマザーボード価格.comで調べました。

値段だけでいうとASRockのB550 Phantom Gaming 4が最安でしたが、使用経験のあり、かつI/FがASRockより優れているASUSのTUF GAMING B550-PLUSを購入しました。 購入先はドスパラで、16,902円でした。 今さらですが、ATXマザボのよりMicro-ATXマザボのほうが数千円安かったので、ケースはスカスカになりますがMicro-ATXマザボを選んでもよかったかもしれません。

マザーボードは選択肢が少なかったのであまり迷いませんでした。

CPUクーラー

Ryzen 7 5700XにはCPUクーラーがついていないので、 価格.comで売れ筋のDEEPCOOL AK400を購入しました。同じくドスパラで2,975円でした。

SSD

今使用しているストレージがCrucial SSD MX300 525GB M.2 Type CT525MX300SSD4というやつで、M.2スロットに刺さるものの実はSATAタイプで、読み込みが530MB/秒しか出ません。 これは最近のものに比べると1/10程度の速度なので、買い替えることにしました。

最初は価格.comで商品を並べて速度・価格だけを見て選ぼうと思っていたのですが、調査するにつれ、他にも発熱の程度や実用速度(ストレージの空き容量が少ないときの速度など)など スペック表だけを見てはわからない要素がたくさんあることがわかってきました。

【2023年版】おすすめなSSD「10選」:SSDベンチオタクの筆者が解説 | ちもろぐ の記事を全面的に参考にして、結局以下の2つのSSDを購入しました。

  • WD BLACK SN770 2TB
    • 読み込み速度は 5150 MB/s と控えめなものの総合性能は高く、発熱は低めだそうです。
    • Windows向けのシステムディスクを意図。
    • ツクモ パソコン Yahoo!店で購入。19,872円で、初回利用限定クーポン1,500円とPayPayポイント1,497円相当がついて、実質16,875円でした
  • HIKSEMI FUTURE 2TB
    • 読み込み速度は 7450 MB/s、全体的にトップクラスの性能の割に安いと評判のSSDです。
    • Ubuntu向けのシステムディスクを意図。
    • 正直、耐久性は心配ですが、意外と故障報告は少ないようですので思い切って購入。
    • Amazonのタイムセールで13,980円でした。

今回初めてYahoo! ショッピングを使用しましたが、PayPayポイント分を考慮すると価格.com最安よりも安くなることがままあり、今後も覗いてみようと思えました。

CPUグリス

当初買う予定はなかったものの、CPUクーラーを取り付け時にグリスをべったりと床につけてしまったために慌てて追加購入。 シミオシ OC Master 1g SMZ-01R-01Amazonで666円で購入。

Wi-Fiカード

選定したマザーボードTUF GAMING B550-PLUSにはWi-Fiモジュール用M.2スロットが存在します。これを活用してみたかったので、Wi-Fiカードを買うことにしました。

ただ、Wi-FiカードはPCの筐体内なので、電波を拾うためにアンテナも必要になるそうです。 AmazonでOKN(OK Networking Japan)という業者が出している AX210NGWとアンテナのセット を3,280円で購入しました。 これでWi-Fi 6EとBluetooth 5.3が使えるようになります。

Windows 11 Pro

HomeとProとでかなり差額がありますが、今後もMicrosoftが無料でOSのアップグレードを行ってくれることを期待して後悔しないようProを選択。 ショッピングサイトで"Windows 11"と検索するとどう考えても違法としか思えない怪しい商品が多くて辟易しますが、 大手で信頼できるぱーそなるたのめーるでパッケージ版を購入。24,050円で、PayPayポイント3,943円相当がついて、実質20,107円でした

買わなかったもの

以下は前のものを持ち越したので買いませんでした。

  • パソコンケース: SAMA 黒鉄
  • メモリ: Crucial DDR4-2400 8GB * 2
  • GPU: ASUS ROG STRIX-GTX1070-8G-GAMING
  • 電源: Corsair CX650M 80PLUS BRONZE

総額

今回のPC更新でかかった金額を合算すると、 26,980 + 16,902 + 2,975 + 16,875 + 13,980 + 666 + 3,280 + 20,107 = 105,708円でした。思ったより高かった…

PC組み立て

PC組み立てに関する自分用メモです。

旧部品の取り外し

おおむね以下の順番でやりました。

  • 光学ドライブを取り外す
  • GPUを取り外す
  • マザーボードからケーブル類を取り外す
    • ATX電源コネクターはとても固いので注意。ロック用の爪を押し込みながら、左右に揺らして少しずつ抜いていく。
  • PC本体からI/Oシールドを取り外す
    • 外側から押し込めば取れる。
  • メモリを取り外す
  • マザーボード本体を取り外す

新部品の設置

おおむね以下の順番でやりました。

  • 帯電防止袋の上にマザーボードを設置
  • 物理メモリを装着。説明書を見て、速度の出る推奨のスロットに刺す
  • CPUを装着
    • 向きがあるので注意。AMDのCPUには隅に目印の小さな三角があるので、それを目印にする。
  • CPUクーラーを装着
    • AK400を箱から取り出し、CPUグリスが塗ってあることに気づかず無作為に床に置いてしまうミスをする… 後日、前述のCPUグリスを購入。
    • CPUクーラーの土台を説明書に従い設置。マザーボードに付属していたパーツが余るので、袋に入れてとっておく。
    • ここにあるようにCPUグリスの塗り方には様々な流派があるが、Intel公式が推薦する、中央に米粒大のグリスを置く方法をとる。
    • CPUクーラーを説明書に従い設置。CPUグリスがうまく拡がっているのかはわからず不安。ヒートシンクとファンをつなぐ金具が2個余ったが、なぜ余るのかよくわからない。
    • CPU_FANという端子にケーブルを接続。CPU_OPTは水冷のファンやデュアルファンのCPUクーラー用なので基本使わない(参考)。
  • M.2 SSDを装着
    • マザーボードの説明書には「取り付ける M.2 SSD が部品を片面のみに搭載する片面実装タイ プの場合は、付属のゴムパッドを貼り付けてからご使用ください」と記述がある。しかし、M.2スロットは2つあるのにゴムパッドが1個しか付属しない。
    • テックウィンドのサポートに問い合わせたところ、「付属のゴムパッドはヒートシンクを取り付けるM.2にお取り付けください。ヒートシンクがついていない方についてはゴムパッドなしでも取り付けを行っていただいても問題ありません。」と返事あり。
    • よって以下のように設置。いずれもマザボ付属の長ネジを使用
      • M.2_1 (Gen4) の方にはゴムパッドなしでHIKSEMI FUTURE 2TBを装着(HIKSEMI FUTURE 2TBに付属していたネジは使わない)
      • M.2_2 (Gen3) の方にはゴムパッドありでWD_BLACK SN770 2TBを装着。さらにマザボ付属のM.2ヒートシンクをかぶせる。
  • Wi-FIモジュールを装着
    • Wi-FIモジュール用のM.2スロットにすんなり接続。マザボ付属の短ネジを使用。
    • アンテナ2個をブラケットに通し、付属していたネジでブラケットを固定。PC筐体の問題かもしれないが、ブラケットはゆるゆる。
    • Wi-FIモジュールの説明書には「付属のBluetoothケーブルの白い端をこのネットワークカードに接続し、黒い端をマザーボードのUSBソケット(F-USB)に接続します。」とあるが、そのようなケーブルは付属していない。→ 特にこのような接続はせずともBluetoothは使えている。
  • I/Oシールドを装着
    • 内側から外側へ。
  • マザーボードをPC本体に装着
    • ネジ穴の位置がなかなか合わず、力でマザーボードを押してネジ穴の位置を無理やり合わせながらネジを装着。あってるのか?
  • マザーボードに各種ケーブルを接続
    • ATX電源コネクターははめるのが大変。隙間がなくなるまで押し込む。  - USBケーブルを接続。ケーブルにはUSB3.0と印字があるがマザボにはUSB3.2と印字あり。どちらの速度になるのだろう?  - 背面ファンから延びるコネクターはCPU_FAN1に接続。ピンが1個余るがこれでよいらしい(回転数制御できるファンなら4pin、できないファンなら3pinを使う)
    • POWER SWやRESET SWは、三角のしるしがあるほうがプラス、無印のほうがGNDらしい。(参考
    • マザーボード側にPLEDの端子が2つあるが、普通は2ピンのほうを使うらしい。(参考
    • POWER SWなどの細かなケーブルは、テープで仮止めして一気に刺すと刺しやすいかも。
  • 光学ドライブを設置
  • GPUを接続

ここで電源を投入。マザーボードBIOSバージョンは3202と表示されました。ここによるとこれは 2023/07/31リリースのバージョンなので十分新しく、CPUもそのまま認識されました。ただ、気になったのはM.2_2に接続したWD_BLACKが認識されていない模様であることです。

画面の指示に従いF1キーを押してUEFI BIOSに入り、一旦電源切って再起動しました。こんどはWD_BLACKが認識されました。 これ以降はずっとWD_BLACKは認識されていますが、やや不安です。

起動するごとにピッとビープ音がなりますが、これは正常であることを表すものだそうです。 UEFI BIOSの設定でこのビープ音をオフにすることはできません。 スピーカーにテープを巻いてもうるさかったため、スピーカーは抜きました。

あとは、M.2_2に装着したWD_BLACKにWindows 11 Proを、M.2_1に装着したHIKSEMI FUTURE 2TBにUbuntu 22.04 LTSをインストールして無事トラブルなく動作することを完了。 Wi-FIモジュールは手動でドライバを当てる必要もなく、最初から認識してくれました。

使用しての感想

前のPCではリテールクーラーを使っていてかなりうるさかったのですが、AK400は3千円なのに静かでびっくりです。こんなことならもっと早く買っておけばよかったです。

若干期待外れだったのはアイドル時の消費電力です。更新前の自作PCではアイドル時の消費電力は40W程度でした(1ディスプレイ、Ubuntu 20.04)。しかし更新後では、アイドル時の消費電力は1ディスプレイで55W前後、2ディスプレイで60W前後という感じです(Windows 11)。 刺さっているデバイス数が増えていてOSも異なるので公平な比較ではありませんが、思っていたより消費電力が大きいです。作業してない時でもほぼ常に60W以上の電力を使用しているのはプレッシャーです。

Windows 11 PCの入手計画を立てる

仕事と私生活が忙しすぎて、現実逃避のために新しいPC、具体的にはWindows 11を入手したくなってしまい、 ここ1~2ヶ月ずっと調査をしていました。さっさと買えばいいだけの話なのですが、回り道しすぎでした…。

購入候補1. 中古ノートPCを買う

今、第8世代のインテル Coreプロセッサーを搭載した中古PCが大量に流通しています。ジャンクワールドなどを監視していると、程度にもよりますが第8世代のCore i5Core i7を積んだマシンが2 ~ 4万円程度で入手できます。

実は今実質的にメインとして使っているPCも中古で買ったDynabook R734で、CPUはCore i5-4200M。ストレージをSSDに換装しメモリを8GBに増強してはいますが、意外と使えています。

中古は気楽に扱えるという点では良いのですが、最近の世代のCPUと比べるとCPUの能力がやはり見劣りするのと、昔の機種に比べるとメモリ増設できないタイプの機種が増えているのとから、今回は購入を見送りました。

購入候補2. 新品ノートPCを買う

https://little-beans.net/を監視していると7万円前後でそこそこのスペックのノートPCが買えそうでした。例えば Ryzen 7 7730U+16GBメモリーで実質7万6668円! 楽天でHP Pavilion 15-ehが超激安【7/30まで】 – こまめブログ などです。

いざとなれば持ち出せるという点、UPS代わりのバッテリーが付属するという点でノートPCは魅力的ですが、 冷静に考えると持ち出すことはほとんどないのと、同じ額を出すならデスクトップのほうが良いスペックになることから、これも見送りました。

購入候補3. ミニPCを買う

会社で支給されているPCが大手メーカ製の超小型デスクトップなのですが、意外と問題なく使えます。 そこでミニPCも選択肢に入れていました。

最初はThinkCentre neo 50q Tiny Gen 4 /len102c0033)やIdeaCentre Mini Gen 8あたりの大手のものを考えていたのですが、調査につれ先鋭化してきて、いわゆる中華ミニPCに傾いていきました。

中華ミニPCはライセンス周りが怪しいものが多いらしい(参考)のですが、その中でもMINISFORUMはライセンスもクリアで、日本に代理店が存在し、ヨドバシカメラビックカメラなどの大手家電量販店でも取り扱いがあることから、MINISFORUMにほぼターゲットを絞りました。

その頃、ちょうどUN1265という製品が出ることを知りました(【西川和久の不定期コラム】USB PD給電でも動作する5万円台のCore i7搭載ミニPC。MINISFORUM「UN1265」 - PC Watch)。CPUはCore i7-12650H、メモリ32GB、SSD1TB、3画面同時出力、Wi-Fi 6E付属などと基本スペックが高いのに実質63,163円とかなり安く、ほぼこれを購入する寸前でした。

しかし、5chのスレを見ると、UM790Proという他機種で不具合報告を多く見つけました。 問題遭遇時に自力で解決できる自信がなかったので、今回は見送りました。

実際、後日UN1265公式のレビューを見たところプリインストールのWin11 Homeの動作がおかしいと報告があがっており、 自力で問題を解決できる人でないと使いこなすのは厳しい印象を受けました。

購入候補4. 自作PCを更新する

2017年に作成した自作PC ( 2017-02-11 Core i7 7700 + GTX 1070 なPCを自作 ) に入れていたLinuxを潰してWindows 11を入れることも考えましたが、 このPCのCPUがちょうど第7世代のインテル CoreプロセッサーのためにWindows 11のシステム要件をぎりぎり満たさず。自作PCを半分腐らせている状態でした。

これのCPUとマザーボードを入れ替えれば、これ以上PCを増やさずに、ミニPCを買うよりも安価に構成を更新できるはずです。 なので今回はこの方法を取りました。

詳細は別記事に書きますが、結局あれこれと部品を更新したくなったせいで、結果的にはミニPCを買うよりも高くついてしまいました。しかし出来栄えには満足しています。

Ubuntuでのディスク管理について調べたことのメモ

自作PCに入れているUbuntu 20.04.6 LTSのためにあれこれ調べたことのメモです。

接続されている物理デバイスに関する情報を得る

方法1: lsblkコマンド

$ lsblk

とすると、

sda      8:0    0 489.1G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/efi
└─sda2   8:2    0 488.6G  0 part /
sdb      8:16   0 465.8G  0 disk 
├─sdb1   8:17   0   512M  0 part 
└─sdb2   8:18   0 465.3G  0 part 

と表示され、sda, sdbと2つのデバイスが接続されていることがわかります。

方法2: fdiskコマンド

$ sudo fdisk -l

とすると、i以下のようにデバイスのモデル名も含めたより詳細な情報が取れます。

ディスク /dev/sda: 489.5 GiB, 525112713216 バイト, 1025610768 セクタ
Disk model: Crucial_CT525MX3
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: (略)

デバイス   開始位置   最後から     セクタ サイズ タイプ
/dev/sda1      2048    1050623    1048576   512M EFI システム
/dev/sda2   1050624 1025609727 1024559104 488.6G Linux ファイルシステム


ディスク /dev/sdb: 465.78 GiB, 500107862016 バイト, 976773168 セクタ
Disk model: Samsung SSD 860 
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: (略)

デバイス   開始位置  最後から    セクタ サイズ タイプ
/dev/sdb1      2048   1050623   1048576   512M EFI システム
/dev/sdb2   1050624 976771071 975720448 465.3G Linux ファイルシステム

方法3: gnome-disks (GUI)

$ gnome-disksGUIツールが起動し、ストレージの容量やモデル名を確認可能です。

バイスの温度取得

方法1: hddtempコマンド

hddtempというコマンドが使えます。

$ sudo apt install hddtemp
$ sudo hddtemp /dev/sda
/dev/sda: Crucial_CT525MX300SSD4: 41°C

方法2: smartctlコマンド

smartctlというコマンドを使うと温度以外の多様な情報も同時に取れます。(参考)

$ sudo apt install smartmontools
$ sudo smartctl -A /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-159-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
...略...
194 Temperature_Celsius     0x0022   060   048   000    Old_age   Always       -       40 (Min/Max 9/52)
...略...

方法3: gnome-disks (GUI)

前述の$ gnome-disks で起動するGUIツールでも温度を始めSMARTデータの閲覧が可能です。

フォーマットなど

gnome-disks (GUIツール)

$ gnome-disksGUIツールが起動します。このツールで再フォーマットなどが可能です。

物理デバイスのマウント先

接続されている物理デバイスは基本自動でマウントされる模様。前述の$ gnome-disks で該当のデバイスを選択し、「内容」の欄を見ると、「/media/アカウント名/xxx にマウント中」と表示されているはず。

WindowsでのHDD初期化に関するメモ

HDDを処分するにあたってデータ初期化の方法について調べたことをメモ。

cipherコマンド

  • 空き容量にあるファイルを復元不能にする機能が提供されている。
  • 例えばDドライブの空き容量にあるファイルを復元不能にするには、CIPHER /W:D: とする。 (参考 )
  • 参考スクリーンショットを見るに、0埋め→1埋め→乱数埋めと3回の書き込みを行うらしい。
  • 参考 によると、cipherを使っても、1000バイト程度の小さなファイルは復元できてしまうらしい。CCleanerを使うと、"MFT空きスペースの抹消(Wipe MFT Free Space)"のチェックをオンにすることで小さなファイルも復元不能にできるらしい。

CCleaner Free

  • バージョンによってGUIが微妙に変わっている様子。
  • 私のインストールした v6.15.10623 の場合は、
    • オプション → 設定 に「MFT空きスペースの抹消」という設定項目がある。
    • ツール → ドライブワイパー に、上書き回数を指定してドライブを安全削除できるツールが用意されている。

iiyamaのWQHDモニタ XUB2792QSN-B5 を買った

技術的な進捗がないので、最近買ったWQHDモニタの紹介をします。 iiyamaのXUB2792QSN-B5Amazonアフィリエイトリンク)です。

購入動機は、2010年頃に買った三菱のRDT271WLMの電源がとうとう入らなくなったことです。モニタ選定に際して考えたことは以下でした。

  • サイズは27インチ以上
    • 今のサイズより小さくなるのは辛い
  • 解像度は WQHD(2560x1440)
    • フルHDのままだと進歩がないため、高い解像度を試したかった。
  • 曲面ディスプレイは避ける
  • 入力切替ボタンが独立していると良い
    • 頻繁にPCを切り替える必要があるため
  • ゲーミング機能は重視しない
    • 応答速度が重要なタイプのゲームはしないため

27インチのWQHDモニタは廉価なものでは2万円前後からありました。デルの27インチWQHDディスプレイが2万0860円というセールがありましたが、買い逃してしまいました。もしもっと早く気付けていればこれを買っていたと思います。

他の某メーカーのものも画質は良さそうなのですが、よくよくレビューを見てみると、電源アダプタが壊れたという報告やモニタアームが華奢といった報告があり、食指が動きませんでした。

結局、モニタは長く使うものであるのでしっかりしたものを買おうと思い直しました。特に、最初は気にしていなかった入力端子について検討し、PC側に給電も可能なタイプのUSB Type-C端子のついたものから選ぶことにしました。このようなモニタであれば、ノートPCとディスプレイの間のケーブルが一本になりデスクがすっきりするはずです。現時点でそのようなPCを持っていないのですが、将来への投資ということです。

そのような条件を加えた上で安価だったのが冒頭に述べた iiyamaのXUB2792QSN-B5 でした。公式サイトはこちらです。

このモニタは前述した給電機能のあるUSB Type-Cを備えています。また、やや珍しいことにLANの口も備えているので、USB Type-Cのケーブルを通じて有線LAN接続もできるようです(多分)。

また、台座がしっかりしていて簡単には倒れなさそう。角度・高さの調整が容易なところや、90度回転できるのも好印象でした。ただし、代償として重さ6.8kgとかなり重めでしたが。

まだ使って一日ですが、いまのところ満足して使えています。古いノートPC ( Dynabook R734) とHDMIで接続していて、WQHD(2560x1440)で74.924Hz出ているようです。

JPEGのEXIFに記録された撮影日時でファイル作成日時を更新するサンプルPythonスクリプト

Windowsにて表題のことをするPythonスクリプトを以下に示します。 os.utime()だとファイルの更新日時、アクセス日時を更新することはできるのですが、 ファイルの作成日時は変更できないところで少し調査が必要でした。

【Python】ファイルとフォルダのタイムスタンプを変更するコード例【作成日時・更新日時・アクセス日時を変更する】 | シラベルノートを参考に、win32-setctimeというパッケージを利用することで ファイルの作成日時を変更できました。

"""
./origディレクトリにあるJPEGファイルについて、
- EXIFから撮影日時を取得し、
- ファイルの作成日時をその撮影日時に変更して、
- ./changedディレクトリに保存

Windows + Python 3.8で動作確認。

参考:
    - https://note.com/kamakiriphysics/n/n8028b4f46922
    - https://srbrnote.work/archives/4054
"""
import datetime
import os
from pathlib import Path
import shutil
import time

from PIL import Image
from PIL.ExifTags import TAGS
import win32_setctime  # pip install win32-setctimeが必要


def main():
    # 元のJPG画像を格納するディレクトリ
    src_dir = Path('orig')
    # 作成日時を変更したJPG画像を格納するディレクトリ
    dst_dir = Path('changed')

    dst_dir.mkdir(exist_ok=True, parents=True)

    for src_img_path in src_dir.glob('*.jpg'):
        src_img = Image.open(src_img_path)
        exif = src_img._getexif()

        # # 取得可能な情報を確認(デバッグ用)
        # for k, v in exif.items():
        #     print(k, TAGS.get(k), v)

        # 写真の撮影日時(DateTimeOriginal)を取得 (e.g. "2023:06:23 09:45:24")
        date = exif[36867]

        # src_imgをdst_dirにコピー
        dst_img_path = dst_dir / src_img_path.name
        shutil.copy2(src_img_path, dst_img_path)

        # 作成日時、更新日時、アクセス日時を決める
        YYYYmmdd, HHMMSS = date.split(' ')
        YYYY, mm, dd = [int(x) for x in YYYYmmdd.split(':')]
        HH, MM, SS = [int(x) for x in HHMMSS.split(':')]
        ctime = mtime = atime \
            = datetime.datetime(YYYY, mm, dd, HH, MM, SS).timestamp()

        # 作成日時、更新日時、アクセス日時を変更
        win32_setctime.setctime(dst_img_path, ctime)
        os.utime(dst_img_path, (atime, mtime))

    print("finished")


if __name__ == '__main__':
    main()

Google Code Jamのアーカイブサイトまとめ

Google主催の競技プログラミングコンテストであるGoogle Code Jamがついに2023年にcloseしてしまいます。

https://codingcompetitions.withgoogle.com/codejam/faq によると、2023-06-01でサインインが不可になり、2023-07-01にはサイト自体がシャットダウンするそうです。サイトがcloseされたあともGoogle Code Jamのことを振り返られるように、Google Code Jamのアーカイブサイトに関する情報をまとめます。

ジャッジ機能のあるサイトは残念ながら見つけられませんでした。