スマート駄目リーマンの忘備録

旅行記、キャリア論、世相分析など思ったことを書き連ねます

VB.netのFormデザイン画面を編集出来ない時の解決方法

 

 

 

Formデザイン画面が無い

 複数人の共同開発で、VBのFormアプリケーションを組み込む時に、受領したFormアプリのデザイン画面が起動しないトラブルが稀にあります。

 Formのコードをコピーして、スタートボタンを押すと下記のようにFormアプリは起動するのですが、この画面をデザイン画面で編集出来ません。非常に困ります。

右クリック→デザイナーの表示

 From1.vbの右クリック→デザイナーの表示で解決することが多いです。

それでも駄目なら

→新しくFormアプリケーションを作り直す

 上記の様な場合は新しくFormアプリケーションを作り直すのが得策です。

rucio.o.oo7.jp

 

 上記のリンクに従ってFormアプリケーションを作り直した後に移植元のプロジェクトフォルダ内のFom1.vbとForm1.Designer.vbを新しいフォームアプリケーションのプロジェクトフォルダ内のFom1.vbとForm1.Designer.vbにコピペで上書きします。

 そうすることで、Form画面を完全に再現出来ます。その上で、今までのプログラムを追加で実装した方が、結果的に速い場合が多いです。

 

 

日本で成果主義が進まない理由

 

 

成果主義

 日本でもグローバル競争に打ち勝つために2000年代から謳われ出した成果主義年功序列ではなく、成果によって等級や給与を定めて、社内に健全な競争を生み出し、企業の底上げを目指しました。

2020年代でも、いまいち浸透していない

 上記のスローガンのもと成果主義が推進されてきましたが、20年後の2020年代の今現在どうでしょうか?率直に言って、それほど浸透していないのが実情ではないでしょうか?(一部の外資系企業や証券会社などを除く)

 

明治維新、太平洋戦争の敗戦などの大事件が起きない限り変わらない

 私の見立てでは、成果主義が謳われても、日本の中小企業を含めた末端まで日本で成果主義が浸透することは、よほどの天変地異が起きない限り、おそらく無いだろうと思います。

 つまり、高齢の既得権益者が物理的に排除されるという外的なパワープレイが無いと基本的に無理という事です。

 

なぜ欧米では成果主義が浸透しているのか

 それでは、同じ人間なのに何故欧米では成果主義が浸透しているのでしょうか?元来、欧米では、移民が一般的で社会の中に多民族が混在していることが一般的でした。そうした他民族の人たちが一緒に働くには、分かりやすいルールが必要です。(他民族間ではお互い分かり合えない事が大前提にあるのです。)

 また、アメリカは訴訟社会なので、成果に対して適切な対価が支払われないと、すぐに裁判沙汰に発展します。

 こうしたことから、導入されたのが数字や成果物による評価です。これであれば、人種や民族に関わらず、公平な評価が可能です。

 

日本は単一民族が大前提

 翻って、日本では単一民族が大前提にあります。つまり、お互いが一応分かり合えているよねという前提で、仕事が進みます。だからこそ、日本には就職時に職務契約書(job description)など有ってないようなもので、会社の為ならば、様々な仕事をさせられます。当然ながら、仕事の評価基準も曖昧になってしまいます。

 1990年代まで暗黙の了解で存在していた終身雇用制度も別に書面で正式に謳われたものでは無いにも関わらず、企業はそれを労働者に保証していたし、労働者もそれを信じていました。

 また、日本人は農耕民族なので、自分の獲物だけ確保出来ればそれで良しとは行きません。大きな獲物をしとめたならば、それをコミュニティ全体で分かち合わないと村八分にされてしまいます。そうなると獲物をしとめた一番の功労者は、大しておいしい思いを出来ずに終わります。

 しかし、コミュニティの力が強固だった為に、おいしい思いにあずかれなかった功労者は、今度、別の者が獲物をしとめた際に、そのおこぼれを拝受することが可能でした。こうして、コミュニの絆は安定的に維持されてきたのでした。バブル崩壊までは・・・。

 

