2014年11月26日水曜日

定数を配列の要素とした場合の事象

現場でSASプログラム開発中にハマった事象を紹介します。
定数を配列の要素とした場合に発生します。


複数の変数に対して同じ処理を行う場合にARRAYステートメントで配列を定義し、DOステートメントで繰り返し処理をする場面がよくあります。
多くの場合では①のように変数を配列の要素として定義するのではないでしょうか。


data test1 ;
  array yyyymm(6) yyyymm1 yyyymm2 yyyymm3 yyyymm4 yyyymm5 yyyymm6 ;
  set test0 ;
  /* 日付変数を初期化 */
  do i = 1 to 6 ;
    yyyymm(i) = 0 ;
  end ;
run ;


しかし今回のプログラムでは②のようにマクロ変数で設定した定数を配列の要素として定義しました。


/* マクロ変数作成 */
%let yyyymm1 = 201404 ;
%let yyyymm2 = 201405 ;
%let yyyymm3 = 201406 ;
%let yyyymm4 = 201407 ;
%let yyyymm5 = 201408 ;
%let yyyymm6 = 201409 ;

/* データセット更新 */
data test1 ;
  set test0 ;
  array yyyymm(6)(&yyyymm1 &yyyymm2 &yyyymm3 &yyyymm4 &yyyymm5 &yyyymm6) ;
  tuki1 = yyyymm(1) ;
  tuki2 = yyyymm(2) ;
  tuki3 = yyyymm(3) ;
  tuki4 = yyyymm(4) ;
  tuki5 = yyyymm(5) ;
  tuki6 = yyyymm(6) ;
run ;

①ではSAS変数が配列の要素として定義されます。
しかし②では定数を配列の要素としています。変数の指定はされていませんがどうなるでしょうか?

この場合は配列名である「yyyymm」 に 「連番」を付与した変数が自動生成されます。
つまりyyyymm1~yyyymm6という変数が自動で作成されるのです。

たとえばデータセットtest0にyyyymm3という変数を元々持っている場合に
②を実行すると、データセットtest0の変数yyyymm3がARRAYに定数を定義したときに自動生成されたyyyymm3で上書きされてしまいます。
マクロ変数yyyymm3に設定している201406に更新されます。

現場で不具合が発生したときも、もともとのデータセットにyyyymm3という変数を持っていたところに、配列yyyymmの要素に定数をセットしたため変数yyyymm3が生成され想定していない更新が発生しました。

ARRAYに定数を設定したときに変数が自動生成されてもログにメッセージも出力されませんので、
ARRAYに定数を設定すると配列名+連番で変数が生成されることを認識していないと思わぬ更新がされることになります。

現場のメンバーも認識している人は少なかったので今回の事象を紹介させていただきました。
定数を配列の要素とする場合は注意しましょう。


2014年10月30日木曜日

【求人情報】 2015年1月入社 SASエンジニア / 採用担当者




木々の葉も美しく色づき、すっかり秋も深まってまいりました。
ハロウィンでの仮装(コスプレ)では、皆さん何に変身される予定ですか? (笑)






さて、ネイチャーインサイトでは、2014年最後の求人募集をスタートしました。

益々注目の集まる「ビッグデータ」・「ビジネスアナリティクス」の分野。
今後の需要拡大に向けて、積極的に採用活動をしてまいります。

当社では、新たな挑戦を一緒に目指す仲間を求めております。


DODA求人広告(下記のリンク)より、是非ご応募をお待ちしております。


「未経験からはじめるSASエンジニア」

「新卒・中途採用担当」

2014年9月28日日曜日

選んできた延長線上にある今

 仕事で統計の知識を問われ、乏しい知識を披露した時「学生の時もう少し数学の勉強をしていたら・・・」と思った。頭に浮かんだその思いを更に吟味して気付いた。あの時○○していたらという言葉は、自分の場合ちょっとした必要性は感じているが、特にやりたいわけではないことに関して出てくる言葉だと。
 本当に必要なことであれば、今すぐ獲得するための行動を起こせば良いだけだ(ちなみにだからすぐに始めましょうという話ではない)。

 
 エンジニアとして向き不向きはあるが、必要な基礎知識は仕事を続けさえすれば身に付いてくる。あとはそこに何を加えたら仕事に満足を感じられるかが大事だと思う。そのヒントは自分がこれまで選んできたことにある。
 自分が得意としてきたことは何か?時間を忘れてのめり込んだことは?一見仕事と結び付かないようなことが、ある時大きなアドバンテージになったりする。

 これまでの選択の中で今の自分を作ったといえるものは何ですか?

2014年9月10日水曜日

無料で SAS を使ってみよう

今年6月の話ですが、SAS Institute 社 (以下、SAS社) が 無料で使える 「SAS® University Edition」 を提供しました。Windows、OS X、Linux 上で動作します (ただし64bit版のみ)。
参考: SAS、高等教育や社会人学習向けにソフトウェアを無償提供
本日は、この SAS University Edition の
  • Ubuntu でのインストールから起動まで
  • 実際の使用時の特徴・注意点、例えば libname のパスの書き方など
  • について書きたいと思います。
導入の手順は丁寧に書いたつもりですが、SASの詳しい使い方についてはここでは書きません (SASの使用法については、公式ドキュメントなど情報が豊富にあります)。ある程度 SAS の使用法を知っていることを前提とした上での注意点を書いています。なお、SAS Studio はブラウザ上で動かすので、起動後の操作方法はどのOSでもほとんど変わらないようです。そのため、後半は Windows ユーザの方でも参考になると思います。

「University」と銘打っているので、一見すると学生しか使えないのかと思われるかもしれませんが、実際には学生の身分でなくても利用が可能です。使用できる機能は, SAS® Software for Academiaで確認できます。

もう少しちゃんと利用規約を確認してみましょう。 利用規約 (2014年7月14日版) は英語でしかも長いですが、無断複製するなとか、ソフトの著作権を守りなさいとか、大半は常識的なルールの記述です。 つまり、利用するにあたって特に注意すべき制約は
  • 商用利用は禁止。個人的な利用か学術目的のみ可能。
  • 学生・社会人不問 (ただし18歳以上でないと使用できない)。
  • 少なくとも2015年7月31日までこの規約は有効。
