wrongwrongな開発日記

情報系大学生が挑戦したことや日常を書いていきます

【日記】天才とはどのような人間か

yuiga-k.hatenablog.com

この記事に触発されて、自分が天才について思っていたこと・考えたことを書きます。

予防線として、この記事に書く内容は完全に自分が勝手に考えただけのもので何ら裏付けはありません。

天才の能力

自分は天才とは以下の2点を満たす人間だと思っています。

  1. その場では思考・説明より先に結論にがある
  2. 結論やその導出過程を見ても天才そのものを説明できない
1.その場では思考・説明より先に結論にがある

天才にとって結論は状況に対してしばしば反射的に導かれるものだと思います。それは決して裏付けの無いものではなく、意識・無意識問わず「その場では既に考え終わっていて後は引き出すだけ」の状況ができているからこそ反射的に導くことができます。

天才の結論と過程を再現することはできるかもしれませんが、完全な模倣はできないでしょう。天才は1分1秒の間に感性によって得たものを積み重ねているためにある日気づくことができ、既に気づいているからこそ反射的に引き出すことができる。これを真似するためにはまず感性を模倣し、そこから得られるものを積み重ねていく必要があります。

また、そのような感性と行動に共感することも難しいはずです。パッと見ただけでは何も見えない所からいきなり結論が出てきてしかも正しいというのでは、共感以前に「なんで?」という恐怖・畏れが先に来るのではないでしょうか。

勿論、天才であってもその場では結論を出せないような場面は多く存在するでしょうが、その場面への取り組み方としてもやはり天才はその積み重ねた結論の量から圧倒的な能力を発揮します。

2.結論やその導出過程を見ても天才そのものを説明できない

自分は天才の思考や行動に対する分析の結論は、微分方程式の一般解、特殊解、特異解のような関係で説明できると考えています。

つまり、天才の具体的な行動(≒特殊解)から、その目的や思考に用いる道具(≒一般解)を求めたり予想したりすることはできるが、それらをどのようにこねくり回しても天才そのもの(≒特異解)を求めることはできないということです。

 例えば天才の行動からある一つの原則を導いたとしても、「それをどのような場合に用いるべきで、用いるべきではない場面はどこか」という判断をすることはできないでしょう。このように、個別の特殊解や一般解、それら全てに共通している原則としての特異解は説明できていません。

確かに天才の行動には一定の裏付けが有り、順を追って説明することは不可能ではありませんが、その行動から天才の全てを説明することは不可能なのです。

天才の人間性

このようにある分野・ある場面に対して天才は超人的な能力を発揮しますが、天才も人間であり、人間性というものが確かに有ると自分は思います。

天才はなぜ凡人に期待するのか

天才が凡人に期待するのは、天才が自身の行動を凡人でも再現し模倣できると考えるからではないでしょうか。これは、天才自身が自分の行動・思考に裏付けを持ち、それに説明をつけることができるため生まれる感情だと自分は思います。

実際には先程挙げた微分方程式の例のように、個々の行動・思考に説明をつけることができるからといって天才を模倣できる訳ではなく、歴史を鑑みてもその期待はほぼ勘違いだと言い切ることができます。

しかし理性とは別に天才は、「理解できないと言われて説明を加えたのに何故理解してもらえないんだ」という感情を抱えているように見えます。この不満は天才にとって矛盾無く説明できる説明が存在しているにも関わらず、それを理解して貰えないことで発生する不合理を見せつけられる状態を解決してほしいという不満の表れでもあるのではないでしょうか。

逆にそこをある程度理解でき、実践できるからこそ、天才は秀才に対して興味を持たないのではないかとも感じます。

天才は何故排斥されるのか

これは分からないものは排斥するという「有機的な冷たさ」によるものでしょう。よく差別やいじめを引き起こしたり、無理解から的を外した言葉をかけるようなアレです。