バブル崩壊で相互扶助も崩壊

 1990年代のバブル崩壊で、日本が弱体化しつつある中で、過去に獲物を分け与えた功労者は、別の功労者のおこぼれにあやかれるチャンスが激減します。

 そうなるとどうでしょうか?それじゃ、俺はコミュニティを出て行って、自分一人で狩りをして、獲物を独り占めしてやるという人が現れてきます。コミュニティも弱体化しつつある中で、弱い人たちの面倒を見ることも出来なくなってきます。

 しかしながら、過去に獲物を獲得できた強者も現在は獲物を獲得できる力が衰えると、コミュニティにしがみつき、過去にコミュニティに提供した対価を得ようとします。

まとめ

 日本で成果主義が進まない理由は、以下の通りとなります。

①分かり合えていることが大前提の社会で、ルールを明示しなかったこと。

②農耕民族のために、一人だけ得をすれば良しという観念が浸透しにくかったこと。

③暗黙の了解で、獲物を提供していた功労者に終身雇用という見返りがあった事。一部の強者を除き、過去の功労者の多くが、過去の見返りを得ようとして、コミュニティにしがみついている事。

 

 

 

 

 

 

 

ドイツワールドカップ観戦記(ミュンヘン)

フランクフルト→ミュンヘン

 フランス対ブラジルを観戦後はICEの夜行に乗って、フランクフルトからミュンヘンを目指した。夜にも関わらず、隣の席に座ったイギリス人サポーターとサッカー談義に花が咲いた。

 「ブラジル強かったのに、それ以上にフランスがしっかりブラジルのロナウジーニョを抑えたな。フランスの守備はすごかった。日本はブラジルから完璧な崩しで一点取れたのは称賛に価するよ。」

そう言って、イギリス人サポーターは日本代表の頑張りを労ってくれた。

 ミュンヘンでは準決勝を観戦予定だが、試合まで五日ほどの余裕があり、ミュンヘンやその周辺の観光スポットを巡ることにした。

早朝のミュンヘン

 早朝に夜行列車でミュンヘンに到着。しかしながら店はまだどこも閉まっている。仕方なしにミュンヘンのイギリス様式庭園を散策することにした。

 公演はまだ早朝の為、誰もおらず、静寂が支配していた。朝日に照らされた芝生のほのかな照り返しが、秀麗であった。

ガルミッシュパルテンキルヘン

 ミュンヘンからほど近い山岳避暑地、ガルミッシュパルテンキルヘンを訪れた。電車とケーブルカーを乗りいで、山頂付近に到達した。しかし、本当の山頂は梯子とゴツゴツとした岩肌を登った先にある。岩肌にはチェーンの柵が設置されているが、そこから先は切り立った崖であった。足をブルブル震わせながら、十字架のある山頂に辿り着いた。真下の写真は本当の山頂から、山小屋を撮影した写真である。

 現地で出会ったSEをやっている日本人は、岩肌をモノともせずにスイスイと登って行く姿には驚嘆した。

 

キームゼー湖

 ミュンヘンから列車と小型船を乗り継ぎ、キームゼ―湖の島の宮殿を訪れた。市内を走るレトロなチンチン電車が、美しい市内をさっそうと駆け抜けた。頬をかすめる風が心地よかった。

ベルサイユ宮殿を参考に建築されたらしいが、本家のベルサイユ宮殿を見たことが無いので、何とも言えなかったが、美しいことに異論は無かった。

 湖畔から島への船での移動中に知り合った日本人のドイツ駐在員の奥様と一緒に島を巡り、駐在生活やドイツ人の考え方などの話題で話が弾んだ。