の3点ですね。 業務で使用するのではなく、個人的に使用方法を学習するのであれば問題ないはずです (そしてもちろん私は18歳以上です)。

なんらかの統計解析パッケージを使用した経験のある方は、SPSS、R など (あるいはややマイナーですが、Eviews、STATA、Gretl というものもありますね。) と比較して、SAS は「個人利用するには高い」と印象を持たれている方も多いと思います。しかしこれで汚名返上です。 R と同じくらい敷居が下がりました。タダです。 タダ。これは SAS の理解を深める絶好の機会ですね。

というわけで導入方法を紹介します。導入方法はもちろん公式サイトで説明されていますが、現時点でほとんど英語です。

参考: SAS® University Edition

そこで、ここでは英語を読むのが煩わしいという方向けに日本語で解説します。 とはいえ、実は Windows についてはなんと動画で説明してくださってる方がいます。

埋め込み動画がうまく表示されない場合はこちら

こちらのブログでも文章で簡単に紹介されています > SAS University Edition - ついにSASが無料で利用できる時代に -

しかし、私の愛用している OS は Ubuntu (Linux) なので、ここでは Linux での導入方法を画像を交えて紹介したいと思います (実際のところそこまで大きな違いはありませんが……)。

ダウンロード

SAS University Edition には、SAS の仮想イメージファイル以外に、それを起動させる仮想化ソフトが必要です。 今回はやはり無料で使用できる Oracle VM VirtualBox (以下 VirtualBox) を利用します。 バージョンは 4.3.12 であることが望ましいようです (私は 4.3.14 r95030 で動かしました)。 こちらも Oracle 社のサイトからダウンロードし、インストールしておきましょう(.deb ファイルからのインストール方法はわかりますよね? sudo dpkg -i ... です。)。

次に、SAS 社のダウンロードサイト
Free Statistical Software, SAS University Edition
へアクセスしましょう。

このボタンから次のページの 「Get Download」を押します。今回は VirtualBox を使用して起動するので、「SAS® University Edition for VirtualBox」 と書かれてる真下の「Get Download」 ボタンを押します。
この次のページでユーザ登録が必要です。右の 「Create」ボタンでアカウントを作成しましょう。言語、氏名、メールアドレス、所属、国籍が必須記入項目です。
アカウント登録が終わると、利用規約が表示されます。 これは先に説明したところです (ひょっとしたら私が最後に読んだ時と規約が変わっているかもしれませんのでできる限りご自分でも確認された方が良いです。)。

利用規約に同意し、ダウンロードします。 注文ボタンを押してからダウンロード可能になるまで少し時間がかかり、その前にダウンロードしようとしてもエラーが発生します。 ダウンロード可能になるとメールで通知が来るのでのんびりと待ちましょう。ダウンロードファイルの拡張子は .ova です。

インストールと設定

仮想イメージのダウンロードが終わったら、VirtualBox を起動します。
メニューバーの「ファイル」から「仮想アプライアンスのインポート」を選びます。現れたウィンドウに、先ほどダウンロードした .ova ファイルをインポートするよう入力します。
それ以降の設定は基本的に変更する必要はないと思いますが、以下が正しく設定されているかは確認しましょう。 インポート中か、もしくはインポート完了後に「設定」ボタンを押して設定を確認します。

  • 「システム」では
    • メインメモリは最低 1GB (1024MB)、最高で「物理メモリの半分未満」でなければなりません。 特にこだわりがないなら 1GB で十分でしょう。
    • 「プロセッサ数」は変更できません。
  • 「共有フォルダ」は、仮想マシンに割り当てる記憶領域です。
  • 適当なところに
    "SAS"
    というフォルダを作成し、さらにその直下に
    "myfolders"
    というフォルダを作成します。 このフォルダ名は大文字小文字を区別します。 公式のチュートリアルでは、"SASUniversityEdition" の下に "myfolders" を作成するよう書かれていますが、親フォルダは別にどんな名前でもいいようです。 "myfolders" のみ一致すれば問題なく動きます。

これを共有フォルダに設定します。 設定ウィンドウだと、「共有フォルダ」を選択するとウィンドウ右端に共有フォルダを追加するアイコンがあります。 さきほどの "myfolders" を設定し、さらに
  • 「自動マウント」にチェックを入れ
  • 「読み込み専用専用」にチェックを入れない
ことを確認します。 共有フォルダは複数追加できますが、以上の "myfolders" は必須です。 また、自動マウント・読み込み専用の設定も同じです。

ところで、私は Windows とマルチブートできるようにしているのですが、共用したいファイルを FAT32 のパーティションに入れています。 この際に注意なのですが、FAT32 のファイルシステムをそのまま使おうとするとうまくいかないので、 Ext4にしておきましょう。

起動

以上の設定が終われば、「起動」ボタンを押して起動します。 起動にはやや時間がかかります。
静止画ではわかりにくいですが、Throbber (読み込み時のアニメーション) が円ではなく「∞」を描くように回っています。

しばらくすると下のような画面がでます。
この状態で、ウィンドウを閉じずに、新たにウェブブラウザを起動します。ブラウザは Google Chrome または Mozilla FireFox のみ対応と書かれていますが、私はこっそり SRWare Iron (Ver. 35.0.1900.0) を使いましたが、問題なく動きました。 Chromium 系なら問題なく動きそうです。

ブラウザから、http://localhost:10080 にアクセスします。
「SAS Studio を始める」 を押して SAS を開始します。
読み込みが終わるとこのような画像が現れます。
では簡単な動作確認をしてみましょう。
サブミットすると……
無事、エラーもなく put ステートメントで「NI BLOG!」と表示されました。
これで SAS が私物の PC でも使えるようになりました!

とはいえ、これで終わりにするのも物足りないので、この環境での使用法の特徴・注意点についていくつか書いておきます。

SAS Studio の特徴・注意点

データセットやカタログファイル、.sas ファイルの保存について

ご存知の通り、work ライブラリはセッションごとにリセットされるのでデータセット等の保存はできません。 ユーザライブラリに指定できるフォルダは、最初に作成した myfolders 内だけです。 その際、
libname ライブラリ名 '/folders/myfolders/フォルダ名';
のように指定します ("myfolders" そのものでも可能です)。
ここでは "testlib" と言うフォルダを myfolders 直下にあらかじめ作成しておきました。

