ソラリス

今の自分自身と全く同じ分子構成を再現できたとすると、それは誰なんだろう。関係ないけどからくりサーカスや彼方のアストラを読んだ時もその辺りが気になってしょうがなかった。

古いSFの現在より圧倒的に進んだテクノロジーと、現在の方が圧倒的に進んでしまっているような古いテクノロジーが融合している世界を読むのがなんか好き。インターネットの情報革命は当時は想像もできない世界だったんだなぁ。

地球幼年期の終わり

2001年宇宙の旅で有名な、アーサー・C・クラークのSF小説。アーサー・C・クラークが2001年宇宙の旅の脚本を書いてた人だと解説を読んで気づいたのだけど。

ガンダムのニュータイプくらいの感じかと思って読んでたら人類補完計画だった。エヴァンゲリオンと2001年宇宙の旅はもう一度観よう。

三体でも似たような話があったのだけど、人類の目の前に本当に神が降臨してしまったら宗教はどのように変わるんだろう、という興味がある。

RailsでNOT NULL制約をマイグレーションでつける

Railsで、NOT NULL制約がついてないカラムに後からマイグレーションでNOT NULL制約をつける時のやり方。

migrateファイルで、change_column_nullを使う。DEFAULTも設定する場合はさらにchange_column_defaultも行う必要がある。

class ExampleMigration < ActiveRecord::Migration[6.0]
  def change
    change_column_null :table, :column, false, true
    change_column_default :table, :column, from: nil, to: true
  end
end

change_column を使うと PG::NotNullViolation: ERROR: column "column" contains null values の様に、すでにレコードが作成されていた場合はエラーになってしまう。change_column_nullを使うとNULLのカラムをデフォルト値(4パラ目)でUPDATEしてからNOT NULL制約をつけてくれる。