ドイツ博物館

 ミュンヘン市内ではドイツ博物館を堪能した。博物館に向かうまでの道が美しく、周囲を散歩しているだけで、ウキウキしてきた。

 博物館は壮大で、内容も充実しており、非常に見応えがあった。とてもじゃないが一日で見切れない。一つのテーマに対して、発端から歴史まで全てが展示されている四次元スペクタルな展示に驚愕。
 例えばコンピューターというテーマならば、簡単な論理回路真空管トランジスタ→パンチ穴式という経緯を全て網羅してあった。資源探索のテーマでは、実際の採掘現場を現物代のジオラマで再現しており、迫力が半端なかった。

 ミュンヘン市内で訪れるべきNo1観光地であると声を大にして訴えたい。人類の英知を詰め込んだ世界でも指折りの博物館だろう。

資源採掘の展示

蒸気機関

航空機はエンジンだけでも展示がてんこ盛り

まとめ

 ミュンヘンとその周辺は自然と文化施設の両方とも充実しており、誰でもが楽しめる観光スポットである。ドイツを訪れたら、ミュンヘンだけは絶対に外さないことを切にお勧めしたい。

 

reCAPCHAを簡単に実装したい

お問い合わせフォームの攻撃対策

 企業の情報システム担当者さんを悩ます、お問い合わせフォームへの攻撃(意味不明な単語を機械で打ち込んで、何度も送信)

→まともなお問い合わせが、攻撃に埋もれてしまい、非常に厄介です。

Googleのロボット/人間判定プログラムで、攻撃をブロック

 ついこの間までは、下記のようにイラストを選択して、送信することで、人間と機械を見分けていました。

難易度が高い

 しかし、上記の写真判定って分かりにくいし、人間でも間違えちゃいますよね。しかもお問い合わせフォームで間違えると、せっかく自社に興味を持っていただいたのが、台無しになることも。(写真判定が面倒だから、問い合わせもいいやって、諦められちゃうことも)

最新版

 最新版では、こうした煩雑な判定動作が無くなり、フォームに文字を入力する時間間隔やパターン認識で、ロボットか人間かを判定することが出来るようになりました。これによって、フォーム入力者のストレスが一気に軽減されました。

自社サイトのお問い合わせフォームにも設置

 こうして、いざ設置という段になりますが、きちんと動作させるためにはフロントエンドとバックエンドの両方の知識が必要です。特に中小企業の一人情シスの方の頭を意外と悩ませます。

 かくいう私も、メイン業務と並行で自社の一人情シスを担っているのですが、実装までに四苦八苦しました。今回は四苦八苦した結果を踏まえて、一人情報シスの方になるべく分かりやすく実装方法を伝授したいと思います。

Googleアカウントの取得

 とりあえず、Googleアカウントを保持していないと何も始まりません。アカウントを持っていない人は下記のサイトを参考にアカウントを取得して下さい。
gmotech.jp

ドメインの取得

 自社サイトでは、おそらくドメインを取得していると思いますが、ドメインが無い場合にはドメインの取得が必要です。

blog-bootcamp.jp

Google recapcha管理画面でサイトキーとシークレットキーを取得

 Google reCAPCHA管理画面にアクセスして、Googleからサイトキーとシークレットキーを入手して、ページに埋め込む必要があります。それについては下記のサイトの(1)の項目を参照して下さい。

 入手したサイトキーとシークレットキーはメモ帳にコピペして、大切に保存して下さい。

office-obata.com

お問い合わせフォーム(フロントエンド)に実装

項目最後にフロントエンドのコード全文を掲載しているので、必要な部分をコピペして下さい。

 

ヘッダー

 まずはヘッダーと言われる部分

<head></head>

<script src="https://www.google.com/recaptcha/api.js"></script>

を追記します。
(下記の赤枠部分 7行目)

フォームメソッド

 idを追記します。ここでは、id="myform"としました。(下記の赤枠24行目)

送信ボタン

 フォームメソッドでid="myform"と設定した人は下記43行目~53行目までを丸ごとコピペします。44行目のdata-sitekeyを各自が入手したサイトキーに書き換えて下さい。ここではダミーのaaaaaaaaaaaaaaaaaaaaaaaを入力しています。

 また、idを別の名前で設定した人は、51行目の"myform"を各自で設定した名前に書き換えて下さい。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>セミナー申し込み</title>