libname testlib '/folders/myfolders/testlib';
data testlib.data1;
 var ='test';
run;

を実行してみます。testlib フォルダに "data1.sas7bdat" ファイルが保存されるはずです。
エラーもなかったので、フォルダを確認したところ、たしかにファイルが作られています
再び SAS に戻り、中身も確認しましょう。

無事作成されています。

なお、SAS Studio 起動中にフォルダを追加するには、ターミナルや他のソフトを使って作成します (細かく調べてはいませんが、sysexecdcreate ではうまく行かない?)。 作成後、左の「フォルダ」タブを開いて「最新の情報に更新」ボタンを押すと再読み込みして追加されたフォルダ認識してくれます。 フォルダタブから作成する場合、マイフォルダ直下以外であれば、フォルダを作成できます。 .sas ファイルも同様に "/folders/myfolders/" 以下もしくは他の共有フォルダにのみ保存できます。
(参考: How do I create a folder shortcut to my existing SAS files?)

また、VirtualBox の共有フォルダで myfolders 以外のフォルダも設定していた場合は、「フォルダショートカット」にリンクされています。 パスは
/folders/myfolders/設定したフォルダ名
になります。 下の画像では、"folder1" というフォルダを作成しています。
一旦 SAS を終了した後、Nautilus でフォルダを作成し、
VirtualBox で共有フォルダを設定します。
再び SAS を起動すると、フォルダショートカットに "folder1" が追加されています。

オートコンプリート機能

コード入力を予測してくれる機能があります。 英語ですが説明文も表示されます。

スニペット機能

SAS は
proc sql;
...;
quit; 
とか
proc hoge data=data1...;
...:
run;

のように長めの定型文をよく使います。 スニペットではそのような定型文がいくつか用意されており、すぐにペーストできます。 自分で登録することも可能です。

なお、SAS Studio の操作方法には、下記のように公式の動画チュートリアルがあります (英語ですが日本語字幕があります。) ので、こちらも参考になります。また、googleで検索したところ、SAS Studioの公式日本語マニュアルのpdfファイルもあるのでこちらも参考になりそうです (なぜか公式サイトからのリンクが見つかりませんでしたが)。

埋め込み動画がうまく表示されない場合はこちら
動画冒頭ではサーバとPCを接続すると説明していますが、この SAS University Edition ではローカルで実行できます。 よってインストールが終わればネット接続できない状況でも使用できます (ただし更新チェックはできなくなりますが)。

仮想マシン上で動かすため、あまり大掛かりなことはできないでしょうが、 そもそも個人利用なら十分すぎるほど機能が充実していますし、これまで SAS は敷居が高いと感じていた方はこれを機に試してみてはいかがでしょうか。

2014年8月22日金曜日

Call Symputルーチンによるマクロ変数作成の豆知識

マクロ変数は、プログラム内で場所を選ばず展開できる「グローバルマクロ変数」と
%MACRO ~ %MEND;内でのみ展開できる「ローカルマクロ変数」があります。


また、マクロ変数は下記の方法で定義することができます。
 1.%LETステートメント
   ・%MACRO ~ %MEND;内で宣言 ・・・ 「ローカルマクロ変数」として定義
   ・%MACRO ~ %MEND;外で宣言 ・・・ 「グローバルマクロ変数」として定義

 2.%MACROステートメント内のパラメータ
   ・「ローカルマクロ変数」として定義

 3.%DOループのインデックスマクロ変数
   ・「ローカルマクロ変数」として定義
    
 4.Call Symputルーチン
   ・通常は%MACRO ~ %MEND;の内外問わず「グローバルマクロ変数」として定義


 ただし、4.Call Symputルーチンは下記の様な場合、「ローカルマクロ変数」として定義されます。
     A.%MACRO ~ %MEND;内でCall Symput以前にローカルマクロ変数が定義されている場合
     B.PROC SQLの後で、Call Symputを使用した場合
     C.マクロ呼び出しの際にマクロ変数SYSPBUFFを作成した場合
     D.同じ%MACRO ~ %MEND;内に、「&~」や「%~」を含む%GOTOステートメントがある場合
   


さて、今回はA.のパターンについて紹介したいと思います。




以前、現場で「基準年月」から「6ヶ月間」分のデータを取得し集計するご依頼をいただき

私は、6ヶ月分のデータを取得する下記の様なマクロを作成しました。

※実際に作成したプログラムとは、多少変えてあります。


  %let yymm = 1403;  /* 基準年月 */

  %macro aaa;           /* 基準年月から6ヶ月分の年月を取得するマクロ */

    %do i = 1 %to 6;

         data _null_;
            ym = put(intnx('mon',input("&yymm",yymmn4.),&i-1),yymmn4.);
            call symput("yymm&i",compress(ym));
         run;

    %end;

  %mend;
  %aaa;
  
  %put 1ヶ月目 = &yymm1;  /* チェック用 */



ところが、プログラムを作成し実際に実行してみると%putステートメントの処理の際に、

次の様なメッセージがログに出ました。

 Warning : 記号参照 YYMM1 を展開していません。



思わぬWarningの出現に首をかしげてしまいました。



Warningの原因は、%doステートメント内のマクロインデックス変数 &i でした。

&i がCall Symput以前に定義されていたため、マクロ変数 &yymm1 は「ローカルマクロ変数」として

定義されてしまったのです。



色々、検証してみた末、原因が判明したので、私は下記の様な対処方法を考えました。

 A.) Call Symputで定義したマクロ変数を%GLOBALステートメントを使用してグローバル化する


         %let yymm = 1403;  /* 基準年月 */

         %macro aaa;           /* 基準年月から6ヶ月分の年月を取得するマクロ */

           %do i = 1 %to 6;

                 %global yymm&i;  

                 data _null_;
                    ym = put(intnx('mon',input("&yymm",yymmn4.),&i-1),yymmn4.);
                    call symput("yymm&i",compress(ym));
                 run;

           %end;

        %mend;
        %aaa;
  
        %put 1ヶ月目 = &yymm1;  /* チェック用 */



  B.) マクロを使用しない


          %let yymm = 1403;  /* 基準年月 */
    
          data _null_;
             do i = 1 to 6;
                 ym = put(intnx('mon',input("&yymm",yymmn4.),i-1),yymmn4.);
                 call symput(compress('yymm' || put(i,best.)),compress(ym));
             end;
          run;

          %put 1ヶ月目 = &yymm1;  /* チェック用 */



