オブジェクト指向と財布 - 使いやすさと安全性を考える

財布持ち歩いてますか?その財布ってつまり何ですか?

 

私は財布を持ち歩いていて、なんか貴重な物を入れる革の袋、略してちいかわだと思っていました。非常に荒い理解でした。関係ないけど、ついこないだまで100均のカメラケースを財布にしてました

 

私はシステム開発をやっていて、先日情報処理安全確保支援士試験合格者にもなったので、身の回りをセキュアにしたい。

 

ところで、オブジェクト指向ってご存知ですか?知らないかたはggるか聞き流してください。

オブジェクト指向とはデータとその操作方法を纏めて考えた物なんですが、今回はあまり関係ないです。缶切りが必要な缶よりプルタブが付いた缶の方がうれしいぐらいのイメージでいいです。

そのオブジェクト指向には守ってると嬉しい原則が沢山あって、守ったり破ったりするが、同じオブジェクトなのだから現実のモノ、今回で言うと財布にも適用できるのではないか。

 

色々ある中でも今回は単一責任原則について考える。

簡単に言うと一つのモノは一つの責任=機能だとうれしいということ。

ここで財布は兎に角貴重な物を入れておくものと捉えると、確かに単一に見えるが、フワフワ、なんかフワフワしてない?

もし上述の機能でよければ、金庫とかでもいいはずだ。財布でなければならない理由があるとしたら、それは多分持ち歩く必要があるからだ。

持ち歩く以上これはセキュアさに不安があるし、必要が無ければ持ち歩かない方がいいがそうじゃないということはやっぱり今の理解じゃダメそう。

普通に考えて、財布は買い物に使うのがメインな感じがする。これは金庫に入れていると達成できない機能

現金を入れておくのが本来の機能だと思うし、決済機能が本質なんだと思う。だから、現金とかそれに準ずるカード類をいれている機能が単一の責任と言っていいと思う。

というかここまでは普通に社会の人間ならこの記事の初めの時点で分かってると思う。

 

が、財布には、決済機能と関係ないと言ってよい物も入っている。多くの人が保険証や各病院の診察券が入っている。が、これは支払い時には使うことはない。年齢制限がある物を購入するときはあるかもしれないが、後述するが決済機能と直接かかわりはない。これらは病院に行くときに初めて必要になるのであって、病院での本人確認でしか使わない。特に保険証は月初にしか使わない。勿論病院でも金銭のやり取りが発生するが、本質的には別の概念だ。

 

こう考えると、「決済機能」「病院の奴」と二つ機能が出てくることが分かる。

この病院の奴は病院行くか~となった時しか必要ないので、持ち歩かなくてよい。ので別にした。突然病院に行く奴は仕方ない、全額払おう。まだ、決済機能に関係ない奴がある。

運転免許証は病院の奴でもないし決済機能ではもっとない。

「病院のやつって本人確認という意味で同じ枠では?」うるせ~~~

免許証で代替できるなら本人確認という扱いで良いんだと思うのだが、免許証も保険証もそれぞれ別の本質的な機能があり、その共通機能として本人確認ができるだけなのだ。

免許証 implements 本人確認able

保険証 implements 本人確認able

免許証は「車の奴」ということで車に入れっぱなしにする運用はそういう意味で正しい気がする。けど明らかに本人確認インターフェースで使ってるからそういう運用じゃうまくいかなそうなんだよなあ

あと、免許証を車に入れるのは玄関でしか使わないから家の鍵を玄関に置いておく運用みたいで嫌。隠してる分には良いけど、なんか刺さってない?みたいな感触がある。それと免許証は個人と結びついているのであって、車とは結びついてないので、よくない。正規化出来てない。

 

それで言うと家の鍵も若干面倒なポジションだ。出かける時には必ず持っていくことになるし、「家の奴」っと括る訳にも行かない。あと住所とセットになると面倒なことになるので(なった)安易に「貴重品入れ」に入れるのも良くない。(本当に決済機能だけになった財布なら鍵を入れてもよさそうな気もするが、この記事はそういうことをヨシとしないのでね)

 