<link rel="stylesheet" href="css/style.css">
<script src="https://www.google.com/recaptcha/api.js"></script>
</head>
<body>

<div class="wrapper">
    <header class="header">

        <nav class="nav">
            <ul>
                <li><img src="../_img/Logo_A.png"   alt="company"width="25%"  height="auto"  min-width="10%"></a></li>
            </ul>
        </nav>
    

    </header>


<form method="post" action="seminar_apply_check5.php" id="myform">
会社名の入力をお願いします。(必須)<br/>
<input name="company_name" type="text" required style="width:200px" ><br/>
部署名の入力をお願いします。<br/>
<input name="company_department" type="text" required style="width:100px"><br/>
お名前の入力をお願いします。(必須)<br/>
<input name="nick_name" type="text" required style="width:100px"><br/>
メールアドレスの入力をお願いします。(必須)<br/>
<input name="email" type="text" required style="width:200px"><br/>
電話番号の入力をお願いします。(必須)<br/>
<input name="tel" type="text" required style="width:200px"><br/>
ご住所をの入力をお願いします。(必須)<br/>
<input name="address" type="text" required style="width:200px"><br/>




<br/>

<button class="g-recaptcha"
        data-sitekey="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
        data-callback='onSubmit'
    style="width:100px;height:50px"
        data-action='submit'>送信</button>

<script>
   function onSubmit(token) {
     document.getElementById("myform").submit();
   }
 </script>


<br/>

</form>

    <footer class="footer">
     <p>All Right Reserved.</p>
    </footer>


</div>


</body>
</html>

バックエンドに実装

 php文の冒頭に以下のコードをコピペして下さい。bbbbbbbbbbbbbbbbbbbはダミーなので各自で入手したシークレットキーに書き換えて下さい。


$recap_response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb&response=' . $_POST['g-recaptcha-response']);

$recap_response = json_decode($recap_response);

判定の結果、ロボットでは無い場合(if($recap_response->success == true))の処理の処理とそうでない場合の処理を以下のif分をコピペして、それぞれ記載して下さい。

if($recap_response->success == true)

{

// 判定がOKの場合の処理を記載

}

else

{ 

//判定がNGの場合の処理を記載

}

まとめ

 うまく実装出来れば、下記の絵がサイトの右下に表示されるはずです。今回0から1の間のスコアで、0.5より大きければ人間(true)、それより小さければロボットと判定(false)しています。もちろんスコアの閾値を調整して、判定条件を厳しくすることも可能です。興味がある人は他の資料やサイトを調べてみてください。


ドイツワールドカップ観戦記(フランス対ブラジル)

 

 

スペインの敗退

 スペインの敗退により、私が保持していたスペインの準決勝まで追いかけて見れるチケットはスペインに勝利したフランスを追いかけることになった。

 よって、次の試合はガーナに勝利したブラジル対フランスを観戦することとなった。

 

フランクフルトへ移動

 フランクフルトへ移動し、ユースホステルに滞在することになった。しかし、そこのユースホステルでの生活は最悪だった。私が宿泊した八人部屋にはスペイン人グループが同席していたが、彼らは夜中に酔っ払って、騒ぎ立て、一睡も出来なかった。おまけに私に枕を投げつけてくる始末。

 これまでのドイツの旅が、かなり楽しかったのに、その楽しい思い出に一寸の曇りが差し込み、暗澹たる気持ちになった。