A・Bどちらのパターンでも「グローバルマクロ変数」として定義され

私の望んだ結果を得ることができました。



皆さんも頭の片隅にでも留めておいて頂けたら意外と役に立つかもしれません。


以上、文章での説明が苦手なので読みにくい点が多々あると思いますが、
最後まで読んで下さった方はありがとうございました。

2014年8月2日土曜日

ボウリング行ってきました

暑いですね。暑さを吹き飛ばそうと、有志で集まり、
新宿へとピンをなぎ倒しに行って参りました。


暗い方が雰囲気が良い?ので、レーンは暗い方を選択しました。
男達しかいませんでしたが。。

ゲームが始まりました。

私自身久しぶりのボウリングで、最初のゲーム何と75本しか倒せませんでした。
Wiki師匠に聞いたところ、「ボウリングは倒すピンを災いや悪魔に見立てて、
それを沢山倒すことが出来たならば、その災いなどから逃れることが出来るという
一種の宗教儀式であった」との事で、
完全に悪魔退治に失敗しました。逆に災いが訪れそうですね。

そんな中、1ゲーム目を制したのが、この人
コブクロさんです。
新宿公演の後、たまたま通りかかったとのこと。
ライブさながらのダンスまで披露して頂きました。


ストライクやスペアを取ると、何故か掛け声が
「チャッラ!チャーラ!?(チャラいの意)」でした。
つまりは
「格好つけて良いところを女性陣(居ないけど、架空の)に見せつけてるんですか!?」
という意味です。



 いや、臨場感を伝えるのは中々難しいですが、
実際のところ、結構盛り上がりました。

第2回、是非やりたいと思っております。
今回の優勝者は、ユータ君となりました。
おめでとうございます!ぱちぱちぱち。

皆まっすぐお家に帰ります。



そんなわけないですね。

2014年6月27日金曜日

コミュニケーションの癖

 朝食の席から立とうとした時に、ラジオから聞こえてきた言葉を拾って6歳の娘が聞いてきた。
「派手って何?」
「けばけばしいことだよ」と言おうとしたが、それじゃ娘にはわからないだろうと、その場は「すごくきれいなことだよ」とお茶を濁した。娘は消化不良の表情だったが、出掛ける時間が迫っていたため、続く質問には答えられなかった。

 仕事上のコミュニケーションでは、相手との共通理解の領域をどれだけ広げられるかが重要になってくる。コミュニケーション能力というと、物事をうまく説明する能力に目が向きがちだが、自分の説明を相手がどれくらい理解しているか確認する能力が実は不可欠だ。

 その朝の娘との会話は、私のコミュニケーション能力の低さを露呈したことになる。
 私のコミュニケーションの癖は、言葉に頼り過ぎる点である。今思えばネットの画像をいくつか見せて説明したりすれば、娘もすっきりしたかもしれない。

 さて、あなたは自分のコミュニケーションの癖に気付いていますか?
 今よりコミュニケーション能力を高めるとしたらどんな方法があると思いますか?

2014年6月22日日曜日

やらないという選択肢のために磨くべきこと

 以前、勝間和代氏が自分の仕事術を紹介する番組で「何をやるかより何をやらないかが大事。私は not to do list を持っている」というようなことを語っていた。やらないと決めたことを断ることで時間を確保し、勝間氏は評論家として成功する礎を築いたらしい。
 やらないという選択を、自分の成功のためという側面から見るとやらしい話になってしまう(勝間氏がやらしいという話ではない)。頼まれた責任をとるには、仕事がなくならない限り他の誰かにお願いすることになる。誰に任せるべきか?選択基準は人それぞれと思う。私が考えた基準はその仕事が好きな人。

 その理由は、
 ・好きな仕事に時間を使えるのは私ならありがたい。
 ・好きな仕事なら頼まれた方も多少の無理は飲んでくれる。
 ・好きなことは上達しやすく、仕事の質も良いことが多い。
 ・いずれはその人の核となる分野になるかもしれない。

 ここまで書いてはたと思う。誰がどんなことを好んでいるのか、一番の基準として使えるほど熟知はしていなかった。この分野の質問の強化が必要だ。

 仕事の行程や要素を細分化したとき、あなたが好きといえるのは何ですか?
 

2014年6月13日金曜日

岩本町ファミリーバザール

ちょっと時期が過ぎてしまいましたが…
今日は、会社の近所で催されるイベント(お祭り?)についてです。


弊社、ネイチャーインサイト株式会社は、 東京都千代田区岩本町にございます。

岩本町も含め、東神田・馬喰町の界隈は繊維問屋が多く、
また衣料品を商材とするメーカー・商社も多く軒を連ねています。

そんな岩本町では、近隣の衣料品問屋が出店し、 一般向けに商品を売り出す「ファミリーバザール」が、年2回、開催されます。会社の目の前も会場になっているので、ちょっと立ち寄ってみました^^














この日は5/30、金曜日の15時頃なのですが、平日の割に結構な人出です。
若干、年齢層は高い気がします…^^;
土日には通りが歩行者天国となり、多くの人で賑わうそうです。















ヒマラヤの岩塩の存在感。
メインの品は衣料ですが、その他の商品を販売している店もあります。

ここに並んでいる商品が 「問屋プライス」 で市価より本当に安いかわかりませんが(笑)
せっかくなので何か買ってみることにしました。

ワックスペーパー (製菓材料です)を2つ。

お菓子を配る時なんかに、 ラッピング用に使える小洒落た包み紙です。
1個で200円、2個で300円でした。




















あとでAmazonで調べたら、 同等品が500円程となっていま した。
良い買い物ができたようです。 (゚∀゚)


岩本町ファミリーバザールは、5月末と11月末の、年2回の開催です。
ぜひ、足を運んでみてはいかがでしょうか?

2014年6月7日土曜日

CMT/磁気テープ

CMT。
カロリーメイトではありません。
地元に〜帰ろう〜♫。それはGMT(あまちゃん。。)。

