2023年1月22日日曜日

いいコードとはなにか考える

いいコードとはなにか考える

つらつらと思っていることを書き連ねてみます

まとめ

  • シンプルイズベスト
  • コードがいいかわるいかよりもコードを深く理解しているかが重要
  • バグがなければ何でもいいんじゃないか

メンテナンス性について

  • いいコードはメンテナンスのしやすいコードなのか
  • メンテナンスしやすいコードは気軽に変更できる、変更しても影響が小さいなどがあると思う
  • でも結局はコードをしっかり理解しているかどうかな気がする
  • コードを理解していないと気軽に変更も影響範囲もわからないので
  • あとはテスト周りがしっかりしているか、ユニットテストのカバレッジやe2eテストがあるか、CDできる環境があるかも重要
  • 毎回手動でテストするのは辛いし、そうなっているとリファクタリングする気も起きなくなる
  • 今はいいコードだと思って書いても結局1, 2年後見たとときに理解できなかったダメなのでは
  • 何も気にせずファイル1つで全部そこに上から順番に処理するようなスクリプトならどうだろうか

手法について

  • 世の中にはコーディングに関するいろいろな手法や書籍がある
  • いろいろあるがいろいろありすぎて困る
  • 個人的には一番意識するべきは結局シンプルイズベストだと思う
  • いかにシンプルに無駄なことをしていないか=いいコードなのかも
  • コードをシンプルに書くとは簡単に言えば一番上から順番に実行されていくコード
  • いきなりどっかに飛んだり暗黙的なハンドラが呼び出されたりしない
  • あるゴールがあるときにいろいろな書き方があるがその中から最適を選択できるかどうか
  • 選択できるかどうかは経験則だと思う
  • いきなり良いコードは書けないから徐々に良いコードにしていけばいいと思う
  • それをできるかどうかも結局はコードをしっかりと理解しているかが重要だと思う

可読性について

  • いいコードは読みやすいコードなのか
  • メンテナンスしやすいコード=読みやすいコードと言えるのだろうか
  • 結局コードを知るためにはある程度学習しないとダメだとは思う
  • いいコードだと学習時間が短いとは限らない
  • コード把握までの時間を短くするにはドキュメントとトライアンドエラーさせることだと思う
  • いいコードはしっかり抽象化できるている、重複がないというのがよくあるケースだと思うが個人的には抽象化されてすぎていても良くないと思う
  • その心はコードがいろいろなところに分散しすぎていて追いづらいというのがある
  • 可読性を高める最強の要素は「コメント」と「ドキュメント」なのかもしれない
  • チームが日本人なら無理に英語にしないで積極的に日本語を使っていいと思う、コミットメッセージとかIssueとか

バグとの関連について

  • いいコードはバグのないコードなのか
  • 個人的にはこれはイコールではないと思う
  • わるいコードでも全然バグを踏まないコードもあると思っている
  • むしろレガシーコードのほうが安定しているケースもあると思う、いいとは思わないが
  • いいコードにしようと思ってバグを埋め込んではいけない
  • がバグをおそれてリファクタリングしないのもダメだと思う、難しい
  • 結局バグを生み出さないこと品質を担保することが大目的なのであればレガシーコードを運用し続けるのも手だと思う
  • ただ将来の技術的負債になることは間違いない
  • レガシーコードにバグがいきなり発生して誰も直せないパターンとかはあるある
  • レガシーコードを書き換えてモダンコードにするよりかは式年遷宮で全部書き換えるのがいいと思う
  • 当然インタフェースは変えないようにしなければいけないが
  • v2移行などで多少のインタフェース変更が出てしまうことはよくあるのでその場合はドキュメントやコミュニケーションでカバーするしかない

そもそも悪いコードとはなにか

  • 相対する言葉の悪いコードとはなにか
  • アンチパターン的なことなのだろうか
  • 悪いコードを書かないようにすれば自然といいこーどになるのかもしれない
  • そのコードが悪いと客観的に感じることができるかも重要
  • なかなかそれは経験がないと難しいかもしれない