あと貴重な物いれという枠組みからすら外れている、ちょうど貰った名刺とか、SDカードとか、ピックとか「なんか小さくてどこ行ったか分からなくなる奴」とかも入ってある・

 

これ、どうしたらいい?一旦病院の奴は別クラスに移した。これ以上どうしよう?

でも、財布は何個もあると大変だからシングルトンにしたいよ

 

追記:

    タイトルはAIが生成する機能があったのでそれを使いました。元タイトルは「財布が神クラスだった」

災害甚大化は寧ろ「コンパクトシティ化」出来ていたからだ

コンパクトシティ化を誤解しているという旨の言及を一番始めに観測してからのこの記事、であるから本来は定義から言及するべきなのだろうが、誰がどう誤解しているのかを知らないので措くが、

観点としては、コンパクトシティの対となる概念はクソデカシティでもポツンと一軒家でもなく、漫然と家々や施設が点在する町並みになる。地図に均等に各要素を配置して行くとそのような街並みになる。対してコンパクトシティは、地図にランダムに各要素を配置したときに現れる、要素が密集した地域が各所に現れる状態がこれに当たる。町の中心たる箇所が点在している。周囲の独立した点を町の中心に寄せ、さらにこの町の中心間に道を引くとコンパクトシティ的な配置になる。

 

このようなコンパクトシティ構想が重要になってくるのはまとまった平地が十分あるが、構成員の数からしてそれらを十分活用できない時である。平地をフル活用しても足りない場合はコンパクトシティになれない。逆に平地が足りない時もコンパクトシティ構想は役に立たない。

 

既にコンパクトシティ的だからだ。基本的に斜面より平地の方が生活するにあたっては楽であるから、自然と平地に集まる。その平地にできた町の中心を道で結ぶ。この状態はまさにコンパクトシティが目指している状態に他ならない。

コンパクトシティは町と町の間には何もない空間が生まれる。現実的にはある程度空間が必要な畑がそれを埋めるのだろうが、理念的には何もない空間である。道ではない何もない空間をアメリカの荒野のように走ることが出来るなら、そう問題でもないが普通道以外の所を走るものではないし、道と同様に不便なく走行可能ならもはやそれも道なので考慮しない。

今回のような道の断絶による障害について考えると、概念としてのコンパクトシティ、町の中心がただ道で結ばれた状態は類似の障害に弱いと言える。

政策としてコンパクトシティ化するときは当然迂回路も沢山ある状態から始めるから、最初は問題が起きないが、コンパクト空間に要素を収めれば、外側の多様性は徐々に失われ、脆弱なネットワークに変貌するだろう

フリーレンアウラ生存ルートが合理的でない理由

アウラが仲間の二次創作しか見ていないせいでなんだかアウラが仲間の一員だったかのような錯覚を覚えるが、実際はその場で退場している。

仲間が少しづつ増えていく展開で支配可能な魔族という変わり種がくれば読者もそんな幻覚を見るのもおかしな話ではない。

 

フリーレンがアウラを仲間にしなかった理由が大きく2つ挙げられている。

  1. 単純に魔族が憎いから
  2. 魔族とは相容れないことを知っているから

前者は村を焼かれているので仕方ない一方でフリーレンの心持ち次第なのでどうにかならんかったんか?という読者の声も大きい。

後者は作品を通して表れるテーマで、フリーレンらが見逃した魔族がその後その倫理観の違いによって死人が出たことや、契約を結んで共存していたかに見えた魔族が一瞬にして一つの街を滅ぼしたことなどから、実際リスキーであるのは間違いない。

とは言え、アウラは自身の魔法により辛うじて抵抗を見せることができる程度で、その上で行動を縛ればほとんど無害化したと言って良い。なら殺すこともなかったじゃないと読者は主張する。

ここでアウラが仲間になった時の冒険上のメリットとデメリットを比較したい。ただし、ここではアウラに一発芸をさせたり、身の回りの世話をさせたり出来ることは勘定に入れていない。

 

アウラが仲間になった時のメリットとして、アウラによる支配魔法によって、今後現れうる魔族を支配することが可能になる。単純な物量攻撃が可能になるということである。ことが挙げられる。

