体験談」カテゴリーアーカイブ

「時給3500円以上!」なんて詐欺って巧妙です。詐欺体験その二[2of5]

つい最近友人が体験した話です。別記事になりますが現在就職活動中で私がハロワページの使い勝手を改善するブックマークレットやChrome拡張を作って提供したその方の体験談です。

ほどなくして雇用契約の文書が送られてきた

そうこうするうちに人事のマネージャから雇用契約に関する文書が送られてきました。どこかのテンプレートをコピーしたものでしょう。日本語にするとよくある就業規則のようなものが書かれています。また仕事の内容とかトレーニングで拘束される時間だとかが書かれた文書も別にありました。

けれども、文書は送られてきたわけではなく、会社の雇用者専用の連絡システムがあり、文書はそこからダウンロードするものでした。今思えばインタビューのときにそのシステムへログインするためのユーザIDとパスワードも仮設定されていました。

インタビューと文書双方に「いつから就業できるか」といった項目があり、雇用契約に関する文書をFAXで提出した日の一週間ほどあとの日付を設定しました。

「ああ、これでこの就活地獄から開放される」と思いました

「ああ、これでこの就活地獄から開放される」と思いました。

「これまで懸命に努力していろいろアプローチしてきた甲斐があり、やっと素晴らしいところに引っかかったのだ」と思いました。

家族に話し、両親に話して、祝福してもらいました。正味か実働がわかりませんが、30日間のトレーニングが始まると両親には会えなくなると思い、深夜バスを乗り継いで帰省して報告しました。

深夜バスを乗り継いで帰省して意気揚々と報告しました

ちょっと時間が前後しますが、深夜バスの中で会社の雇用者専用連絡システムにアクセスしてみると、メッセージがありました。トレーニング中の世話をしてくれるトレーナーからそのシステムに連絡が投稿されると、予め申請していた自分のメールアドレスに「トレーナーから重要なメッセージがありました。チェックして返答してください」とのメールが届きます。

移動中の車内からスマホでなんとかアクセスしてみると、「作業アカウントの登録書式」のような文書がUPされていました。要するに、自分の銀行のアカウントを登録してくださいということです。

これを見たとき「何で自分の個人アカウントを登録しなくちゃいけないの」というのが正直なところでした。

このアカウントを何に使うかというと、こうです。日本のクライアントの大半は現在当社に投資用のプライベートアカウントをもっているが、そうしたアカウントを持たずに気軽に投資したいクライアントが極少ないながら存在する。そうしたクライアント向けに会社が作った極東用作業アカウントを通して集約的に資金を集めるが、トレーニング中のあなたにはそうした(会社の)極東用作業アカウントを作ることができないので、トレーニング期間だけあなたの個人アカウントを使わせてもらう必要があるとのこと。

トレーニング用と称して銀行の個人アカウントを登録させられた

帰省を早めに切り上げて自宅に戻り登録書式に情報を記載してFAXしました。

本当はFAXではなくメール等で送付できるのですから自宅に戻る必要もないのですが、サインが必要な書式でもあり帰省先にはFAXもスキャナもないという環境でしたし、両親への報告はすぐに済んだので、急いで戻った次第です。

実は雇用契約の中に「完全に設備の揃った在宅勤務環境」の設置があります。これはトレーニングするための必須条件のようでした。日本支社のようなオフィスがまだないので、暫くの間、在宅勤務で業務を行う必要がありますとのこと。幸い自宅には在宅勤務に必要なものが全て揃っていましたので、「これまでこうしていろいろやってきた甲斐があった」と自分を労いました。

引き出し限度額等の情報を至急送れとの連絡が

銀行の個人アカウントに関する情報を登録書式に記載してFAXするとすぐに、「引き出し限度額の情報も送ってほしい」との連絡がありました。ATM引き出しや窓口引き出し、ワイヤートランスファーという日本ではあまり聞かない引き出し方法(?)の場合についてもそれぞて調べて送付してほしいとの連絡がトレーナーから例の雇用者連絡システムを通してありました。

(つづく>>>)

関連する記事

「輸入車割引特典あり!」なんて詐欺って巧妙です。詐欺体験その二[1of5]
「時給3500円以上!」なんて詐欺って巧妙です。詐欺体験その二[2of5]
「携帯代会社持ち!」なんて詐欺って巧妙です。詐欺体験その二[3of5]
「有給35日!」なんて詐欺って巧妙です。詐欺体験その二[4of5]
「ボーナス10%!」なんて詐欺って巧妙です。詐欺体験その二[5of5]