人は物理的・心理的・能力的、どのような軸であれ距離が開くほどそれを理解できないことから排斥したがるか、排斥するまでは行かなくとも積極的にお近づきになろうとは思わない生き物です。天才も天才で、同じ軸で会話できない人間と話しても楽しさは少なく、気味が悪いと扱われることも多いため、理解できない人間を遠ざけるのが自然です。

また天才の少なさもこの傾向に拍車を掛けます。環境としてどのように天才と付き合うのが良いかを学習する機会が少ない以上、天才を排除しないように行動する人間もまた少なくなるでしょう。

天才とはどのような人間か

纏めると、自分は天才を特定分野に超人的な能力を発揮する一方で基本的には普通の人間と変わらないと考えています。目に見える部分が幾ら超人的であっても、誰かに認められた方が嬉しい、嫌なことが起きていたり続いたりしているのが嫌いという点は変わらないのでしょう。

書くだけ書いて投げっぱなしになりますが、自分の天才観でした。

【VB】MsgBoxを処理を止めずに出す【.Net】

簡易まとめ

Taskを使えば以下のコードで出来ます。処理を止めずにMsgBoxを出し、メッセージボックスのリザルトを受け取ることも出来ます(後述)。

Task.Run(Sub()
             MsgBox("Async")
         End Sub)

やること

WindowsフォームアプリではMsgBoxを用いてメッセージを伝える場面が有りますが、メッセージを出した場合そのメッセージが消えるまで処理が止まるため困る場面が有ります。
対処法をググると『応答不要のメッセージボックスを出したい』などがヒットしますが、情報が古かったのでTaskを使ったやり方を書きます。

普通にやると

以下のコードでは、MsgBoxのOKを押さなければForm1が表示されません。

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MsgBox("normal")
    End Sub
End Class
Taskを使う

以下のコードではForm1のロード時にMsgBoxを出し、かつ回答無しでForm1が立ち上がります。

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Task.Run(Sub()
                     MsgBox("Async")
                 End Sub)
    End Sub
End Class

応用

以下は応用です。

別の場所で閉じられるのを待つ

タスクを共有することで、メッセージボックスが閉じられなければ諸々を操作できないようにすることも出来ます。
以下のコードではボタン1を押したときはTaskが完了している(=MsgBoxが閉じられている)かを見てメッセージを、ボタン2を押した場合Taskが完了するまで待ってからメッセージを出しています。

Public Class Form1
    Private tsk As Task = Nothing

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        tsk = Task.Run(Sub()
                           MsgBox("Async")
                       End Sub)
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim str = If(tsk.IsCompleted, "ボックスは閉じています", "ボックスは開いています")
        MsgBox(str)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        tsk.Wait()
        MsgBox("ボックスが閉じられました")
    End Sub
End Class
回答を受け取る

Taskを使った上で回答を受け取る場合は以下のように行います。
Task.ResultはTask#Waitを呼び出すのと同様にTaskが完了するまで待った上で値を入れ、処理を行ってくれます。

Public Class Form1
    Private tsk As Task(Of MsgBoxResult) = Nothing

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        tsk = Task.Run(Function() As MsgBoxResult
                           Return MsgBox("Async", MsgBoxStyle.OkCancel)
                       End Function)
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox(tsk.Result.ToString)
    End Sub
End Class

【レビュー】BFRKC(BK) on AS-KBPD91/LSBKNレビュー

wrongwrong163377.hatenablog.com

更に続きです。

BFRKCについて

bit-trade-one.co.jp

bit Frrous(旧ダーマポイント)の交換用キートップです。

LEDを透過するという性質が有りますが、AS-KBPD91/LSBKNは派手なLEDを搭載していないのでちょっと損したような気分です。。。

外見

f:id:wrongwrongwrongwrong163377:20180219195210j:plain

f:id:wrongwrongwrongwrong163377:20180219195320j:plain

