なぜドキュメントを書くのか

なぜ書くのか

記憶は当てにならない

人間は忘れるし、記憶改変が起こるし、病気になったり、トラックにひかれたりする。トラックに引かれなくても、部署変更や転職によって知っている人がいなくなることが往々にして発生する。文章によって残してことによって、忘れたり記憶が改竄されたり伝わることはなくなる。 昔からある機能や成り立ちがわからなくなる。わからなくなったことによって、間違った方向に進んでしまったり、同じ失敗を何度も繰り返す。失敗したことややらないと決めたことを書くことで失敗を繰り返さないようにできる。

ドキュメントを書かないのがアジャイルではない

agilemanifesto.org アジャイルソフトウェア開発宣言では、「包括的なドキュメントよりも動くソフトウェアを」とありますが、ドキュメントを書かないのがアジャイルではない。アジャイルだからドキュメントを書かなくてもいいとは書いていない。ドキュメントもインクリメントに含まれる。

いつ書くのか

知らないことを聞いたとき

初めて聞いたことをドキュメント化していくことで、同じように知らない人がいたときに説明しやすくなる。

知っていることを聞かれたとき

自分が知っていることが、必ずしも他の人が知っているとは限らない。業務上で必要な知識であればリンクを貼っておくだけでもいいので、ドキュメントとして残してあると検索できり経緯がわかる。

ボードゲームを1日2手で1年ほどやっている話

人と何かをしている精神衛生上にいい。

前からボードゲームはしていた

 ボードゲーム歴は、就職してからなので10年くらいある。ゲーム専用機の若干の衰退と、スマフォゲームが流行り始めた頃だった。その頃に出会った友人がボドゲをしていたので始めて、電子ゲームとは違う魅力があって好きになった。会ってその場で行われるリアルな体験が心地よかったのだと思う。  10年くらい、少なくとも月に一度程度は集まってボドゲするようになっていた。

コロナ

 コロナ禍となり、なかなか集まり辛くなった。月に一度程度集まり毎月のようにボードゲームで遊んでいた友達は、大抵はIT系に勤めていたためリモートでボードゲームをすることは自然な流れだった。BoardGameArena でやることになった。BoardGameArenaは前から知っていたはいたが、コンピュータでゲームをするならコンピュータのゲームをしたいと思っていた。どうしても特定のボードゲームをしたいときや、買う前の調査にやるようなものだった。  コロナになり状況は一変した。集まることが憚られるようになった。しばらくのうちは、月に一回音声チャットを繋ぎながらボードゲームを楽しんでいたが、だんだん常にボードゲームをし続けるようになった。常になんらかのボードゲームをして少なくとも朝起きて一手、寝る前に一手進めるようになった。ログインボーナスをもらうように、一手進めている。実際には一日4,5手ほど進めるので1つのゲームが終わるまでに4〜7日程度で終わる。1週間もゲームの内容を覚えてられないと思うかもしれないが、私も覚えていない。常に現在の盤面から次の手を考えているので、ほとんどの場合は覚えている必要はない。  複数人で常に何かをしているというのは楽しい。

ターン制ボードゲームをしよう

1日に2手くらいで朝起きて一手、夜寝る前に一手やろう

Swiftのマクロのorが動かなくてつまづいた

何でかわからないが、 Preprocessor Macros にADHOC=1 やRELEASE=1を追加しても以下のコードが2が出力されてしまった。

#if DEBUG || ADHOC || RELEASE
let i = 1
#else
let i = 2
#end
print(i) // -> 2

DEBUG=1 を入れておくと1になり、or演算子 を続けると無視されます。つまり、分かっていることとしては、or演算子が間違っているということ。 この考えは間違っていた。

解決策

preprocessor macros に定義するという考えが間違っていて、 Active Compilation Conditions に値を定義すべきであった。DEBUGは初めから定義されているため、DEBUGの場合のみ動いているだけだった。

余談