チームビルディングについて

  • いいコードは人によって異なると思っている
  • なのでチームで一つのコードを開発すると個人の思想や経験がコードに反映されてしまうことがある
  • そういうときのために設計思想や開発手法やデザインパターンやフレームワークみたいなものがあるんだと思う
  • がそれでも多少のブレはある
  • 基本はチーム内でコーディング規約などを決める感じにはなる
  • いいコードを書くためにはある程度の経験が必要だと思っている
  • なので経験のある人の思想がチーム内のコーディング規約に大きな影響を与えてしまう可能性がある
  • チームがそれを合意できるのであれば問題ないが押し付けるのはよくないと思う
  • すでに安定しているコードに対してわざわざそれを適用するのかという判断も重要
  • 将来大きな技術的負債になるのであればやるくらいでいいと思う
  • 全員が全員同じレベルのコーダになるのは本当に難しい

テストについて

  • テストもいいコードとして書く必要があるか
  • テストも抽象化やリファクタリングをし続けたほうがいいのか
  • そこまでのコストが割けるか、売上には直結しない
  • プロダクトの品質には影響するかもしれない
  • テストの目的はカバレッジを100%にすることではなく開発者の精神安定
  • テストがしっかり書けている -> 積極的に安心して書き換えできるという意識が重要
  • ただ個人的に思うのはテストはおまけでしかないので面倒だということ
  • その面倒な作業を誰かがやらなければならないということ
  • 分担すればいいというのもあるがそうするとテストコードの書き方がバラバラになりテストの保守性が下がってしまったりする
  • 個人的にはテストコードを書くのは嫌いである

コンテキストによっても違う

  • ちょろっとスクリプトを書くときには
  • Webアプリケーションやスマホアプリのときには
  • 一時的にしか使わない場合
  • 将来的に継続的に使う場合
  • どんなときでもクラスベースなコーディングが必要なのか

番外編: AIにがんばってもらう

  • copilot のような自動生成にがんばってもらう
  • AI が書くほうがいいコードなはず
  • AIではないがコードジェネレータを作成するのもいいと思う

問題: どっちがいいコードなのだろうか

A

puts "hello"

B

require 'logger'

class Message

  @@logger = Logger.new(STDOUT)

  def initialize(title)
    @title = title
  end

  def say()
    @@logger.info @title
  end
end

Message.new("hello").say
  • 用途にもよる?
  • 将来どうメンテナンスしていくか?
  • 経験のあるなしに影響する?

2023年1月14日土曜日

ヴァンパイアサバイバーiOS版プレイメモ

ヴァンパイアサバイバーiOS版プレイメモ

環境

  • iOS 版バンパイアサバイバー 1.2.119
  • 無料

プレイ時間

たぶん 40 時間くらい

操作について

  • 画面を上下左右に動かすことでキャラクターを動かす
  • ストップボタンが右上にあるので押しづらい
  • ランドスケープでもポートレートでもプレイ可能
  • 画面が小さい端末だとステージの最後のラッシュとかは見えないかも

ゲームについて

クリア

  • 一応各ステージクリアはあるがそれよりもレリックや装備開放、仲間開放などがクリア要素は強そう
    • ゲームトップにあるアンロック、コレクション、シークレット一覧を全部アンロックできればクリアでもいいかも
    • シークレットキャラの出現方法は正直攻略サイトを見ないとわからない
    • スマホ版の場合 exdash と toastie と smith iv はシークレットの一覧画面から矢印で呪文入力になるのでそこで呪文を入れて開放する
  • ステージ5とユーダイモニアMにはそれっぽいボスがいる
    • ユーダイモニアMのクリア後に極大聖年が手に入るがコレクションにない場合は一回ステージでレベル上げをして武器として取得すればコレクションに入る
  • 30秒後の最後の悪魔は倒すことができる、倒すとたまご5つと最後に白黒の悪魔が出てきて倒される
    • 倒すとレッドデスというキャラが使えるようになる
  • シグマが強すぎる
    • コレクションコンプリートで使えるようになる