AS-KBPD91/LSBKNに装着した様子(WASDと矢印キーのみ)

f:id:wrongwrongwrongwrong163377:20180219195415j:plain

f:id:wrongwrongwrongwrong163377:20180219195446j:plain

BFRKCを選んだわけ

自分はWASDと矢印キーには別のキートップを当てるのが好みです。

しかしAS-KBPD91/LSBKNはステップスカルプチャーに対応した独自のキートップ形状を持つため、キートップを交換すると「装着はできるが形状が合っていない」という状況が発生する場合があります。

その違和感が小さくなるような交換用キートップを探していた中で見つけたのがBFRKCでした。

BFRKCは同ブランドのキーボードであるBFKB92UP2などに対応しており、Cherry MX軸にも対応しています。このBFKB92UP2はシリンドリカルステップスカルプチャーを採用しており、横から見た図がAS-KBPD91/LSBKNとそっくりだったのです。

bit-trade-one.co.jp

装着して横から見た図

というわけでBFRKCBKを装着したAS-KBPD91/LSBKNを横から見た図です。

f:id:wrongwrongwrongwrong163377:20180219201707j:plain

f:id:wrongwrongwrongwrong163377:20180219202200j:plain

WASDに関しては違和感なくハマりましたが、矢印キーに関しては残念ながらちょっと違和感がある入り方になりました。

使用感

矢印キーに関しては形が多少違ってしまったものの操作そのものの違和感は小さく、外見も「目立たないけれどカスタムしている」ようなおしゃれな感じに仕上がってくれて満足です。

形状重視で選びましたが流石のダーマポイント製、指ざわりも良好です。MXKC-WASDに比べるとサラサラしていて、ゴムのべたつきが少ないように感じました。MXKC-WASDは2年以上使って劣化してきているのも有りますが、個人的にはBFRKCの手触りの方が好みです。

贅沢を言うならロゴのみのキーなど、どこに当ててもいいようなキーを入れておいてくれれば良かったなと思います。もう一つ、押し間違い防止ということであれば1,3,5……など、1個おきに違う手触りを入れたほうが良いのではないかと思いました。そういう意味では、財布にも余裕があったので、フルキー版が有れば買ったなあと思います。モンスターをこぼして殺っちまいましたがBFKB113PBKには随分お世話になったので。

使い心地は期待するまでもなく良好だろうと思っていましたが、実際その通りでした。後は使い込んでどんな感じになるかですね。

余った分はAS-KB91Tに付けようかなと思います。

追記

キートップ交換を全部済ませた最終型が↓です。

f:id:wrongwrongwrongwrong163377:20180221154301j:plain

キートップ構成は以下の通り。

Esc
  • AS-KB91Tから引き継ぎ
Del
WASF/矢印キー
  • BFRKCBK

【レビュー】ProgresTouch RETRO TKL AS-KBPD91/LSBKN使ってみた感想【スピードシルバー軸】

wrongwrong163377.hatenablog.com

先日キーボードを買おうかという記事を書きましたが、買いました。

買ったもの

www.archisite.co.jp

結局候補1としていたProgresTouch RETRO TKL AS-KBPD91/LSBKNを選びました。

選んだ理由はやはりスピードシルバー軸でキートップがオシャレな所ですね。

使ってみた感想

この製品を選ぶ大きなきっかけになったスピードシルバー軸ですが、非常に良いと感じました。打鍵感は今まで使っていた茶軸に比べ軽目に感じましたが、反応の速さやストロークの浅さが理由でしょうか?

一応公式のデータシートを見る限り押し下げ45±15gというのは赤軸と同じ(茶軸より軽量)ですが、以前赤軸を触ったときよりも軽いように感じました。

製品としては、キートップのオシャレさは期待通りでした。それに加え、前シリーズではキートップに透明な部分を付けてCapsやScrollLockのOn/Offを表示していましたが、今シリーズではキートップ側に透明な部分は無いが光るようになっていました。RGBビカビカ系のキーボードでもちょっと控えめにこんな光らせ方する製品があってもいいのになーと。