この仕事をしてないとあまり聞かないのかも。
この仕事をしていても実際操作するのはマレですかね。

一言で言うと、磁気テープ。

詳しくは、ウィキペディアに任せるとして。

今回お仕事で操作する必要に迫られたので、
備忘の意味をこめて、簡単に操作方法等を記載します。


--------------------------------------------------------------------------------->

【解説】
今回は、SCSI接続のテープデバイスの使用方法を記載します。

1)デバイスファイルの準備
   デバイスファイルは  『/dev/st0』 または、『/dev/nst0』になります。
  
   『/dev/st0』 を使用する場合、アクセス終了後に巻き戻しを行います。
   『/dev/nst0』 を使用する場合、巻き戻しを行いません。

2)状態の確認

# mt -f  /dev/nst0 status
     →  -f :テープデバイスの指定
     →  mt -f /de/nst0 sta (statusの省略もできる)

     出力例:
      SCSI 2 tape drive
      File number=0 ,blocknumber=0 ,partition=0
      Tape block size 0 bytes. Dencity code 0x23(DOS-2)
      Soft error count since last status=0
      General status bits on (41010000):
      BOT ONLINE IM_REP_EN
      → 『ONLINE IM_REP_EN』となればテープが挿入されている状態

3)主なmtコマンド
    mt -f /dev/nst0 compression 1(圧縮 ON=default)
    mt -f /dev/nst0 compression 0(非圧縮
    mt -f /dev/nst0 tell(現在のブロック位置表示)
    mt -f /dev/nst0 fsf(ポジションを1つ先へ移動)
    mt -f /dev/nst0 fsf n(ポジションをn個先へ移動)
    mt -f /dev/nst0 bsf(ポジションを1つ前へ移動)
    mt -f /dev/nst0 bsf n(ポジションをn個前へ移動)
    mt -f /dev/nst0 erase(テープ消去)
    mt -f /dev/nst0 retension(テープのたるみ取り)
    mt -f /dev/nst0 rewind(テープ巻き戻し)
    mt -f /dev/nst0 offline(テープ巻き戻し後イジェクト)

ってな具合でテープ操作ができます。
本当に簡単ですみません。使う人はご参考あれ。

2014年5月16日金曜日

【求人情報】 2014年7月 SASエンジニア / データサイエンティスト


先日、2014年ブラジルW杯の日本代表メンバーが発表されましたね。
Jリーグで大活躍の大久保選手が選出されました。
大会での活躍も期待しております。

そして、日本代表チームを応援しましょう!!



さて、当社は今年創立20周年を迎えました。
その節目の年、第二弾の求人募集をスタートしました。

ビックデータ』・『ビジネスアナリティクス』と、今ビジネスの世界でもっと注目されている分野です。
当社では、一緒に成長していける新たな仲間を求めております。



求人広告(@TYPE)へのリンクです。

[SASエンジニア募集]
求人、転職サイトは@type

[データサイエンティスト募集]
求人、転職サイトは@type



皆さまのご応募をお待ちしております。

2014年5月6日火曜日

会社ロゴを一新致しました!



SASの第一期認定パートナーとして大手メガバンクを始め、多数の大手企業のBIシステム、DWH構築からデータ分析を行ってきた弊社もおかげ様で今年で創立20周年を迎えることができました。

そこで創立20周年記念として今後のさらなる飛躍を目標とし、会社ロゴを一新致しました!!!!


【コンセプト】
シンプルなフォルムの中に「先進性」「未来感」「創造性」が感じられるロゴ。
貴社とお客様とを繋ぐアイコンとして機能する、親しみやすさと存在感。
【デザイン】
頭文字「N」の特徴をモチーフに、先進的且つ豊かな創造性が感じられる柔らかな印象で表現した抽象ロゴとなります。
時代のニーズやクライアントの要望に柔軟に対応し、常に進化し続ける様子を表現。

非常にスタイリッシュで、こんなことを言うのもなんですが…

前のデザインより圧倒的にイイです!!(前デザイナー:社長 ごめんなさいw)


今回ロゴデザインを委託するにあたり利用したのが、クラウドソーシングサービスです

従来ロゴ等をデザイン委託する場合は、デザイン業者の選定に時間がかかる上、多様なデザインを期待できないというデメリットがありましたが、比べてクラウドソーシングを利用した場合は、多数のデザイナーの提案から選択できるというメリットがあります。

今回は日本のクラウドソーシングサービスを提供する中から、日本最大級の実績を誇る
CrowdWorks

にて弊社新規ロゴデザインを4/14 ~4/28にかけて募集致しました。
最終的な応募件数はなんと…

136件!(デザイナー数は68人)

クラウドソーシング恐るべしといったところでしょうか

今回はその多数のデザインの中から社内検討の上、M-SPACE DESIGN 様から提案いただいたデザインを採用させていただきました。

応募していただいた多数のデザイナー様には感謝を申し上げます。

今後はイベント協賛、HP、名刺等で使用し、新しいロゴと共に駆け抜けて行きたいと考えておりますので、皆様今後ともどうぞよろしくお願いいたします。


2014年4月28日月曜日

お菓子作り

3月14日は、ホワイトデーでした。

世の中の男性の皆様は、ホワイトデーにどんな準備をされたのでしょうか。

バレンタインといえばチョコですが、ホワイトデーは特にテーマ設定(?)がありません。
お返しに何を渡せばいいのやら、、、と迷ってしまいがちです。


一方バレンタインでは『手作りチョコキット』が売れていたそうです。(日経新聞1/29朝刊 消費)

女子学生の間では友人同士で贈るチョコの数が増える傾向にあるとか…
10代女子の8割がバレンタインデーに手作りの食べ物をプレゼントすると答えたとか…


であるならば


『男だって手作りお菓子作ってもイイよね!!』


プレゼントとして是非はともかく、話題性はあると思うのです。。。。というわけで、

「簡単」「安い」「作業は1時間半以内」「持ち運びしやすく保存が効く」
ココア&抹茶パウンドケーキを作りました。

----------------------
パウンド型1本分のレシピ:

バター(マーガリン可)100g
砂糖100g(上白糖でもOK)
小麦粉(80g~100g)
ベーキングパウダー(小さじ半分)
卵2個
-------------------------












バターと砂糖と卵を混ぜます。
事前にバターは室温に戻しておくのがベターですが…面倒だしそんな時間はないので、
強制的にレンジで溶かしてしまいます。

卵は事前に溶いておいて、1/3ずつ加え混ぜると分離しにくいです。













ヘラに持ち替えて、小麦粉とベーキングパウダーを混ぜます。
事前に、粉ふるいにかけておくことで、ダマになることを防ぎます。

混ぜ過ぎると食感的に粘りがでてきてしまうようなのですが、あまり気にしなくても良いような気がします。


プレーン味ならこのままですが、今回は抹茶&ココアなので、ここでパウダーを混ぜます。





















風味付けにココアにはラム酒を、抹茶にはバニラオイルを投入しています。








型に流し込みます。
(紙製の型だと、生地の自重で型が歪む為、抑えるために、陶器の容器を置いています。)


180度のオーブンで40分焼きます。
途中20分くらいで、縦にナイフで切れ目をいれます。

ここから蒸気を逃がしてやることで、焼きあがり後にボコボコになることを防ぎます。
また、均一に熱を入れることができるそうです…










竹串を刺して生地が付いてこなかったら完成。網の上で冷まします。
切れ目に沿ってきれいに割れました!


冷めたらラップで包んで一晩常温で寝かせて完成。

ちゃんとラップで包まないと乾燥してしまいます。
また寝かせることでしっとりとした食感になります。





美味しく頂きましょう!


加熱している+糖分が多い ので、1週間くらいは保存がききます。
冷めてしっとりするとケーキが固くしまるので、少々持ち運んでも型崩れしません。


人に配りやすいのも、パウンドケーキのイイところですね。

2014年4月12日土曜日

オススメ図書

今回、お薦め図書をご紹介させて頂きます。

しかし紹介する本が無難な物では面白くないので、
読んでいる途中でも、読み終わった後でも頭が刺激される、
そして日々の仕事の中でも十分アレンジ可能な良本をご紹介します。



さていきなりですが、お薦め図書を列挙したいと思います。

・影響力の武器
・影響力の武器 実践編
・影響力の正体 (上記"影響力の武器"の新訳+追記有り版のようです)
著:ロバート・B・チャルディーニ


・ヤバイ経済学
・超ヤバイ経済学
著:スティーヴン・D・レヴィット/スティーヴン・J・ダブナー


・予想通りに不合理 (増補版はオリジナルに追記部分があります)
・不合理だからすべてがうまくいく
・ずる ―嘘とごまかしの行動経済学
著:ダン・アリエリー


いきなりたくさん紹介しておりますが、テーマは全て同じで
"行動経済学"という分野の研究レポートをまとめた本になります。

行動経済学は経済学の一分野になりますが、
経済学の考え方に加え、人間の行動心理を想定し、
その行動パターンが正しいかどうかを数値的に証明する学問です。


プロセス的に書くと、

行動パターンの仮説を立てる

仮説を証明できるシチュエーションを作り実験をおこなう

実験結果について数値的なデータを取る(アンケート含む)

数理統計学の知識を使って、数値的に正しいかどうかを裏付ける
(主に相関係数を算出して、関係がある/ないを判断するのがベースのようです)

になります。


プロセスの中に数理統計学と書きましたが、
本の中で難しい数式が出てくるわけではありません。

それは研究者(著者)さんが勝手に計算してくれているので、
まずはその数値を信じましょう。


具体的な内容はというと…。

わかりやすい例を挙げたいところですが、
実際どれかの本に記載されている物なので
曖昧なところで留めておいて、
興味を持った方は本で答えを知ってもらえればと思います。


単純な実験ですが、

・ケースA
100円のチョコレートと1000円のチョコレート、それぞれ100個準備して、
どちらがどれくらいの速さで売れていくかを調べる。

もちろんそれぞれ値段相応の味(1000円の方がより美味しい)である品物です。


・ケースB
こちらではケースAと同じ100円と1000円のチョコレートを
それぞれ100円引きして販売します。

すなわち片方は0円(無料)、もう片方は900円になります。
このときチョコレートの売れ行きはどうなるでしょうか。


さて、この記事を読んでいる皆さんが、
ケースA/ケースBの両方の実験に参加しているとイメージして
安いチョコレートと高いチョコレートのどちらを買いますか??

そしてその結果は概ね間違いではありません。


と、こんな感じの実験を多々取り扱っていて、
学生さんなどに実験に参加してもらい行動パターンを学習します。

取り上げる題材は本当に身近な例ばかりで、
結果もすぐに飲み込め、あー、そうそう!って言いたくなる事例ばかりです。

当然、これらの結果をマーケティングに応用するのもアイデア次第で可能でして
どんな業界でお仕事されている方であっても読んで損はない本だと思います。



もう1シリーズ、お薦め図書をまとめたいと思いますが、
こちらも頭を使う本になっております。


・パズルランドのアリス1・2巻
・スマリヤンの無限の論理パズル ―ゲーデルとカントールをめぐる難問奇問
・スマリヤンの決定不能の論理パズル ―ゲーデルの定理と様相理論
・スマリヤンの究極の倫理パズル ―数の不思議からゲーデルの定理へ
・数理パズル 美女か野獣か? ―楽しみながらゲーデルの謎にせまる
・スマリヤン先生のブール代数入門 嘘つきパズル・パラドックス・論理の花咲く庭園
・この本の名は? 嘘つきと正直者をめぐる不思議な論理パズル
その他多数
著:レイモンド・スマリヤン

何がすごいというと、このスマリヤン先生は100歳近い今なおご存命です。


本の分野的には"論理学"です。
そしてスマリヤン先生の本は"論理パズル"として、
パズル感覚で遊んで学べる本になっています。

一冊適当に手に取っていただければすぐわかるかと思いますが、
1つのテーマとして、
"正直者":一切嘘を言わず、絶対に本当のことを言う人
"嘘吐き":一切本当のことを言わず、絶対に嘘を言う人
がよく出てきます。

ある人が何かコメントしたとして、
そのコメントから、その人が(もしくは他人が)正直者か嘘吐きかを決定できますか?
という問題がたくさん出てきます。

そういった論証を様々なパターンで記載されています。
基本的にクイズ形式になっていますので、頭の体操にはもってこいです。

論理的思考力を身に付けたいという方にはぜひとも読んでいただきたい本になります。


ではこちらも以下の問題例で頭の体操をしてみてください。


問1)
ある飲み会の席で、Aさんが以下のように言った。