しかし、ここで但し書きが発生する。

アウラは魔力が殆どない非魔法職の人間を多く支配することで安全に駒を用意していた。フリーレンがそのような戦術を取りようがないことは明らかであるから、必然的に魔族相手が支配対象になる。幾ら魔族が魔力を隠さないとしてもその目測をするのはフリーレンになるし、魔法の出が遅いのでその前に襲われる可能性もある。また、アウラより魔力量が多い魔族には効果がない(どころか、アウラの支配が解かれる恐れもある。)し、おそらくある程度近付かなければ魔法を効かせることも出来ないだろうから、ある程度近くにいる格下の魔族を支配することになる。……フリーレンでよくね?

上記はメリットが幾分か制限されるに過ぎなく、仲間にしない理由にはなり得ない。フリーレンも魔力が格下の相手に敗北したことがある。使い所が少しでもあるならば仲間にしても良いはずである。

 

本題である。

最大のデメリットとして、フリーレンの手がバレてしまうことが今回主張したいところである。

フリーレンは膨大な魔力量とその応用力もさることながら、その本質は魔力制御により、自身の魔力量を少なく見積らせることにやる不意打ちにある。

100年程度の魔力量しかないフリーランがアウラを従えていたらどうであろうか。いくら魔力が少なく見積らせることが頭にない魔族ですら、そのカラクリに気づく可能性は十分にある。

 

この不意打ちが効かなくなることこそがアウラ生存ルートがあり得ない最大の理由なのではないでしょうか。

 

何故デジタル庁のサイトがやばいのにマイナンバーはヤバいのか?

デジタル庁のサイトやばすぎるwww - Qiita

出たての時もこういう話あったような、、、

 

少なくともデジタル庁には優秀な人材がいて、サイトがやばくなる程度には可能性がある組織なのに、マイナンバー関連の問題が沢山出てくるのか?

 

 

答えは「0から作るのと10から作るのだと前者の方が簡単だから」

ウェブサイトは勿論リンク先が存在しているが、ある程度しがらみを捨て去れる世界。コンテンツを新しい形式に直して仕舞えば捨ててしまっても殆ど問題はない。

勿論今まで利用されていたUIを踏襲するという要請はあるにせよ、デジタル庁は新しい組織。そういう過去の顧客もいない。

 

が、マイナンバーとそれらが繋がる諸システムは違う。それぞれはそれぞれの用途の為に独自に組まれており、それらに互換性はない。設計思想もあるとは言い難い。

そのデータ群は正しさが保証されてないから移行も困難だし、削除できるタイプの代物ではない。

それらをどうにかして一つの仕組みにまとめようとするのがマイナンバーをはじめとしたデジタル庁の施策なんですね。

元がヤバいのをどうにかする。

そりゃ、誰がやってもヤバくなっちゃうよね

オブジェクト指向とNullpointer Exception

こんにちははてなに入社しました321です、という嘘をエイプリルフールにやろうと思ったけど弊社(はてなではない)が大変なことになっててそれどころじゃなかったのでやめました。来年こそ入社します。

 

別に大変なことにはなってるのでそれどころじゃないのですが、javaの話をさせてください。一つ言っておくとエッセイであって技術書の類ではないです。

 javaに限った話ではないと思いますが、javaといえばオブジェクト指向、みたいな節あると思います。というか自然に記述するとオブジェクト指向になっちゃうと思うのですが、現実そうはいかない。

 単に能力が低いとか、他のフレームワークとの兼ね合いとかまあ色々あってオブジェクト指向ライクでない構成になってしまう。

 

 今回はそういう政治的な話ではなく単純な話をします。

 オブジェクト指向は簡単に言うと、どういう情報を保持していて、それをどのように扱うかを同じ場所に書こうよ。という話です。

 余りにも普通のことなので普通にやると実現してしまうのですが諸般の理由で出来ないことがあります。

そのうちの一つがNullpointerExceptionです。

オブジェクト指向だと

オブジェクト.メソッド()

と言う形で記述されるかと思います。