メインのコード内でのマクロによる分岐をやめて、定数として定義して処理を分岐させた方が完結にコードがかけることに気がついた。

enum Configuration {
    case adHoc, debug, release
}

#if ADHOC
let configuration = .adHoc
#elseif DEBUG
let configuration = .debug
#elseif RELEASE
let configuration = .release
#endif

let i = configuration != .release ? 1 : 2
print(i)

実行時間が長くなるもののコード全体としては、マクロによる影響が完結になったと思う。

まとめ

  • Preprocessor Macros に定義してもマクロで使えない
  • Active Compilation Conditions に定義するとマクロで使える
  • マクロの影響範囲を小さくした方が完結な書き方ができてむしろ良かった

クレジットカードは見た目で選んでもいい!

「クレジットカードってWebサイトで買い物する時とか、現金持たなくていいとか、便利な側面はいっぱいあるけど結局どれがいいの?」と思う。大きく分けて、3つある。還元率、優待、見た目だ。

還元率に関しては、このブログを読むよりは、ググった方が良い。一般的に言えることは、1%あれば十分高いということと、よく使っているお店やサイトがあるならそこが推しているものは還元率高め目のことが多い。

優待は、還元率に隠れがちだがこちらの方が割引率が高かったりする。しかし、入ってみるまでよくわからないことが多い。自分の持っているクレジットカードの優待は一度見ておいた方が良い。

持ってて楽しいカードを使った方がいい

還元率は大抵、1%が1.5%になったとか2%になったことで差別化をしている。毎月1万円も使っていない人からしたら、かなり気をつけて100円変わるかわからないかの差しかない。100円だと飲み物が買えないくらいの金額しかならない。その小さな徳によりもクレジットカードを使うたびに楽しくなる自分が選んで最高にカッコいいやカワイイと思って人に自慢したくなる見た目を選んで持っていた方が、楽しく暮らせる。

おすすめのカード

Likeme

www.saisoncard.co.jp 自分の所属している会社なので贔屓して最初に持ってきている。 見た目がいいし、面倒なポイントでなく1%のキャッシュバックであるところも良い。今の弊社の推しカード。

エポスのコラボレーションカード

www.eposcard.co.jp エポスはサブカル系の見た目を多く出している。

三井住友

https://www.smbc.co.jp/kojin/credit/ シンプルな見た目のカード

ラグジュアリカードの金属カード

https://myluxurycard.co.jp/apply/bk_1902_a/ プラスチックとは明らかに異なる質感と高級感 入会費がバカたかい。

あとは自分で探しましょう

https://kakaku.com/card/ranking/ 価格.comあたりが、フィルタリングもできるし見た目で探すのに便利です。

化石燃料で地球を温める

地下から石油や石炭、ウランなどを掘り出してエネルギーを得ている。最終的に光や電波に科学変化に使われるものもあるが、全て空気を温めるためだけに使われた場合の気温上昇を計算してみた。

資料

計算

原油2トン/人 x 70億人 x 1.176L/kg x 38.26MJ / (5.3×1018 kg x 1006kg/J ℃)

2 * 103 x 7109 x 1.176 x 3.826107 / (5.31018 x 1.006103) = 0.118142℃

年間0.118℃

実際の上昇量

地球温暖化の現状と原因、環境への影響|COOL CHOICE 未来のために、いま選ぼう。

年間 0.0265℃

現実的に空気にのみエネルギーを使っていないので気温上昇量が実際の4.4倍の計算結果になった。

所感

「単に地下からエネルギーを掘り出して使っていること自体が問題で地球温暖化ガスは補助的にしか働いてないのでは?」と考えた。 地下から掘り出されたエネルギーは、地上で使われる。使われたエネルギーは、エネルギー保存の法則によって、熱か光や電波で地球外に飛んでいくか吸熱反応になっていると考えた。全てが気温上昇に温めることに使われたときに気温上昇を調べることで想定以上に上昇することが言うことが分かった。 実際には、空気を温められることだけには使われていないのでまじめに計算した結果が知りたい。

