Pythonで設定ファイルをいいようにするクラス

自分用で覚えがき

Pythonで標準で設定ファイルをいじいじする機能があるじゃないですか。(configparser)

自分用のツール作るときはソースに直書きだったけれど、配布のこと考えたり、取り回し考えると
設定値は外だししてたほうがいいんですよね。

ただ、configparserってファイルないときや設定値がないときの処理がめんどくさくて、
機能追加したときに各自propertiesを追記してもらわないといけなかった。
足りない設定値は自動追加しておいて、値書き換えるだけにしたくてもそもそ書いてた機能をきれいにまとめて
ラッパークラスを書いた。

ソース

基本的にやってくれることは、ファイルなければつくって、設定値なければdefault値突っ込む。
なにか必要になれば都度更新すればいいかな。
どこにでもありそうだけど、自分が使いやすいようにしてみた。

ミストオーバーの紹介と探索前に知っておきたいこと

どうしてこうなってしまったんだ。
どうして欲をかいてしまったんだ。

みんなが、、、!仲間が、、、!

全てを投げ捨てて、全力で逃走した。
次の未来のために。死んだ仲間を無駄にしないために。
ダンジョンから裸足で逃げ出してきたーー

僕です。

アークシステムワークスより2019/10/10発売のローグライクRPG【ミストオーバー】めちゃくちゃ楽しいですね。
常にリスクとリターンと隣り合わせ、石橋を叩けば世界が滅び、失った仲間はもう戻らない。

世界樹の迷宮(ATLAS発売)でのハードコアな探索 帰還ゲームの最高難易度を踏破し、ファイアーエムブレム(任天堂発売)でルナティックの世界を救っていても、手に汗握るターン制RPGです。

ここでは、ミストオーバーに挑戦しようか悩んでいる人、ミストオーバーに挑もうとしているけど、ネタバレにならない範囲ではじめに知っておいた方がいい情報をお伝えします!

■この記事で【書かない】こと
○○が強い、○○がおすすめといった評価情報
ボスが○○してくる。○○の敵の倒し方などの攻略情報
ゲームで初回ボス以降の全ての情報

■この記事で【書く】こと
ゲームオーバーの条件
キャラロストの仕様
終末の時計の仕様
初期スキルについて

ゲームを始める上で、おそらく説明書があれば買いてありそうな各種仕様について、知りたい方に向けた記事です。
所謂、攻略に関わるネタバレや知らない方が楽しい情報については記載しないつもりです。

チュートリアルに補足したような情報を心がけていますが、不安な方は戻るボタンを押してくださいませ。

■ゲームオーバーの条件
このゲームではゲームオーバーの条件が二つあります。
①終末の時計が正午を指すこと。
②キャラクターが全滅すること。

①の終末の時計とは、時計が一定時刻になるとどんな状態であれセーブデータが消える時計となっています。
私が発売日にこのゲームを買わなかった理由であり、このゲームのリスクとリターンをより面白くする仕様です。

私、ペルソナシリーズみたいに有限回しか出来ないものや、ピクミンみたいにゆっくり遊んでるとゲームオーバーになるもの、苦手なんですよね。
ダンジョン隅々まで探索したいし、、、

このゲームの終末の時計は時限とは少し異なります。
このゲームではのんびり街を探索しててもダンジョンを隅々まで探索しても時計は進みません。

ダンジョンの宝箱を全部あけなかった。敵を全部倒さなかった。仲間が死んだ。など、あまり良くない探索をした際に時計が進みます。

また、低レベルのキャラクターで全部の敵を倒し宝箱を全て開け、その他諸々やっていれば時計が逆に動きます。

絶対的な制限時間でなく、怠けさせないための仕組みです。
とはいえ、費用的な問題で無限に潜って無限に回復とはなかなかいかないのですが、、、
※これを知っていたら発売日に買ってた、、、

②キャラクターが全滅すること。
このゲームではキャラクターは死亡するともう戻っては来ません。
しかし、お金があればある程度レベルの高いキャラクターを雇用し直せるので、誰かが死んだら終わりといったものではないです。(キャラクターの死亡については別項で書きます)
ただ、だれかも失っても辛いながらも、詰んではいないため、お気に入りのキャラクターが死んでも前に進むしかありません。(ファイアーエムブレムみたいに仲間が死んだらリセットとか気軽にできません。)

このゲームオーバーとキャラロストのバランスが絶妙で、時には時計を進める事をいとわず、逃げ出す選択が必要かもしれません。