Aさん『俺って嘘吐きだからさー!!』

さてAさんについて、以下のどれがあてはまるでしょうか?
①Aさんは正直者である
②Aさんは嘘吐きである
③Aさんが正直者/嘘吐きしか存在しない世界にいたとしたら、この発言はあり得ない
④Aさんは酔っ払いである


問2)
ある小さい村では床屋を営む人はたった1人しかいない。
その床屋の男性が以下のコメントをした。

男『この村に住む人で、自分でヒゲを剃らない人全員のヒゲを剃り、
  それ以外の人のヒゲは剃らない』

さてこの床屋の男性のヒゲは誰が剃ればよいでしょうか?
参考:wikipedia
検索キーワード:床屋のパラドックス

ちなみに問2の答えはwikipediaに記載されておりませんが、
これはこれで抜け道があるので考えてみてください。

2014年3月24日月曜日

私達の生活に欠かせない水について考える

私達は、水と深く関わって生きています。
飲料や洗面、シャワーにトイレなど生活に欠かせません。
日本人1人あたりの1日の生活用水の消費量は140Lと言われています。
我が家は4人家族なので1日に560L、20年生活をすると約4000t消費することになり、東京タワーの重量に匹敵します。
私達は水についてより深く知る必要があるのです。

私は一番身近な存在である水道水について調査してみました。
我が家から一番近い浄水場である三郷浄水場の水質検結果の公開データを参照してみます。
平成24年:http://www.waterworks.metro.tokyo.jp/water/w_info/s_kekka24-data/k019.pdf
平成25年:http://www.waterworks.metro.tokyo.jp/water/w_info/s_kekka25-data/k019.pdf
ご覧の通り、水道水には様々な成分が含まれているのがわかります。
検査項目のなかで気になるのが、人体に悪影響を与える主な物質である、塩素、トリハロメタン、トリクロロエチレン、硝酸態窒素、亜硝酸態窒素、鉛、ヒ素等がどの程度含まれているかです。
放射性ヨウ素、放射性セシウムが検査項目に無かったのは残念です。