私は化石燃料を使いまくっても生活水準を落としたくはない。

時間という概念が好きだという話

たまに祝日や時間のライブラリをメンテナンスしたりしている。同僚に「なんでそんなモチベーションが出るのか?」と聞かれて「時間が好きだから」としか答えられなかった。なんというか好きなこと説明することは、根本的に難しいものがあるがやるだけやってみようと思う。

ブラックホールが好き

時間の話をするためには欠かせないが、なんかロマンがあるじゃん。よく分からない感じが良い。光が脱出できないなんてよく分からない存在が現実にあるのがすごく良い。

相対性理論が好き

完全に理解している訳ではないが、高速で移動すると時間がゆっくりになるってやばくないですか?ブラックホールの近くでぐるぐる回ってれば若さ保てるじゃん。

ブラックホールを回らなくても地球を高速で回っている人工衛星は僅かながら相対性理論の影響を受けて、時間がゆっくりになっている。そのため、GPSにはその補正が行なって計算が行われている。意外と身近にある相対性理論

1秒

じゃあ1秒ってなんなの?ってなる。時間は重力や速さの影響を受ける。地上と人工衛星で時間が違う。なんなら、地上とスカイツリーでも差が出る。1秒の定義はありますが、地球は自転してるし、公転もしてるし、太陽は天の川銀河の周りを回ってるし、天の川銀河も移動してるしで地球上での1秒はまぁなんとなく共通認識があるよねくらいの話でしかなくなる。普通に生活する分には全然関係ない。でもなんか気になる。気になってきましたよね?

人間の時間扱い

1日

概ね、太陽の運行によって決まっている。つまり、太陽が一周したら一日としている。一日の始まりは国によってまちまちだった。太陽がもっとも高く上ったのが1日の真ん中だったり、日が沈んだら一日の終わりとだったりする。現在は、大体同じように深夜0時が一日の始まりとして扱われている。良い世界。

タイムゾーン

それぞれの国で昼の12時で太陽が登っててくれないと、普通に生活する分では割と困ってしまうので時差を設定している。飛行機で飛び回っている人にとっては1日が伸びたり縮んだり無くなったりする。太陽が南中に来るタイミングを昼の12時にする国が多いが、わざとずらしているところもある(ヨーロッパ圏)。国が広い場合は分割する必要があるが、細かく分割しているところ(アメリカ)や大きくても一つのことろ(中国)がある。地球が丸さを感じる。

今この瞬間は世界中で同時に存在しているが、今を表す時刻は異なっている。プログラミング的には5月20日21時22分34秒は日本時間の話かサーバーが置いてあるところの話かわからなくなるので、タイムゾーンも含めて保存して置いた方がいい。高速化は知りません。

サマータイム

タイムゾーンを年に2回も変える制度。昼の時間を有効活用したいらしいけど、体内時計が壊れるので最近はなくなる方向らしい。一日が25時間になったり、前の日に巻き戻ったりするため、プログラミング的には嫌いな人が多い制度。私もいい制度だと思わないので、滅びてほしい。

カレンダー

世の中には、いろんなカレンダーがある。本当にいっぱいあるので、書いていたら一冊くらいになるのでやめておきます。西暦や旧暦は知っていると思う。日本では太陽の運行を基準した太陽暦を使って、季節がいい感じになっている。月の運行を基準にした太陰暦は1ヶ月を数えるのには便利だが1年が355日しかないかったりする。グレゴリアン歴も1年の初めの決め方と各月の日数が道理的な理由じゃない。もっとましなカレンダーが使われてほしいと願っている。

西暦だと2021年ですが、和暦だと令和3年。他の国にも暦があってカレンダーと連動して色々あります。和暦は改元するので世界の暦の中でもカオスな方。日本固有の暦を使うなら神武天皇即位紀元を使った方がみんな幸せになれると思う。

そんな感じで時間って色々あるんですよ

考えたらキリがないくらいには時間の話は色々あるので、結構楽しい。