■キャラクターロストの仕様
このゲームではキャラクターロストが売りですが、意外としなないし、時にはあっさり死にます。
例えばバフ巻きが行動不能になり仲間にクリティカルが飛んでくる不運がありHPがなくなってもこのゲームはまだ死にません。
ヌルい仕様と捉える方もいるかもしれませんが、ここで生まれる駆け引きが本当に1ターン1ターン重みが違います。

キャラクターが死亡したとき、HP0の状態でそのキャラクターは【生死の狭間】という状態になります。

この状態で以下が起きると死亡します。
①生死の狭間の状態で3ターンが経過すること
②1でも追加でダメージを受けること

全力で仲間を守りきれば貴方の大切なキャラクターはまだ死なないのです。

では生死の狭間を治すにはどうすればいいか?
①HPを回復する

たったこれだけ。蘇生薬もいりません。
もっといえば生死の狭間のキャラクターも行動可能なため、自分に回復を使えば死なないです。ワォ!

※ただ、生死の狭間を経験すると、そのダンジョン中【後遺症】というバットステータスがかかります。

行動順の制御やタゲ取りの工夫で仲間を蘇生できたときの安堵はこのゲームのリスクを背負っているからこその体験だと思います。

■不運にもキャラクターが死亡してしまった場合
キャラクターが死亡してしまったとき、そのキャラクターはもう戻ってきません。
しかし、そのキャラクターの装備品は少し強い合成材料として【他の仲間が帰還できれば】遺品として持ちかえることができます。

また、メニューから死因と遺影がみれます。

■キャラクターが死ぬと詰むの?
パラディンが死んだらゲームクリア不能みたいなことはありません。
施設のレベル次第ですが、ある程度レベルの上がったキャラクターを再度雇いなおす事が可能です。

じゃあ雇い直して特攻すればよいとお考えのそこの貴方。
死んでも立て直せるけれど、死が軽くなるほどこのゲームは簡単ではないのです。
雇い直すには以下の欠点があります。

①高レベルは1レベルから育てたときよりもスキルポイントが少ない
②何をするにも金がかかるので、雇用費がバカにならない
③レベル1も雇えるが育成する時間を取れない
④初期スキルが異なる
⑤詳細は書かないがパッシブスキルのジンクスがなくなる。

手塩にかけたキャラクターは雇うより強いのです。

■初期スキルについて
職業の違いの他に職業の中でも覚えているスキルが違います。
ある程度厳選は必要ですが、粘らなきゃいけないわけじゃないです。

①覚えていないスキルをスキルポイント1使って覚える手段が存在する(はじめから覚えているやつより1ポイント損)
②利用出来るスキルは結局4つ

はじめ覚えるスキルが個体ごとに違うと思っていたんですけど、初期スキルが違うだけで覚えるスキルはみんな一緒でした。
資源も限られているので、多少の妥協は必要かも。

■最後に
死んだ仲間を助けようとして死んでしまった、アリス。
君のことは忘れない。
もう少し撤退が早ければ、もう少し僕が未熟じゃなかったら、、、

少しでもこの霧の世界に挑戦する人が増え、初心者の手助けもなれば。

vimでフォントサイズ変更するプラグイン

vimでフォントのサイズ変えるときコマンドがvimrcで肥大化してきたのでプラグインにまとめた。
画面映してだれかに見せたり、画面から離れたときにサクッと文字サイズ変えたくない?

githubの操作練習も兼ねてあげてみた。

まだまだやりたいとこあるけどひとまず公開だー。

■FontController
GitHub

■設定例

nnoremap <silent><leader>f :FontControlSizeDown<CR>
nnoremap <silent><leader>F :FontControlSizeUp<CR>

頭に数字指定するとその分でかくなります。
倍率はg:FontController_zoom_agnificationの数字を適当に変えればよいです。

■課題
ヘルプファイルがない
guifont設定されていないとだめ

vim-lsp+clangdでハイライトが反映されなかった話

【解決:追記】
vim-lspが古くてそもそもハイライトの設定がなかった。
またvim-lspをアップデートしたらエラー表示回りがでなくなったが、vimを最新版にすることで対応した。
気持ちエラーチェックも早くなった気がする。
いやー最新化は大事だった

—————————-
職場のデスクと家のノートどちらにもvim-lsp+clangdを入れてc++をかいているけれど、家のノートだとエラー箇所のハイライトがされない。
gccもclangdもどちらも最新版で特に違うことはしていないと思うのだけれど・・・
let g:lsp_highlight_references_enabled = 1を設定して、ログを見る感じランゲージサーバからは帰ってきているようなのだけれど。。