心配していた誤爆の頻発も普段使いの茶軸と変わったようには感じませんでした。

自分は使わない機能ですがCtrlとCapsの入れ替えなど、一部キーの入れ替えにDIPスイッチで対応しており、交換用のキートップも付属しています。

その他マルチメディアファンクションなどの機能もマニュアルに記載があります。

ちょっと不満な点

前シリーズではキーボードの滑り止めは手元側のみでしたが、今シリーズでは手先側(脚)にも滑り止めが付いています。この滑り止めが引っかかるせいで、脚を立てて使っているときキーボードを手先側に押し込むと脚が戻ってしまいます。

別キーボードでも脚にゴムを付けている製品ではこういうことがよくあるので、ここは少し残念でした。

後、箱はなんというか……RETROですね……。個人的にはもう少しカッコよさを追求しても良かったのでは?と思います。

f:id:wrongwrongwrongwrong163377:20180215214920j:plain

総評

軸の話がメインになりがちでしたが、割と真面目に銀軸比で茶軸と赤軸を選ぶ意味は無いんじゃないかと思いました。

銀軸の触り心地は茶軸に比べ強い違和感を覚える程ではありませんし、少なくともゲーム面では反応の速さでスペック的に有利です。

個人的な事情ですがBIOS起動キーをTSUKUMOのロープロ透明キートップで置き換えているので、茶軸よりも銀軸の方が見栄えが良いのもGoodです。

という訳で今後選ぶのもオススメするのも銀軸になりそうです。

製品的にはとても堅実で、大外れ!ってことは起きないです。ゲームだろうがタイピングだろうがどんな場面にも違和感無く心地よく使っていけます。

特徴が無さすぎて書くことは無いんですが、自然に使えるという意味では道具として非常に良いと感じました。

続き

wrongwrong163377.hatenablog.com

追記

キートップ交換を全部済ませた最終型が↓です。

f:id:wrongwrongwrongwrong163377:20180221154301j:plain

キートップ構成は以下の通り。

Esc
  • AS-KB91Tから引き継ぎ
Del
WASF/矢印キー
  • BFRKCBK

【日記】"キュー"を使ったじゃんけん

「グー」「チョキ」「パー」に「キュー」という手を加えたじゃんけんの目的及びルールを説明せよという内容の小論文の問題が早稲田で出たというツイートを見かけたので、考えてみました。

目的

論理的・戦略的思考力を鍛えるとかそんな感じです。

ルール

  1. 1対1で行う。
  2. 各手は引き分け含めそれぞれ1度しか出してはならない。
  3. キューを出した場合全ての手と引き分けとなるが、引き分けとなった時点で次に出す手を宣言しなければならない。
  4. キューは1度勝敗がつくまでに1度しか出してはならない。
  5. ただし同時にキューを出した場合は互いに次の手を宣言しなくてもよく、再度キューを宣言することも可能である。
  6. グー・チョキ・パーを使い切った場合、キューを使っていない側の勝ちとする。同時に使い切った場合引き分けとする。
  7. 勝負は1勝1点の5点先取で行う。
簡単に
  • グーを出したら勝ち負けがつくまでグーは出せません。仮に1度目であいこになったなら、2回目以降は他の手しか使えません。
  • キューを出したら引き分けになります。ただし自分が次に出す手は宣言しなければなりません。
  • 勝ち負けで点数を付けていきます。

魅力

ある程度ランダム性は絡むため負け続けるようにはなりませんが、論理的・戦略的思考力によって徐々に差が出てきます。

相手にはどの手が残っていて自分はどの手を出すと良いかを考えることは様々な分野・日常生活において役に立ちますが、このルールのじゃんけんではより単純化して学ぶことができます。