浄水場では、水を殺菌するため塩素処理しますが、塩素が微生物を分解した際にトリハロメタンが発生します。
トリクロロエチレンは工場排水等により混入し、硝酸態窒素、亜硝酸態窒素は農薬、除草剤、肥料等が原因で混入します。
鉛に関しては鉛製配水管から溶け出すことにより混入しますが、現在は鉛製配水管の使用は禁止されているので心配ないはずです。

塩素はタンパク質やビタミンを破壊し肌荒れを引き起こします。また、カルキ臭を発生させ、水が不味くなる原因となります。
トリハロメタンやヒ素は発がん性物質です。体の各器官にも様々な悪影響を及ぼすそうです。
硝酸態窒素、亜硝酸態窒素はチアノーゼを引き起こし、間接的にガンの原因にもなります。
トリクロロエチレンは中枢神経障害の原因とされています。

塩素やトリハロメタンは煮沸で無害化できますが、トリハロメタンに関しては30分程度の煮沸が必要です。(煮沸開始直後はトリハロメタンが2~3倍に増加します)
よく煮沸していない水道水を飲料や料理に使用すると、より多くのトリハロメタンを摂取してしまうことになりますので注意が必要です。

平成24年の年間平均データを見てみましょう。
残留塩素:0.5mg/L  (目標値:1mg/L以下)
総トリハロメタン:0.014mg/L (目標値:0.1mg/L以下、ドイツでは0.025mg/L以下)
トリクロロエチレン:0.000mg/L (目標値:0.01mg/L以下)
硝酸態窒素及び亜硝酸態窒素:2.4mg/L (目標値:10 mg/L以下)
鉛及びその化合物:0.000mg/L (目標値:0.01mg/L以下)
ヒ素及びその化合物:0.000mg/L (目標値:0.01mg/L以下)

目標値は下回っています。
検出された量がどの程度人体に影響を与えるのかわかりませんが、出来る限り摂取したくないですね。
トリクロロエチレン、鉛、ヒ素に関しては、検出されていないようで安心です。

参考:pH
pH<7酸性
pH=7中性
pH>7アルカリ性
次にpH, 硬度をチェックしてみましょう。
pH:7.6  (目標値:7.5)
カルシウム、マグネシウム等(硬度):82.5mg/L  (目標値:10~100mg/L)
総硬度内訳:カルシウム硬度60mg/L、マグネシウム硬度22.5mg/L
ドイツ硬度に変換すると
(60 * 56.077 / 100.087 + 22.5 * 56.077 / 84.32) / 10≒4.8581°dH

参考:ミネラルウォーター
商品名pH総硬度
エビアン7.2304
ボルヴィック7.060
クリスタルガイザー7.638
コントレックス7.41,468
結果は弱アルカリ性の中硬水ということがわかりました。

この結果は全ての生物において重要な指標となります。
哲学の祖タレスはこう言いました。「万物の根源は水である」

水槽の生物達の根源は水道水です。
水道水で育む命。
我が家の水道水で育む命。
さて、本日は水の成分に敏感な、水草水槽の立ち上げの様子をご紹介します。


前回コリドラスの移動をしましたが、その時に空いた水槽、素材、生体を再利用して立ち上げていきます。
キューバパールグラスという小さな前景草がたくさんあるので、その水草を一面に絨毯のように敷き詰めた、草原のようなレイアウト水槽を作りたいと思います。

まずは、前回同様に水槽を洗った後、バックスクリーンの塩ビシートをテープで止めます。
色は青を選びました。草原には爽やかな青空が似合います。

ライトは大きめのメタルハライドランプ(スポーツのナイター等で使用される強光の照明)を使用するので、頑丈なステンレス製のライトスタンドを用意しました。