ボスラッシュ難しすぎ

  • 敵の強さはこちらのレベルで変わるのでゲームキラーのアルカナを使うことで敵を弱くして簡単にクリアすることもできる

武器について

序盤はニンニク

ほぼワンパンで倒せるので経験値稼ぎが楽

強いと思った武器

基本進化すれば全部強い
特に序盤から強いと思ったのは

  • 時止めナイフ (進化しなくても鬼強)
  • 鳥 (進化が面倒)
  • 二丁拳銃 (進化が面倒)
  • ナイフ (連射が楽しい)
  • 魔法杖 (学術書が強い)

好きな武器

  • 時止めナイフ

よく使う組み合わせ

序盤、ステージクリア目的

  • キャラ武器
  • 時止めナイフ
  • 魔法杖
  • 雷の指輪
  • 月桂樹
  • ナイフ or 斧 or 炎の杖

終盤、最強セット

  • 勝利の剣
  • ナイフ (子手)
  • 魔法杖 (学術書)
  • 雷の指輪 (複写)
  • 炎の杖 (ほうれんそう)
  • ミススペルの炎 (トローナ)

あと人枠は翼とか骸骨とか

あまり使わない武器

  • 五芒星
  • ドリル

キャラについて

  • 足の速いキャラは強い
    • 序盤だとクロチ
  • シークレットキャラも強い

金策

  • いろいろやり方はあるらしいけどシグマでムーンゴロウをハイパー+反転で適当にやるのが一番楽
  • アルカナで黄金色のディスコを選択する
  • 仮面とか骸骨あたりをいい感じにレベル上げしていく

唯一開放できなかったシークレット

  • 「前に所有されたいた棺桶の下を見る」がどうしてもアンロックすることができなかった
  • 2回目の棺桶がどのステージにも出現しなくてどうしようもなくなった
  • 全キャラを必ず一回プレイするとかコレクションを全部開放するとかキャラ強化を全部行うとかやったけどダメだった
  • 何か他に条件があるのだろうか

敵キャラについて

なぜか 105 番のラスボスだけはユーダイモニアMを2回クリアしないと一覧に載らなかった

最後に

一回 15分 or 30 分のプレイなので複数回プレイするだけであっという間に時間がなくなる

2022年12月19日月曜日

2022 できたこと・できなかったこと

2022 できたこと・できなかったこと

去年に引き続き今年もやりました

できたこと

時系列

6, 9,12 月に何もしてないがそれ以外は何かしらアウトプットができたのがよかった
今年はおもいきいった断捨離ができたのがよかった
使っていなかったものはもちろん自分で管理しているアプリも一部手放した、メンテナンスがなくなり楽になった
(なお、iOS 版はそのうち復活させるかもしれません、需要があれば)

資格はこれで 12個になった

新しい技術への挑戦はあったがやや少ない印象
また技術以外への新しいことや趣味への挑戦がなかったのが残念
今後は「捨てる、手放す」ことが多くなりそう

その他

  • ブログ執筆数: 216 (12/19 時点)
  • Podcast エピソード数: 5

ブログもPodcastも前年比だと30-50%ほど下がっている
家事と育児で時間が取れずモチベーションも上がらなかったのが言い訳

断捨離に関しては去年よりもいろいろとできたのがよかった
引き続きやっていきたい

できなかったこと

  • Youtube Live (去年に引き続き)
  • 新規アプリ開発 (去年に引き続き)

もうこれらは永遠にやらないかもしれない
戒めのために書いておく

来年の豊富

  • 新しい趣味の開拓
  • 引き続き断捨離 and アウトプット

今年はアウトプットが全体的に少なめだったので来年は多くしたい
ただ持つものや管理するものを増やしてしまうと断捨離した意味がないのでキャパはこれ以上増やさすぎに捨ててから新しいものを取り入れるようにする