大人数でチームを組んで行うことで、コツなどを話し合うことによって「どのように考えるとよいか」を共有する、アクティブラーニングにも応用が可能です。

難点

ひと目でルールを理解することが難しく、とっつきにくさがあります。

書いてみた感想

スマホの対戦型アプリとかにすると面白そうねと思いました。技術力が足りないのでやれないんですけど……。

書き上げてから、勝ち負け以外にも手数なんかに点数を付けて何点以上で勝利とかやると面白そうねと思いました。

【.Net】VB/C#のStructureはNothingにならない

タイトルの通りで、結論から言うとStructureは値型であるためNothingにはなりません。

困った状況

Classを返す関数ではNothingを返すことができますが、同じことをStructureでやってもNothingにならないため、IsNothingなどで比較を行うとコードが誤作動します。
Exceptionを吐くようなこともなく変な実行結果になります。

テストコード

VBのコンソールアプリでのテストコードです。

Module Module1
    Structure TestStruct
        Public i As Integer

        Public Shared Function f(ByVal t As Boolean) As TestStruct
            Dim s As TestStruct
            If t Then
                s = New TestStruct
                s.i = 2
            Else
                s = Nothing
            End If
            Return s
        End Function
    End Structure

    Class TestClass
        Public i As Integer

        Public Shared Function f(ByVal t As Boolean) As TestClass
            Dim c As TestClass
            If t Then
                c = New TestClass
                c.i = 3
            Else
                c = Nothing
            End If
            Return c
        End Function
    End Class


    Sub Main()
        Dim s As TestStruct = TestStruct.f(True)
        If IsNothing(s) Then
            Console.WriteLine("Structure is nothing")
        Else
            Console.WriteLine("Structure isn't nothing:" & s.i)
        End If

        s = TestStruct.f(False)
        If IsNothing(s) Then
            Console.WriteLine("Structure is nothing")
        Else
            Console.WriteLine("Structure isn't nothing:" & s.i)
        End If

        Dim c As TestClass = TestClass.f(True)
        If IsNothing(c) Then
            Console.WriteLine("Class is nothing")
        Else
            Console.WriteLine("Class isn't nothing:" & c.i)
        End If

        c = TestClass.f(False)
        If IsNothing(c) Then
            Console.WriteLine("Class is nothing")
        Else
            Console.WriteLine("Class isn't nothing:" & c.i)
        End If

        Console.ReadKey()
    End Sub
End Module
実行結果

同じようにNothingを返した場合でもStructureはNothingになっていないことが分かります。

Structure isn't nothing:2
Structure isn't nothing:0
Class isn't nothing:3
Class is nothing

感想

これはコンパイラでエラーなりとして取ってはもらえないもんなんでしょうかね……?
Exceptionを吐くようなこともなく変な実行結果になってくれたお陰で結構振り回されました。。。

【日記】キーボードを買う計画

 突然ですが、キーボード買い換えようと思ってます。今メインで使っているキーボードはAS-KB91(茶軸)で、購入したのは確か2014年だったと思います。

www.archisite.co.jp

 これが壊れたとかではなく、研究室に持ち込んでいたサブキーボードが逝ってしまい(ジュースをこぼしてしまった……)、メインを置き換えて今使っているキーボードは研究室で使う用に回そうなかと。バイトでお金を稼いだお金も有るのでつぎ込むつもりです。