2019/09/13 23:37:01:["<---",1,"clangd",{"response":{"method":"textDocument/publishDiagnostics","jsonrpc":"2.0","params":{"diagnostics":[{"range":{"end":{"character":8,"line":130},"start":{"character":4,"line":130}},"message":"Use of undeclared identifier 'ksjk'","severity":1}],"uri":"file:///C:/programSauce/cpp/abc54a.cpp"}}}]

しばらくみてわからない+そこまで重要度高くないので一旦保留。
同じ課題でて解決した人は教えてください(他力本願)

JavaGold資格、電子書籍で取るか、物理書籍で取るか

【前置き】
Java SE 8 Programmer II(Java SE8 Goldに合格してきました。

Gold取ろうと思ってからSilverの勉強初めて、10日程でSilver,30日程でGoldを取得しました。

前提知識としては、Java6は業務で使うこともあるんですけど、主に使うのは独自言語で、JAVA6といっても独自フレームワークの影響でJavaらしい書き方はしなかったため、具体的に言えば”static”が何か説明できない、DB接続回りはちょっと書いたことある程度からのスタートでした。

【今回のテーマ】
合格するコツ(DL版問題集やったほうがいいとか)や出題範囲などはネットにある優良な情報を参考にしてもらうとして、電子書籍と物理書籍どっちを買うか迷っている方にどっちも買った私から情報共有できればいいかなと思って今回記事を書きました。

【結論】
黒本は物理書籍がおすすめ
紫本は電子書籍がおすすめ
白本は買ってないからわからない

理由やレビューを下にもりもり書いていくよ。

【購入したもの】
Silver 黒本(電子・物理)
Gold 黒本(物理)
Gold 紫本(電子・物理)

ぷよぷよ15thとかPS4、DS、Wiiとマルチプラットフォームの全部買うアホなので、
今回もそんなノリで実質5冊購入しました。
電子書籍はkindleでの購入です。

■黒本
【総評】
おそらく最も人気の高い(当社調べ)書籍
問題 → 解説をとっていて、出題範囲の網羅性は紫本に劣る箇所もあったが、
「あ!これ黒本でやったやつだ!」と思わず試験中に叫びたくなるくらいの出題率を誇る。
Silverではまとめ問題が2つついているが、Goldでは1つが書籍について、もう1つは公式サイトからダウンロードが必要だった。

【電子書籍版】
この参考書の電子書籍の特徴は固定レイアウトであること。固定レイアウトとは参考書のページをそのままスキャンして、画像を載せる方式で、拡大すると画面から行がはみ出る。
ソースコードを読むときは固定レイアウトの方が便利に感じたが、スマホから移動中に読む分には不便に感じた。
また、 Q1を解く → Q1の答えを見に行く → Q2を解く → Q2の答えを見に行くといった特定のページ間を往復するのに電子書籍はあまり向いていないように感じた。
移動中に読みたいとかの用途があればいいが、個人的には「物理書籍を持っていて、2冊目として買う」ならありだと感じた。

【物理書籍版】
チェックボックスがついている点と黒本は出題率の高さから何週も問題を解くので、間違えた問題をわかるようにしておく上で、物理書籍に軍配があがった。
電子書籍版でも記載した「Q1を解く → Q1の答えを見に行く → Q2を解く → Q2の答え」といった動きは本だと指を挟むだけでよかった。

【黒本のまとめ】
黒本は物理書籍がおすすめ

■紫本
【総評】
出題範囲の解説 → 確認問題 の形式をとっている参考書
黒本は問題主体なのに対し、こちらは解説主体の本。
JAVAの理解度があまりない人はSilverでも購入して、ラムダ式とかNIO.2とかわかってるような人はGOLDでも購入しないような使い分けがされているように感じた。(ネット調べ)
黒本が難しいようならまずは購入がおすすめできる。

【電子書籍版】
黒本とは異なりこちらは可変レイアウトの書籍となる。(kindle版)
プログラムでなく文章を読む機会が多い紫本にとって、文字の大きさがデバイスや環境に応じて変更できるのはとても楽に感じた。
ただ、プログラミングが記載されている箇所に関してはタブレットやPCで読みたくなる(崩れていて読みにくい場合がある)ことがあった。
しかし、その欠点を差し置いても電子書籍版をお勧めしたくなる理由が3つある。

1つ目はマーカーの存在。
私の紫本での勉強方法は 

1. まず1周読む
2. 2周目で分からないところにマーカーを引く
3. 黒本と解いて、黒本で間違えたところのマーカーの色を変える
4. 3周目読みながら、「誰かに説明できるくらい理解した箇所」のマーカーを消す

といった勉強方法で行った。
電子書籍のメリットとして、マーカーの色を後から変えたり消したりでき、
またマーカーを付けたページの目次ができるため、試験日が近づくにつれて読む必要のない箇所を飛ばすことができた。
ちなみにPCkindleとスマホkindleの情報は連携されているため、スマホでマークしたところもPCからみてもマークされた状態になる。

2つ目は分からない単語に対する機能
英語やIT用語で分からないところがマウスオーバーするとWikiや辞典から参照してくれる機能がある。
また、好きな場所にメモを取ることができるので、書籍と同等かそれ以上に使い勝手が良かった。

3つ目は検索機能
これ、すごい重要で、紫本では特に問題だった(黒本でも多少はあった)ことがあって、
本の最後についている索引がポンコツだった。
しらないメソッドが問題で出てきて調べようとしても何ページにあったか索引に乗っていなかったり、どっかで読んだはずの機能を索引で調べてみようとすると乗っていないことがとても多い。
電子書籍では文字列検索ができるため、わからないメソッドが出てきたら検索をすることで、解説ページにとんだり、関連の問題をみたりすることができる。

【物理書籍】
プログラミングコードが読みやすい。
参考書読んでる感がある。

——————————————————————

そんなこんなで電子書籍と物理書籍を駆使してJavaGoldを獲得できました。

参考になれば幸いです。

PCの設定・ソフトのメモと簡単な紹介

自宅も職場もどの環境にもいれたいソフトや設定のメモなど。

■Windowsの設定
細かいところは省く、個人的にやらなきゃいけない設定は以下
・拡張子の表示
・alt+tabのサムネイルを無効化
参考:http://shumitenten.thick.jp/blog/2017/04/08/windows10%E3%81%AEalttab%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%82%92%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/
・CapsLockを削除してctrlキーに変換する
参考:http://www.shin-tan.com/swapKey

■IME
Google日本語入力
英語苦手マンにとってはカタカナ英語を英語にしてくれるのはありがたい

■ブラウザ関連
・chrome
・Vivaldi
・vimium(プラグイン)
キーボードのみでブラウザ操作が可能になるプラグイン。

■フォント
・Ricty_Diminished_Discord
読みやすいフォント。プログラマー向けな配慮もされている。

■ランチャー
・CLaunch
Alt + Qで起動するようにしてる。よく忘れるけどキーボード→ホットキーで設定してる。
主要アプリケーションは[Windowsキー+数字]から起動するけど、一部ファイルや細かいソフトはここから起動
いつかオリジナルスキン作りたい

■キーボード設定
・AutoHotKey
参考:http://sato001.com/high-speed-input-keyboard
※少し情報が古いので普通に設定するだけだとだめ。sc~を消すなど
あとはVim風キーバインドにアレンジしてる
追加で[無変換]+eは esc になるように変更している

■エディタ
・Vim
・sakura
※Vimに完全に移行しようと思ったら日本語入力メインだとしんどい面もあったので現在は併用中
Vimプラグインは色々使ってるけどここでは割愛
Vimの設定も長くなるのでここでは割愛

■クリップボード拡張
・Clibor
まとめてコピペしてあとから選んで貼り付けみたいな動きができるようになる。

ツイッターみるツールとかはあんまりこだわりない

Intensity Pro 4Kの設定に関する覚書

何度か設定しなおす度に設定値を忘れてしまって不便しているので、Intensity Pro 4Kでnintendo switchとPS4をアマレコでキャプチャするための設定値メモ

■nintendo switch

デバイス:Decklink Video Capture

設定値: *w=1920, h=1080, fps=60.00,  fcc=r210, bit=30

※スプレッターを利用するなどし、switch側の解像度を固定させる必要がある

■PS4

デバイス:Decklink Video Capture

設定値:*w=1920, h=1080, fps=59.94,  fcc=r210, bit=30

※ゲームにより設定値が変わる場合がある

■Intensity Pro 4K

videoformat:1080p 10bit 4:4:4 RGB

関係あるかは不明

 

フィルターの問題がでた場合は公式サイトよりデスクトップセットアップを入れなおす。

→大体はカメラをソースにつかうアプリケーションが悪さしている

以上