お世話になったリンク

最近とある経緯でスウェーデンの投資会社「Estate Capital Nordic AB」(http://www… – Yahoo!知恵袋
Estate Capital Nordic ABという、スゥエーデンの投資会社らしきところから、ロー… – Yahoo!知恵袋
トラブルに遭わないために
海外送金で法律にふれるのか教えてください。 – Yahoo!知恵袋
ウエスタンユニオン・ジャパン

「輸入車割引特典あり!」なんて詐欺って巧妙です。詐欺体験その二[1of5]

不正送金の話が12/13の日経新聞に載っていましたね。凄い金額で、4倍に激増しているとか。

つい最近友人が体験した話です。別記事になりますが現在就職活動中で私がハロワページの使い勝手を改善するブックマークレットやChrome拡張を作って提供したその方の体験談です。

とにかく巧妙でいろいろな布石が

「とにかく巧妙だ!いろいろな布石が打ってある!」

これが、今回の体験を語るときに、友人が最初にいったこと。

私より英語ができるその友人は、いつものように就活のためにパソコンに向かっていたそうです。数々の求人紹介メールの中に「あなたのその英語力を活かしてキャリアを伸ばしてみませんか?」という感じの英文メールがあったそうです。

そこには、アシスタントマネージャ(日本でいうなら主任や係長といった地位)に関するポジションについてかかれていたとのこと。そしてその最後に求職者のあせりをあおるような文面が。

In case if I do not hear from you within 3 days, I will remove your resume from our database and no further contact will be made.

「時差を考えたときの3日以内というのは実際にはどれくらいなのだろう」と、メールが発信された場所がわからないながら、ふと思いました。スウェーデンの国際投資会社のアシスタントマネージャ職だということで、あの福祉国で生活が送れないまでも、日本支店から本社にいく道もあるよな、位の考えが頭をよぎりました。

あの福祉国で生活が送れないまでも、日本支店から本社にいく道もあるよな

でも、日本支社がないんですね、これが。近日オープンする予定とか。

これから日本支社を作るのであなたにそれを手伝って欲しいということ。

もとより現在の日本はアベノミクスで世界中から投資案件が目白押しのようですので、これもその一環なのかと。うまいですね。

誰がアドバイスしたのか、いかにもありそうなトレーニングメニュー

ここでその詳細は書けませんが、友人によると、日本の顧客の東ヨーロッパへの投資を助ける業務らしい。

そして30日のトレーニングがありそのあと正社員になれる。米国の会社で働いたことがあるその友人にとってもスウェーデンは未知の国。「そういうものかもね」と思いました。

ただ、紹介されたWEBページを見ると投資先に関するリサーチがあってページの画像には女性カウンセラーのようなひとがヘルメットを被って工場内を視察しているような光景が出ています。

※このWEBページのドメインはもう使われていないようです。どこに移動したんでしょうね

そうした経験もないのにちょっと変だな

製造業出身の友人は、「自分にはそうした経験もないのにちょっと変だな」、とそのとき思いその旨相手にぶつけてみました。

でも、「私たちには世界中に採用パートナーがおり、あなたのような優秀な方を探しています」みたいな返事が来たので、

「それならいっちょう申しこんでみるか」とApplicationFormを送付すると、

「来週水曜日にインタビューがあるので待っていてほしい」とのこと。

簡単な約束さえ守れないのが怪しいのに

人事のマネージャを名乗る人から、来週水曜日中に私の部下からあなたにアクセスがありインタビューとトレーニングの内容に関する説明があるとのメールが届いていましたが、一日中待てど暮らせど連絡がない。

「そうかやっぱり一方的に連絡があり食指を伸ばしているように見えて先にはなかなか進まないんだな」

その友人には、これまでも就職版フェースブックのようなサイトを通して魅力的な求人話がありました。日本法人のマネージャとして最高2000万円の年収でどうでしょう、とか。でも、連絡しても大事な場面で無しのつぶてになってしまう。

諦めた頃の夕方に国際電話が

ところが、約束していた水曜が過ぎ木曜が過ぎ金曜になったところで夕方頃国際電話が入りました。

なんだろうと思い出てみると、スウェーデンの投資会社からのインタビューの電話です。送ったApplicationFormに関して一通りの確認があったあと、「日本支社の場所についての希望はありません?」との問いが。

「来た来た。本当に来た」とインタビューが終わって電話を切ったときこみあげてきた言葉でした。

電話を切る直前「何で夕方なんだろう」と思い、「今そちらは何時」と聞くと「朝の9時xx分です」の返事が。

それはちょうどスウェーデンの時刻でした。

でも約束が守られず、しかもその連絡もなかった。「おかしいな」と感じました。

(つづく>>>)

関連する記事

「輸入車割引特典あり!」なんて詐欺って巧妙です。詐欺体験その二[1of5]
「時給3500円以上!」なんて詐欺って巧妙です。詐欺体験その二[2of5]
「携帯代会社持ち!」なんて詐欺って巧妙です。詐欺体験その二[3of5]
「有給35日!」なんて詐欺って巧妙です。詐欺体験その二[4of5]
「ボーナス10%!」なんて詐欺って巧妙です。詐欺体験その二[5of5]

お世話になったリンク

最近とある経緯でスウェーデンの投資会社「Estate Capital Nordic AB」(http://www… – Yahoo!知恵袋
Estate Capital Nordic ABという、スゥエーデンの投資会社らしきところから、ロー… – Yahoo!知恵袋
トラブルに遭わないために
海外送金で法律にふれるのか教えてください。 – Yahoo!知恵袋
ウエスタンユニオン・ジャパン

あれ何これ!6缶セットビール詐欺。詐欺体験その一

先日あるディスカウントストアにて実際に体験した話。

そのディスカウントストアは他に比べると圧倒的にビールが安いんですよね。

なので、いつものように6缶セットのビールを買って、家に帰ってばらして冷蔵庫に入れようとしたところ、「あれ何これ!」となりました。

6缶のうち外部から非常に見えづらい真ん中の2缶が(ビールではなく)発砲酒になっていたのです。

早速そのストアに連絡して状況を伝え、翌日レシートと共に持っていくことに。勿論2缶とも正規のものに変えてもらいました

発泡酒にビールを挟んでほくそ笑んでいるものがいる

ここでハタと気づいたことがありました。逆ならどうかと。

つまり発泡酒の間にビールがあったら。一般的に言って発泡酒よりビールの方が高いです。私の買った6缶セットのうちの2缶が実は他のひとがすり替えていたものだったらと。

こういう事例は詐欺というか分かりませんが、ちょっと悪知恵の働く輩の仕業でしょうかね!

実際そうなのかは分かりません。なにかの拍子にばらけたビールや発泡酒を店員が慌てて間違えて入れてしまうこともありえないことでもありません。

関連記事

あれ何これ!6缶セットビール詐欺。詐欺体験その一
「輸入車割引特典あり!」なんて詐欺って巧妙です。詐欺体験その二

以上です。

導入から公開まで13時間!Chrome拡張機能の開発[4of6]

Chrome拡張のコードのうち、対象となるページの状態を直接読んだり変更したりできるものがコンテントスクリプトです。
だから「manifest.json」で特別に宣言するんでしょうね。

contentscript.jsのソースコード

/*
* コンテントスクリプト
*/

// パソコンに保存する情報を蓄えるオブジェクトを定義する
var condlist = {"cond":[]};

$(function(){

  var regex = /求人情報検索/;

  if (regex.test(document.body.innerText)) {
  // regexに設定した文字列が対象URL内のBodyタグ内に見つかれば、
  // バックグラウンドに通知する
    chrome.extension.sendRequest({}, function(response) {});
  } else {
  // 見つからない場合
  }


  // バックグラウンドやポップアップ等の拡張機能から
  // コンテントスクリプトへのリクエストをモニタして、
  // リクエストがきたら関数(onRequest)を実行する
  //
  // ポップアップの3種類のボタンをクリックしたとき
  // ポップアップからのリクエストを経由して呼ばれる
  chrome.extension.onRequest.addListener(onRequest);

});

function clearConditions(){
// ポップアップの「クリア」ボタンをクリックしたとき
// ポップアップからのリクエストを経由して呼ばれる
//
// パソコン内に保存していた情報を初期状態にする

  condlist = {"cond":[]};
  // condlistに溜まった情報を文字列化してパソコンに保存する。
  // これでパソコン内に保存していた情報が初期状態になる
  localStorage["condlist"] = JSON.stringify(condlist);
}

function saveConditions(){
// ポップアップの「書き出し」ボタンをクリックしたとき
// ポップアップからのリクエストを経由して呼ばれる
//
// URLページに入力された情報を一旦オブジェクトに集めてパソコン内に保存する

  // 処理前にcondlistを初期化(そうしないとどんどん溜まる)
  condlist = {"cond":[]};
  condcnt = 0;

  $("input").each(function(){
  // 「ラジオボタン」「チェックボックス」「テキスト(文字列や数字列)」
  // で設定する情報をcondlistに追加する
    str = $(this).attr("id");
    str_v = $(this).val();
    str_t = $(this).attr("type");
    if( typeof str != 'undefined' ){

	if(str_t == "radio"){
	// 「ラジオボタン」で設定する情報をcondlistに追加する
		if(typeof $(this).attr("checked") != 'undefined'){
			str_v = 1;
		}else{
			str_v = 0;
		}
		obj = {"id":str,"type":str_t,"val":str_v};
		condlist['cond'][condcnt++] = obj;

	}else if(str_t == "checkbox"){
	// 「チェックボックス」で設定する情報をcondlistに追加する
		if(typeof $(this).attr("checked") != 'undefined'){
			str_v = 1;
		}else{
			str_v = 0;
		}
		obj = {"id":str,"type":str_t,"val":str_v};
		condlist['cond'][condcnt++] = obj;

	}else if(str_t == "text"){
	// 「テキスト」で設定する情報をcondlistに追加する
		obj = {"id":str,"type":str_t,"val":str_v};
		condlist['cond'][condcnt++] = obj;

	}
    }
  });

  $("select").each(function(){
  // 「選択」で設定する情報をcondlistに追加する
    str = $(this).attr("id");
    str_v = $(this).val();
    str_t = "select";
    if( typeof str != 'undefined' ){
	obj = {"id":str,"type":str_t,"val":str_v};
        console.log("obj:"+obj);
	console.log("id="+str+" val:"+str_v+" type:"+str_t);
	condlist['cond'][condcnt++] = obj;
    }
  });

// condlistに溜まった情報を文字列化してパソコンに保存する
  localStorage["condlist"] = JSON.stringify(condlist);
}

function restoreConditions(){
// ポップアップの「読み込み」ボタンをクリックしたとき
// ポップアップからのリクエストを経由して呼ばれる
//
// パソコン内に保存されていた情報を、URLページの入力・選択フィールドに
// 設定する

  // パソコン内に保存されていた情報を、処理し易いようにオプジェクト
  // に変換してcondlistに設定する
  condlist = JSON.parse(localStorage["condlist"]);

  // まずラジオボタンやチェックボックスを全部オフしておく
  $('input').removeAttr("checked");

  // 入力・選択フィールドの種類に従い情報を設定する
  for(var i=0; i < condlist['cond'].length; i++){
    var cond = condlist['cond'][i];
    var itag = $("#"+cond.id);

    if(cond.type == "checkbox"){
      if(cond.val != 0) itag.attr("checked","checked");
    }else if(cond.type == "radio"){
      if(cond.val != 0) itag.attr("checked","checked");
    }else if(cond.type == "text"){
      itag.val(cond.val);
    }else if(cond.type == "select"){
      itag.val(cond.val);
    }
  }
}

function onRequest(request, sender, sendResponse) {
// ポップアップの3種類のボタンをクリックしたとき
// ポップアップからのリクエストを経由して呼ばれる
//
// パソコン内に保存されていた情報を、URLページの入力・選択フィールドに
// 設定する

  if(request.greeting == "restore"){
  // リクエストのメッセージ内容に従い処理を分ける
    restoreConditions();
  }else if(request.greeting == "save"){
  // リクエストのメッセージ内容に従い処理を分ける
    saveConditions();
  }else if(request.greeting == "clear"){
  // リクエストのメッセージ内容に従い処理を分ける
    clearConditions();
  }
  sendResponse({});
};

(つづく>>>)

関連する記事

導入から公開まで13時間!Chrome拡張機能の開発[1of6]
導入から公開まで13時間!Chrome拡張機能の開発[2of6]
導入から公開まで13時間!Chrome拡張機能の開発[3of6]
導入から公開まで13時間!Chrome拡張機能の開発[4of6]
導入から公開まで13時間!Chrome拡張機能の開発[5of6]
導入から公開まで13時間!Chrome拡張機能の開発[6of6]

お世話になったリンク

Chrome Extensions API リファレンス
Sample Extensions - Google Chrome Extensions
ぷりんすの開発メモ: Chrome拡張機能のマニフェストVesrsion2対応についてのメモ
ChromeExtensionを作ってみる | ぼんぼるにっき
Chrome Extension でデバッグを行う - 日頃の行い
ハローワークの「求人情報検索」ページ

導入から公開まで13時間!Chrome拡張機能の開発[6of6]

最初の記事に書いた苦労したポイントについて補足したいと思います。

苦労したポイント

  • 生のjavascriptではなく、jQueryを使えるようにするにはどうすればいい?
  • 対象ページの内容を変更する方法は?contentscriptによる方法とexecuteScriptがある?
  • backgroundを含む拡張部分とcontentscriptとはDOMを共有しないので変数や関数が互いに参照できない。その場合の通信方法はどうするの?
  • デバッグはどうすればいい?background.jsを含む拡張部分。contentscript部分。

生のjavascriptではなく、jQueryを使えるようにするにはどうすればいい?

これは「manifest.json」に明記すればよいです。例外として「popup.html」を見ていただければ分かるようにHTML中に記述しています。

対象ページの内容を変更する方法は?contentscriptによる方法とexecuteScriptがある?

「manifest.json」にcontentscriptとして宣言すれば「対象ページ」の内容を変更できます。

jQuery使いなら「contentscript.js」でもjavascriptそのものではなくjQueryを使いたいはず。その際は「manifest.json」にcontentscript宣言に「jQuery.js」等を追加してあげればよいです。「対象ページ」でjQueryが使われている場合でも版数の違いなどを気にすることなく宣言できるそうです。

バックグラウンドコードからexecuteScript関数を使って対象ページの内容を変更する方法もありますが、複雑な処理には向かないような印象でした。具体例については参照リンクを見ていただければと思います。

backgroundを含む拡張部分とcontentscriptとはDOMを共有しないので変数や関数が互いに参照できない。その場合の通信方法はどうするの?

リクエスト(メッセージ)のやりとりで実現します。拡張部分のコードとcontentscriptではリクエスト(メッセージ)のやりとりの際の引数が違います。

デバッグ方法はどうすればいい?background.jsを含む拡張部分とcontentscript部分

コンテントスクリプト部分については、対象ページを表示した状態でいつものデバッグツールを起動すればよいです。バックグラウンド部分では、Chromeの「設定」「拡張機能」画面にある「page_backgound.html」をクリックした状態でいつものデバッグツールを起動すればよいです。ポップアップ部分についてはHTMLにスナップショットを表示するdivタグを用意しておいてデバッグ内容を表示するようにすればよいような。

Chrome拡張は、作る楽しさ、使う楽しさが満載な仕組み

以上、これまで各コードについてひとつずつソースコードを提示してきましたが、各コード(ファイル)の役割は次のようになると思います。

  • background.js:ハブ的役割を持つコード。
  • popup.html, popup.js:利用者にユーザインタフェースを提供するコード。
  • contentscript.js:対象ページを処理するコード。
  • manifest.json:役割定義

Chrome拡張開発によりいろいろできそうに思いました。もちろん既に誰かが作成した便利なものを探して使うのが、もっともコストがかからない便利な方法だと思います。

でも、自分のニーズや悩みにぴったり来るものがない場合には、javascriptやHTMLなどをちょっとかじっていさえすれば、とても便利な、世界でひとつしかないブラウザ環境が手に入ります。

例えば、ページの文字が小さくてみえずらい場合には、ブラウザの機能を使って少しだけ大きな文字にすることもできますが、こうした拡張を作って好きなだけ拡大してみる。特定の英単語のみ拡大するような拡張機能も簡単に作成できます。

とにかくChrome拡張は、作る楽しさ、使う楽しさが満載な仕組みだと思います。

以上です。

関連する記事

導入から公開まで13時間!Chrome拡張機能の開発[1of6]
導入から公開まで13時間!Chrome拡張機能の開発[2of6]
導入から公開まで13時間!Chrome拡張機能の開発[3of6]
導入から公開まで13時間!Chrome拡張機能の開発[4of6]
導入から公開まで13時間!Chrome拡張機能の開発[5of6]

お世話になったリンク

Chrome Extensions API リファレンス
Sample Extensions – Google Chrome Extensions
ぷりんすの開発メモ: Chrome拡張機能のマニフェストVesrsion2対応についてのメモ
ChromeExtensionを作ってみる | ぼんぼるにっき
Chrome Extension でデバッグを行う – 日頃の行い
ハローワークの「求人情報検索」ページ

以上です。ありがとうございました。