キーボードに求める条件

 自分がキーボードに求める条件は以下の3点です。

  1. テンキーレス91キー
  2. 打鍵感がメカニカル以上に気持ちいい
  3. 印字がダサくない

 1の91キーが好きなのは、キーボードを正面の画面の中央に近い位置に置きたいのと、自分がテンキーを使わないことが主な理由です(後エンターキーがデカイ方が好き)。「何でテンキーなんて存在してんの?」って位にはテンキーと0キーに割り振られたInsertキーを憎んでます。逆に少ない方も配置がアクロバットになりがちなのがダメで、91が魔法の数字です。

 打鍵感に関しては何とも言えません。ただメンブレン/パンタグラフのキーボードは使って何日間か指が痛くなる程度には打ち心地がよろしくないなと経験的に感じます。個人的にはメカニカルか静電容量無接点式がマストですね。キーボードを打っている時間が長いタイプなので、打鍵感には拘りたいです。

 ただ、リアフォは触った感じ「何か違う」と感じてしまった印象が大きく、メカニカルがほぼ唯一の選択肢になってしまっています。

 印字は主にモチベに影響します。「印字シンプルだろ!プロっぽいだろ!カッコイイだろ!」って積極的に主張したいです。ドン引かれるんでしませんけど。

良さげに感じているキーボード3種

 現在の選考ランキングです。

候補1:ProgresTouch RETRO TKL AS-KBPD91/LSBKN 

kakaku.com

 古い方と同じくARCHSISS製キーボードから選びました。

 一押しポイントは超オシャレなキートップのデザインとスピードシルバー軸でしょうか。今使っているI-T TOUCHシリーズの後継とあって、変わらぬ使用感が期待できるかなと思っています。

 難点は本製品の魅力と言っていいステップスカルプチャーで、交換キートップが使いにくいんですよね……。金属製キートップなどでEsc/WASD/←↓↑→キーを置き換えるのが見栄え的に好みなんですが、ステップスカルプチャーのせいでキートップ交換するとそこが浮いてしまうという。。。

 本製品ではスピードシルバー軸(銀軸)を採用しており、今のキーボードよりも省力かつ高速な入力が可能かなって点でも期待があります。一方で「誤爆が多くなりそうだな」という不安も有りますが……。

 静音赤軸(ピンク軸)とも迷いましたが、「打鍵感が違いそうだ、ロマンを感じる」という点でこっちを選択肢としました。

候補2:Corsair K65 RAPIDFIRE

  RGBイイね!ってことで候補としました。ただコイツ、印字が絶望的にダサいんですよね。。。何故日本語印字無しで出さなかった。。。。。。。

 数年前にTSUKUMOで買った透明ロープロRGBキーキャップを持っているので、こういったRGB系製品に着けるとカッコイイんだろうなーってのが選択肢に入れた理由です。

 RGB以外にも操作の幅を広げるメディアボタンやパームレストも魅力的なんですが、前述の通りキートップのデザインが絶望的にダサい……。。。正直何でデザイン性を損なってまで日本語キートップを用意したんだと小一時間問い詰めたい気分です。

第3候補:ロープロメカニカル系

 個人的にはロープロメカニカルがマストな選択肢です。キーストロークは浅く、キートップは古いLenovo/IBM系に近い感じが大好きです。最初に触ったキーボードがそんな感じだったってのが一番大きいんですが、薄いのは正義、キーストロークの浅さは人類の必然、って位にはロープロメカニカルが好みです。

 しかし、前回買ったときからロープロメカニカル系のキーボードをマストとして探しているんですが、中々自分の感性を揺さぶってるものが見つからず……。一応以前より選択肢は増え、今でも選択肢が無いではないんですが、テンキーが付いてたりダサかったり、これなら別のがいいかなって選択肢しか見つけられませんでした。

 なので第3候補としては具体的な製品は挙げず、ロープロメカニカル系としています。何か感性に引っかかるのが有れば迷わずロープロメカニカルを選びますね。。。

まとめ

 多分ProgresTouch RETRO TKL AS-KBPD91/LSBKNを買って2月末位にレビューをまとめられたらいいなって気分です。

追記

 結局ProgresTouch RETRO TKL AS-KBPD91/LSBKNを購入しました。明日ガッツリ使い込んでからレビュー記事を書こうと思います。

kakaku.com

追記2

書きました。

wrongwrong163377.hatenablog.com

追記3

wrongwrong163377.hatenablog.com