オブジェクトが保持している情報をオブジェクトに属したメソッドを用いて処理をするというごく普通の処理なんですが、問題があります。それはNull pointer exceptionが出るという問題です。

問題なのはNullなのに処理が継続されてることでは?それはそうだが……

ただ処理を継続させてしまうアホは次のように考えます。

 

オブジェクト.メソッド()

を呼ぶ前にNullチェックすればいいのでは?

 

if(オブジェクト!=Null)オブジェクト.メソッド

 

オブジェクトがNullの時の処理がないやん、それはそうだがアホなんで……

こうしてアホな状態を拡大させると全ての場所でNullチェックする羽目になります

するとアホはこう考えました

いろんなところで同じ処理がなされているので共通化したい

ただオブジェクトがNullだから落ちてるのでオブジェクトの中に書くわけにはいきません。切羽詰まったアホはこう書きます

ユーティリティクラス.メソッド(データ)

ユーティリティクラスにメソッドを書いておいてそこにデータを流し込みます。

これならユーティリティクラスはスタティックでいいのでNullになることはありません。データの中身もメソッド内でNullチェックすれば良くなりました。

 

 

良かったですね。レストインピース、オブジェクト指向プログラミング。

 

どうしたらよかったのか

まずNullチェックやめろ。必要になってる時点でバグだろ

初期化時点でNullセットするのやめろ

処理に失敗したらNull返すのやめろ!

なんかこう、optionalとかあるだろ!知らんけど

変なやつであることへの恐怖

先日の弁論大会、五月祭記念弁論大会で、審査員はこのように評した。

 

弁士も、聴衆でさえ、皆スーツを着ている。昔はこうでなかった。皆と同じであろうとしているのではないか。社会を変えるのは皆と異なる者である。

 

概ね同意するところである。しかし、社会を変えるのは我々異常者ではない。少なくとも平時においては異常者に社会を変える力などないのである。社会を変えるのは常に権力者である。その権力の在り方はそれぞれとしても、何か社会に行使する力を持つ者にしか社会を変えることはできない。

だからこそ我々は弁論を行う。演壇に立つ。聴衆にのぞむ。権力ある者を説得し、考えを改めさせ、そうして社会が変わらんことを、と。

私は服装で減点を受けたことがあった。無論、服装は実のところ関係なく、その審査員のある種馬鹿にした振る舞いを馬鹿にし返したことで機嫌を損ねたのかもしれない。権力者の機嫌を損ねるのは公共の福祉に関わる。説得の可否に関わるのである。

だから、スーツを着ろと言われればスーツを着なければならないし、スーツを脱げと言われれば、また別の服装にならなければならない。

この在り方は望ましくないとは理解しつつも、されど、力なき者にとって選択しない訳にはいかない。

だからこそ、女を出せと言われれば、女を出さねばならないのである。

 

私は、変なやつだという評価が恐ろしくてならない。時としてそれは数ある中から選ばれる理由にもなりうるが、同時に門前払いの理由になりうる。

 

○○ワールドと評価されるのは一見して独自の価値観を評価されるようにも見えるが、その実、世界を分ち、結界を張り、対話を拒絶しているに過ぎないのである。

対話せんとする時に最も陥りたくない状況である。

やっと総括できる話

弁論弁論の話。

弁論は何ではないのかについて。

弁論はレポートではない。まして論文でもない。

弁論が扱う現状を追認してはいけない。必ずその在り方を否定して、より望ましい在り方について示さなければならない。この在り方は提示されていることが重要であり、それが実現可能であるかは些細な問題である。その在り方が瞬間的在り方として具体的かつ自家撞着なく提示されていることが望ましいが、そうでなくとも聴衆にとってそれと確かに連想しうる像があれば十分である。

 

弁士はただ理想を語り、その在り方を示し、それが現状とは異なることを示すだけで良い。それが出来ない弁士がリソースを語る必然性はない。

 

現在的に実現可能かつ実現が望まれている在り方は現状の他にない。また、将来的に可能になるかどうかは誰も論理的に導き出すことはできない。

弁士はただここではないどこか、己が理想像を示す他にすべきことはなく、それのみがすべきことである