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

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

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

 

駄目な上司の見極め方

 

 

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

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

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

 

見極めポイント

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

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

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

 

自己中

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

口だけ

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

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

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

 

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

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

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

 

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

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

 

まとめ

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

 

長い春休み(東日本大震災からの逃亡 帰還)

岡山で再出発を決意

 バンコクの友人宅に戻り、情報収集をしたところ、岡山は災害が少なく、暮らしやすいようであった。また岡山では大学のOB会の活動が活発なようであったのも、心強く感じた。

 とりあえず、関西国際空港行きの航空券を手配し、そこで落ち着いてこれからの事を考えようと思った。

ささやかな送別会

 私が二日後に日本に帰国し、岡山で再出発を図る旨を友人に告げると、近所のレストランでささやかな送別会を開催してくれた。レストランで食べる最後のチキンライスの味が舌に染み渡った。

 

感謝の気持ち

 友人には非常にお世話になったので、最終日に友人が仕事に行っている間に友人の部屋の掃除、洗濯を行い、せめてもの感謝の気持ちを行動で示した。

 

別れ

 飛行機の出発は深夜だったので、仕事から戻った友人が最寄り駅まで送ってくれた。

別れ際、最後に固い握手を交わした。友人の強い握力にこれからがんばれというエールの気持ちを感じた。

 

帰国

 深夜のタイ国際航空に乗り込んだ。日本に帰国してから再出発できるのかという不安今の会社にどうやって謝罪しようかという悩みなどが交錯し、飛行機では一睡も出来なかった。

 飛行機の椅子にモニターが無かったので、映画で気分を紛らわすことも出来なかった。あてどない不安感を抱えながら、窓から空をボーっと眺めていた。

 飛行機は早朝に関西国際空港に降り立った。パイロットの操縦が下手で、着陸後に前輪が何度かバウンドした。

 これからの私の日本での生活の前途を予見させているかの様であった。

 

 

ベンチャー企業へ就職する際の注意点

 

 

心を新たにベンチャー企業へ挑戦

 特に日系の大手企業の硬直的な制度や面倒な人間関係に嫌気がさして、ベンチャー企業に入社する人も多いことだろう。

 ベンチャー企業は、まだ設立間もないので、人間関係もフレッシュで、評価システムも公平だろうという期待を抱くであろう。

 サイバーエージェントのようにベンチャー企業から大手に躍進する姿に心を躍らせて、自分も会社と一緒に成長したいという希望もあるだろう。

ベンチャー企業の実態

 しかしながら、ベンチャー企業の10年後生存率は1割ほどであり、会社と一緒に自分が成長できるどころか、そもそも、その会社が5年後に存続しているどうかも怪しいのが実態である。成長はおろか、現状維持に腐心することの方が多い。

実はズブズブな人間関係

 ベンチャー企業の設立背景を調べると、学生時代に同じ研究室の仲間や学生団体の仲間と意気投合して設立。前職のキープレーヤーたちがスピンオフして設立。前職の業界内のつながりで、気に入った仲間を引き抜いて設立。大体が、こんな感じである。

 大抵のベンチャー企業は、設立時に主要な役職の人間関係が既に出来上がっている状態である事が多い。 

 つまり、中途でその会社に入社しても、中核人事の人間関係は既に出来上がっており、そこで出世するのは、中途採用では実力があっても意外と難しいかもしれない。

 社長も人間である以上、採用時には完全実力主義と謳っていても、共同で会社を立ち上げた古参メンバーをどうしても贔屓してしまいがちになる。むしろ評価の不透明性は大企業より大きいかもしれない。特に社長秘書などは、業務能力など度外視で、男性社長が気に入った女の子を採用するなんて、ザラである。

 また、社長の側近のナンバー2は社長の機嫌を損ねないように常にヨイショしなければならず、気苦労が絶えない。テレビドラマのように膝を突き合わせて、熱く意見を交わすことなど不可能に近い。ナンバー2は社長のイエスマンにひたすら徹するのだ。

福利厚生は絵に描いた餅

 ベンチャー企業ありがちで、今は未整備だけど、二~三年後には~の福利厚生を整備する予定だと面接時に聞かされるが、現在整備されていない福利厚生はこれからも整備されない可能性が非常に強い。

 特にベンチャーはスケールアップが第一優先なので、内部留保を既存社員に還元せずに新たな社員の採用や新たな事業所の設立に回しがちである。

 

会社のキーマンに気に入られるかどうか

 つまるところ、創業時に会社のキーマンに気にいられて、中核メンバーになり、おいしいポジションをGetできるかが、ベンチャーで成功できるかどうかの運命を決めると言っても過言ではない。上記の様にむしろ大手よりも実力主義ではない部分も多い。

 

まとめ

 SNSなどでは、スタートアップに入社して、会社と一緒に成長などと言ったきらびやかな言葉が並ぶが、実情は以上で述べた通りである。

 完全実力主義のフラットな環境を真に望むのであれば、小規模でも良いので自分でビジネスを立ち上げる事が近道である。

 現在は個人投資家として株の売買をしたり、ウーバーイーツをしたり、アニメのグッズを高値で転売するなどして儲けている人は数多くいる。

ウーバーイーツ日焼け対策(サンバイザー)

過酷な直射日光

 夏の配達で一番にネックになるのが、紫外線対策です。多くの人は日焼け止めクリームを塗ったり、ドライメッシュの長袖を着て、対策を立てています。

 しかし、肝心の目や顔の紫外線対策はおざなりになっていないでしょうか?

サンバイザーで一石二鳥

 私は当初、眼鏡の上にサングラスをかけて、顔に日焼け止めを塗りたくってました。しかし、眼鏡の上からのサングラスは、ずれやすい。顔に塗った日焼け止めクリームが、汗と混ざってベトベトニなり、気持ち悪くなるという理由で、数回試して断念。

 ちょうどその時、自転車に乗ったおばちゃんが、サンバイザーを装着していたのを目にしました。ちょっとカッコ悪いかもしれないけど、これだと思い立ち、さっそくサンバイザーを購入。(1800円)

最近のサンバイザーはおしゃれでスタイリッシュなブルーの色のものもあり、一昔前のサンバイザー=おばちゃんという図式は大分無くなった印象です。

快適すぎる

 サンバイザーのおかげで、日焼け止めを顔に塗る手間も、汗と混じる気持ち悪さからも解放されました。そして、何より紫外線から顔全体を守ってくれるので非常に快適です。紫外線による目の疲れも全くなく、サングラスと同等の効果だと感じました。

逆光に注意

 ただ一点だけ、注視しなくてはならないのは逆光が強いときに若干視界が悪くなるので、交差点進入時の逆光には要注意です。しっかりと視界に気を配りましょう。

まとめ

 2000円弱で、紫外線から目と顔を保護出来て非常にお得です。特に目は紫外線に長期間さらされると将来的に緑内障に罹患するリスクもあるので、しっかりと保護しましょう。価格が安いので、ダメもとで一度試してみることをお勧めします。

 特に何も対策してこなかった人が装着すると目の疲労感が圧倒的に軽減されること間違いなしです。