資格は来年も取得予定

全体的に保守的になったなーと思う一年だった

2022年11月24日木曜日

リカちゃんボサボサヘアー直し方メモ

リカちゃんボサボサヘアー直し方メモ

流れ

  1. お湯でリンスを髪にまんべんなくなじませる
  2. ラップで包む
  3. 一晩放置
  4. お湯で洗い流す
  5. くしで髪をほぐす
  6. ムダ毛をカットする
  7. 軽くリンス拭きして仕上げ

でだいたい対応できるはず
乾かしすぎるとまたカピカピになるので軽く乾かす
くしでほぐすと無駄な髪が大量に出る場合は余分な部分をカットする

これでもダメならシリコンスプレーだけど子供が使う場合はやめたほうがいい

この方法でサラサラにはなるけどストレートヘアにはならないので注意

2022年11月16日水曜日

Windowsのリソース保護により破損したファイルが見つかりましたがそれらの一部は修復できませんでしたの対処方法

Windowsのリソース保護により破損したファイルが見つかりましたがそれらの一部は修復できませんでしたの対処方法

概要

WindowsUpdate で KB5019959 を適用しようとしたところエラーになり sfc /scannow でチェックしたところタイトルのエラーになりました

破損ファイルがあると WindowsUpdate が永遠にコケるようなので修正方法を紹介します

環境

  • Windows10 21H2

先にポイント

  • Windowsメディア作成ツールから生成した ISO フィアルだと install.wim が含まれていないので直接 ISO をダウンロードする必要がる

ブラウザのユーザエージェント変更

Chromeの場合は以下の通りです

  • F12 -> device toolbar -> iPhoneXR

でその画面でダウンロード作業を進めます

ISO ファイルのダウンロード

https://www.microsoft.com/ja-jp/software-download/windows10 にアクセスしてダウンロードします
ユーザエージェントを変更したタブでアクセスしましょう

あとはプラットフォームや言語を選択してダウンロードします
執筆当時だと「Win10_22H2_Japanese_x64.iso」というファイルがダウンロードできました

ISO ファイルのマウント

Windows10 には ISO ファイルをデフォルトでマウントできる機能があるのでドライブとしてマウントします

  • 右クリック -> 開く -> エクスプローラー

これで D ドライブなどにマウントされれば OK です

Powershell を管理者実行

スタートメニューなどから右クリックで管理者実行しましょう

修復

以下のコマンドを順次実行します
先程も触れましたが D ドライブにマウントしている想定です

  • DISM /Online /Cleanup-Image /StartComponentCleanup
  • DISM /Online /Cleanup-Image /AnalyzeComponentStore
  • DISM /Online /Cleanup-Image /RestoreHealth /source:WIM:D:\sources\install.wim:1 /LimitAccess

D:\sources\install.wim のパスは大文字小文字を区別するので間違えずに記載しましょう

以下のようになれば成功です

PS C:\Windows\system32> DISM /Online /Cleanup-Image /RestoreHealth /source:WIM:D:\sources\install.wim:1 /LimitAccess

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.844

イメージのバージョン: 10.0.19044.2130

[==========================100.0%==========================] 復元操作は正常に完了しました。
操作は正常に完了しました。

動作確認

再度 sfc を実行しましょう
しっかり破損ファイルが修復されていれば OK です

システム スキャンを開始しています。これにはしばらく時間がかかります。

システム スキャンの検証フェーズを開始しています。
検証 100% が完了しました。

Windows リソース保護により、破損したファイルが見つかりましたが、それらは正常に修復されました。
オンライン修復の場合、詳細は次の場所にある CBS ログ ファイルに含まれています
windir\ Logs\CBS\CBS.log (たとえば C:\Windows\Logs\CBS\CBS.log)。オフライン修復の場合、
詳細は /OFFLOGFILE フラグによって指定したログ ファイルに含まれています。

また再度 WindowsUpdate を実行して KB5019959 が適用できることも確認しましょう