底砂にはソイルを使用し、レイアウト用に前回と同じ人工石の凸凹ロックを使用します。
キューバパールグラスは5~10GH(≒dH)程度の高硬度の水が適しているので、水の硬度を上げる効果がある石を使い、石組みレイアウトで組まれることが多いです。
冒頭で調査した通り、我が家の水道水の硬度は約4.8dHなので、硬度を上げる為にも人工では無い本物の石を使用したいのですが、気に入った形の石を探す気力と労力が足りないので、ここはぐっと我慢します。
アクアショップには、真剣な目つきで木や石を物色する大人たちがたくさんいます。

カサ増しの為に、発泡スチロールを敷きました。
レイアウトはてきとうです。
綺麗な絨毯水槽の完成とそのノウハウの取得が今回の目的です。




奥行き感を出すために、奥に高さを出すようにソイルを入れていきます。


外部フィルターとヒーターを設置します。


水を投入します。ソイルを崩さないようにゆっくりと注いでいきます。
が、ここで失敗しました。後ろに高く積んだソイルが土砂崩れを起こしました。
写真ではわかりにくいですが、前面のソイルの高さが随分と高くなってしまい、奥行き感も無くなってしまいましたが、修正する気力が無かったのでよしとしました。


そしていよいよ、キューバパールグラスを植栽していきます。
キューバパールグラスを植えるのはとても大変です。
すぐに抜けてしまうので、根気よく何度もやり直します。塊で植えると簡単に抜けてしまい後々苦労しますので、細かく分けて丁寧に植栽していきます。
この作業は疲れます。何度も浮いてくるキューバパールグラスに激昂しないよう、適度に休憩をとりながら作業することが大切です。


後々引っ越しさせますが、居場所のないクリプトコリネ各種やトニナも居候の為、植栽します。
また、居場所の無い7匹のヤマトヌマエビと1匹のサイアミーズ・フライングフォックスを迎え入れました。
キューバパールグラスが根付くまではエビ達は入れたくなかったのですが、他に居場所を確保できませんでした。
水を入れてライト、二酸化炭素添加器具(外部フィルターに接続)を設置して立ち上げ完了です。


水草水槽はここからが戦いです。
まず、最初の2週間は毎日換水します。二酸化炭素も多めに1.5滴/s添加します。
ソイルから栄養が溶け出し富栄養状態になっているので、換水しないとすぐにコケにやられます。

しばらくの間は、帰宅すると毎日のようにキューバパールグラスが大量に抜かれていました。
植えなおしても、すぐにヤマトヌマエビがやってきて抜いていきます。
水槽を眺めているとサイアミーズ・フライングフォックスがつついて抜いています。
私はどちらかというと温和なほうの性格なのですが、この行為に対しては、極控えめに言っても激おこぷんぷん丸でした。
本気でエビ達を揚げてやろうと思いました。

1週間後。
少しづつ育っているのがわかります。


風邪をひき、3日ほど換水を怠るとこうなります。


苦労が絶えませんでしたが、立ち上げから1ヶ月経過しました。
1週間放置でもガラス面にうっすら苔が生えるかどうか程度に落ち着いたので、メンテナンスは1週間に1回に変更しました。
そろそろ栄養素の添加について考える時期になります。


水草に必要な栄養素
多量要素中量要素微量要素
窒素カルシウム
マグネシウムホウ素
カリウム硫黄マンガン
亜鉛
モリブデン
塩素
まずは水草に必要な栄養素についてざっくりとご説明します。
水草には右記栄養素が必要です。
水槽設置の初期段階では、ソイルに含まれている栄養素が溶け出すので、添加の必要はありません。
赤字以外の要素は換水や魚の餌等により補給することができると言われています。
冒頭の浄水場の水質調査結果を見る限り、足りてなさそうな要素もありましたが、特に問題になった話を聞かないので大丈夫なのでしょう。
カリウム、鉄に関しては換水だけでは不足してしまうので、別途添加する必要があります。

我が家ではカリウムの添加は水草一番ブロック、イニシャルスティック
鉄分補給にメネデール。
他に気が向いた時に、全般的な栄養素を補う為にハイポネックス開花を添加しています。
今回はとりあえずカリウムだけ添加を始めました。

1週間後。
あまりにも油膜がすごいので、油膜を食べてくれることで知られるシルバーライヤーテールモーリーをペアでお迎えしました。
効果覿面で、その後一切油膜を見ることがなくなりました。
最初は油膜を食べてくれるだけの存在だったのですが、私が来るとすぐに近づいてきてくれる人懐っこい性格に愛着がわき、今はとてもお気に入りのお魚です。


2週間後。
ライト直下と離れた場所でキューバパールグラスの成長に差が出てきたので、初のトリミングを実施しました。


3週間後。
立ち上げてから約3カ月が経ちました。
だいぶ絨毯になってきましたので、完成ということにします。
換水をたくさんしたのがよかったのか、思ったよりも簡単に育成することができました。
今後もどのような成長を見せてくれるのか楽しみです。


前回立ち上げたコリドラス水槽と一緒に撮影。


御覧の通り、他に2つ水槽を立ち上げております。機会がありましたらまたご紹介しようと思います。
右下に見切れている小さい水槽には特に力を入れていて、ジブリ作品に出てきそうな水景を目指して育成しています。(俗に言うジブリウム)


最後になりますが、現在社内でネイチャーアクアリウム部の発足を考えております。
会社の入り口に水槽を設置し、維持管理をしていきます。業界初となる社員魚の入社も考えております。
興味のある方はブログ、あるいはメールでご連絡ください。
私を含めて4人以上集まるのが目標です。たくさんの入部をお待ちしております。




----- 水槽データ -----
水槽:キューブガーデン 60×30×36
底砂:水草一番サンド、水草一番パウダータイプ
ライト:スーパークール115 サンホワイト散光  8時間点灯
フィルター:エーハイム2213+2213(インペラー抜き直結)
co2添加量:1滴/s

----- 魚 -----
サイアミーズ・フライングフォックス×1
シルバーライヤーテールモーリー×2

----- エビ -----
ヤマトヌマエビ×7

----- 貝 -----
ピンクラムズホーン×たくさん

----- 水草 -----
キューバパールグラス

ツイート数からみる"バーチャルYouTuber"ブーム

今や YouTuber の話題の半分を占めるほどのクチコミ数に 当社が提供するソーシャルビッグデータ検索ツールの「 beInsight (ビーインサイト)」を使って、話題の「バーチャル YouTuber 」について調べてみました。 「バーチャル YouTuber...