フランス対ブラジル

 ドイツワールドカップは、ロナウジーニョの大会になるだろうとの下馬評が高かった。当然、彼が試合で、高度なスキルをいかんなく発揮してフランスに勝利するだろうと多くの人が思っていただろう。

 しかしながら、そうは問屋は降ろさなかった。ブラジルは、ロナウジーニョにボールを集めて試合を組み立てようとするも、フランスのボランチの寄せが非常に速く、プラン通りに試合運びが出来ず、手をこまねいていた。

 ブラジルが攻めあぐねていた一方で、ジダンが光り輝いていた。中盤のプレスがきつめの場所でもモモのリフティングで華麗に相手をかわすなど、ワールドカップ準決勝の緊迫感とは対照的なエンターテイメントに満ちたプレーを披露してくれた。

 前半を0対0で折り返した。両者セットプレーのチャンスがありながら、決めきれない流れが続いたが、アンリのダイレクトボレーシュートが均衡を破った。そしてフランスはそのまま逃げ切り、1-0でブラジルに勝利。

 

youtu.be

 

If文の不等式の落とし穴(VB.NET)

 

 

範囲の判定と条件分岐

 変数を取得した際に特定の範囲内とそれ以外で、条件分岐を行うことは度々あります。

 例えば変数vが0.05から0.15の範囲内であれば、範囲内と判定。それ以外を範囲外とする簡単なプログラムを作成します。

初級者の落とし穴

 おそらく初級者は下記のように書いてしまうと思います。場合によっては数値の判定に慣れていない中級者も同様のミスを犯すかもしれません。

 しかもこれ、デバックで引っかからないので、ミスに気付けません。

 このプログラム、何が駄目か分かりますか?下の赤枠部分が間違いです。数学的な表記では正しいのですが、プログラム的にはNGです。

正しい表記

 And条件で表記しないと、プログラム上では正しく認識して貰えません。意識しないと意外とハマる落とし穴なので、注意が必要です。

 

駄目な上司の見極め方

上司との付き合いは避けられない

 サラリーマンであるならば、上司との付き合いは絶対に避けられません。上司と意気投合して、スムーズに仕事を進められれば理想ですが、現実は厳しいです。

 ここでは、駄目な上司の見極めポイントを列挙してみたいと思います。

 

見極めポイント

感情のコントロールが出来ない

 普段は穏やかで優しい人でも、自分の思い通りに行かないとキレる人は要注意です。普段は良い人なので、パワハラをしていても、それが顕在化しにくく、問題が長引く可能性があります。

 具体的に一緒に車に乗った時に、別の車の運転手にキレる人や、アクセルを強く踏み込むような人は要注意です。

自己中

 これは非常に分かりやすく、自分からかけた電話に出ないと怒るくせに、相手から電話がかかっていて、出れなくても気にしない人は十中八九自己中ですね。

口だけ

 営業が設定した無茶な納期で、開発現場が疲弊している時に、当時の課長は納期を調整するように営業部長に言っておくわと威勢よく口にしました。

 しかし、待てど暮らせど納期の変更はありません。その課長が出席していた会議に同席していた開発部員によると、その課長は会議で何も発言せずに隅っこでシコシコとメモ取っていただけだったよと証言していました。つまり、口だけ。

 それならば、俺の力が至らず、君たちに負担をかけてすまないと正直謝ってくれた方がどれだけ良かったか。期待した分、落胆は大きかったです。

部下がやるべき仕事をしている(マネジメントから逃げている)

 製品の出荷検査で不具合が見つかり、予定通り製品を出荷出来ない事がありました。当該部署の課長ならば、真っ先に営業からの矢面に立って説明を行い、開発部に対しては再出荷に向けた陣頭指揮をとらなければならない筈です。

 しかし、当時の課長は部下に紛れて不具合製品の手直し作業をコソコソ行い、説明責任、陣頭指揮責任を完全に放棄していました。 

 

取引先やお客様への謝罪を部下に押し付ける

 これもアルアルで、不祥事の責任を取って謝罪をするのは管理職の筈なのですが、それを部下に押し付けるズルい人が一定数いるんですよね。しかもあたかも部下の責任で不祥事が生じたように取り繕って、部下の責任感を煽るとか本当に最低の上司がいましたね。

まとめ

 正直、上司や管理職に優れた人間性を期待すると裏切られますよ。部下は上司を勝手に慕っているかもしれませんが、上司なんて部下を都合よく利用して、自分が得する事しか考えていない事がほとんどです。