最後に

おそらく KB5019959 以外でも発生する可能性があります
破損ファイルが発生してかつ DISM /Online /Cleanup-Image /RestoreHealth で修復できない場合は source オプションと ISO ファイルを使った修復方法を試してみてください

2022年10月26日水曜日

アイリスオーヤマドラム式洗濯機メンテナンス方法メモ

アイリスオーヤマドラム式洗濯機メンテナンス方法メモ

乾燥機能が低下しないためにメンテナンスする方法を紹介します

機種

HDK832A

使い方

  • 洗濯回数は一日1回から2回実施
  • 洗濯のたびに乾燥も行う
  • 主な洗濯物は大人子ども用衣類の他タオルが多い

掃除に使用する工具

コジット 毛づまりごっそりパイプ職人スリム
同じような商品が結構ありますが安くて形を自由に変えられるのでおすすめです

毎回掃除する箇所

乾燥フィルタ2つ

乾燥ファイルと内部フィルタは毎回掃除しましょう
公式だと内部フィルタは毎回やる感じではないのですがやったほうがいいです

フィルタ設置場所

雑巾などでほこりを拭きましょう
また水滴や水がたまる箇所もあるので乾拭きで水気をとってあげます

乾燥機能が低下し始めるとここに水がたまるようになります

ゴムパッキン

ほこりがたまりやすいので毎回掃除します
ここの掃除を怠るとドラム内部から水がうまく排水できず、水が溜まった状態で乾燥が始まってしまうため乾燥機能が低下することがあります

ゴムパッキン隙間

隙間は2箇所あるのでそれぞれ掃除します
広い方の隙間はパイプ職人や雑巾でほこりを取ります
狭い方の隙間はパイプ職人の小さい方で掃除します
その際に排水の隙間があるのでここに誇りがたまらないように掃除しましょう

ドラム背面

ここは雑巾で拭くだけで OK です
下部分にもほこりがたまりやすいので注意しましょう

1週間に1回掃除する箇所

フィルタの目詰まり

わかりづらいのですがフィルタ表面のほこりは取れていてもフィルタは目詰まりしていることがあります
光に透かして奥が見えない感じになっていると目詰まりしています

結構これがポイントでここの目詰まりが発生すると乾燥機能がガクっと落ちることがあるようです

一応公式の説明書にも水洗いしてねとは書いてるのですが目詰まりしているかどうかの判断がなかなか難しいので1週間に1回くらいやっておくといいかなと思います

目詰まりは水洗いして歯ブラシなどで軽くこするとほこりが浮いてきます

糸くずフィルタ

だいたい1週間に1回やればいいかなと思います
面倒でなければ毎日やってもいいですがほぼほこりがないことが多いです

排気口内部

これが一番大変で重要な気がします
パイプ職人を奥に突っ込んで掻き出します
見えないので感覚でやるしかありません

おそらくですがここにほこりがたまりやすく蓄積する傾向にありほこりが除去できないことで著しい乾燥機能の低下につながっている気がします

アイリスオーヤマ以外のドラム式洗濯機だと解体して直接排気口の掃除方法を紹介している動画などがありますが自分はやりかたがわからないのでやっていません

できるのであれば解体して直接排気口を掃除するのがいいかなと思います

1ヶ月に1回掃除する箇所

洗濯槽クリーン

コースは洗濯乾燥コースでやるのがいいかなと思います
また洗濯槽クリーン後は糸くずフィルタにほこりがたまるので糸くずフィルタも掃除しましょう

半年に1回掃除する箇所

排水溝

中にコップのようなものがあるのでそれを洗いましょう
排水性が落ちると排水ホースに水が残ってしまいそのせいで乾燥機能の低下になることもあります

最後に

ドラム式は便利だけどメンテナンスがかなり大変です

2022年7月16日土曜日

ドラム式洗濯機デビュー

ドラム式洗濯機デビュー

洗濯機がぶっ壊れたので新しいのを購入しました
せっかくなのでドラム式洗濯機にしてみました

購入した商品

総費用

  • 本体・・・99,800円
  • かさ上げ台・・・6,500円
  • 設置/回収代・・・1,760円
  • 旧品リサイクル台・・・2,530円

合計 110,590円

なおポイントがあとで10,000ほど持ってきます

タイムスケジュール

  • 7/12 購入
  • 7/14 初回設置予定日 (設置できず後述)
  • 7/16 設置完了
  • 7/16 旧品の回収完了

配送/設置

業者が来てやってくれました
事前に自宅の通路や階段の幅が製品を通るかの確認はしておきましょう

また貴重品や細かい道具や家具の移動は自分でやりました

結構でかい

キャスター付きの足場だと設置してくれない

今回ヤマトさんが来てくれたのですがヤマトさんの場合キャスター付きの足場には洗濯機は乗せてくれませんでした
なんでも台が揺れてホースが外れたり切れたりしやすくなるようです
なので仕方ないのでかさ上げ台を別途購入しました

ちなみにこれは近くのホームセンターで6,500円くらいで購入しました
高い

さらにその日には設置してくれなく再配達となりさらに2日ほど設置が遅れました

ちなみにこのかさ上げ台裏面が両面テープになっているのですが使いませんでした
どうやら年月が立つと床と接着して外れなくなり床の板が剥がれる可能性があるそうです
またテープを剥がさなくてもしっかり固定されているので大丈夫とのことでした

上記について追記

キャスター付きのかさ上げ台について問い合わせてみたところ以下の回答をもらいました

  • ドラム式洗濯機の場合かなり重いのでキャスター付きのかさ上げ台には乗せないようにしている

そうです
一応窓口から連絡が来たから公式見解として受け取っていいのかなと思います

排水口のコップなどの掃除

下水部分のコップとホースとのコネクタは自分でやりました
かなり汚れていたのでスポンジで念入りに洗いました
接続自体は業者さんがやってくれましたが床の掃除も含め掃除関係は自分でやる必要がありました

旧洗濯機回収

新品と旧品を取り替えてくれたあと旧品の回収を行ってもらいました
価格は 2,530 円でした
設置後にその場で支払う必要があるので事前に準備しておきましょう

旧品の回収は別途リサイクル料金がかかりその料金は当日現金で支払う必要があるようです
参考サイト

使ってみた感想/所感

洗っている間は結構静かです
洗濯物を取り出すときに洗濯物が絡まることがなくなりました

水の量も少ないみたいですがさすがに前の縦型と比較はできないので詳細はわかりません
乾燥は3kgまでですが便利です

洗濯コースがたくさんあるみたいですが使いこなせるか不安です

またフィルタなど定期的にメンテナンスする必要があるパーツがあるのでそこが面倒かもしれません

基本的な使い方

  • 基本は標準モードを使っておけばOK
    • それプラス乾燥するかどうか

乾燥モードについて

  • 乾燥は便利だが大きい衣類やポケットでは完全に乾燥できない
    • 乾燥モード後に洗濯物が湿っていないか確認しないといけないのが面倒
    • 特に大人用の衣類が乾かない
  • 乾燥モードは時間がかかる
  • 乾燥モードのときは湿気がすごくなるので換気が必須になる
    • 風呂場で回す場合は扉など開けっ放しにしないとサウナみたいになる
  • 乾燥モードのとき空気の排気口は当然塞いではいけないが排気口の上にものがあると湿ってしまう
    • 例えばタオルなどおけるラックがあるとタオルがビショビショになってしまう
    • ので乾燥モードのたびにどかさないといけない
  • しわしわになりやすい気がする
    • 柔軟剤が少ないだけかもしれない
    • できる限り同じサイズの服だけで洗うといいのかもしれない
    • 布団や大きめのバスタオルと洗うと乾燥しきらないのとしわしわになりやすい気がする

メンテナンス性について

  • 乾燥モード後のフィルタ掃除は毎回しないといけないので面倒