ITエンジニアに求められる英語力

2015年のEF英語能力指数ランキングは次のようになる

ef_score_level
ef_score01_09
ef_score10_21
ef_score22_34
ef_score35_48
ef_score49_70

日本のランクは30位で中級の英語力とされている。通常、中級に位置付けられている英語力は、「一般生活で必要な英語ならある程度分かり、文法的な間違いや多少のぎこちなさはあるが、自分の意思を自信を持って伝えることができる」というものになる。対面で上記のような英会話ができるレベルになるには、相応のコストが必要になる。ITエンジニアとしては、最低限メールで上記のような英語力を発揮できるレベルに到達しておく必要がある。

オブジェクト指向言語の便利な特性、多相性(ポリモーフィズム)

オブジェクト指向言語の便利な特性に多相性(ポリモーフィズム)がある。ポリモーフィズムとは、オブジェクトが複数の型に所属可能な性質のことをいう。例えば、インターフェース型の配列に各種実装クラスのオブジェクトを代入することによって、各オブジェクト特有の振舞いを簡単に選択できるようになる。

JAVAコードで実例をしめすと次のようになる。

public class Polymorphism{

public static void main(String[] args){

Robot[] robotArray = new Robot[5];
robotArray[0] = new Gundam();
robotArray[1] = new MazingerZ();
robotArray[2] = new Reideen();
robotArray[3] = new GetterRobo();
robotArray[4] = new SteelJeeg();

while(true){
try{
Thread.sleep(3000); //3秒Sleep
}catch(Exception e){
e.printStackTrace();
}
int randomInt = (int)(Math.random()*5);
System.out.println(robotArray[randomInt].attack());
}
}
}

interface Robot{
public String attack();
}

class Gundam implements Robot{

public String attack(){
return “Beam rifle”;
}

}

class MazingerZ implements Robot{

public String attack(){
return “Rocket punch”;
}

}

class Reideen implements Robot{

public String attack(){
return “God bird”;
}

}

class GetterRobo implements Robot{

public String attack(){
return “Getter Beam”;
}

}

class SteelJeeg implements Robot{

public String attack(){
return “Jeeg crusher”;
}

}

Polymorphismresult

100ドルで買える中古パソコンをLinuxマシンにしてみる

現在、100ドルで買える6年前に発売されたパソコンの仕様は、次のようになる。

CPU: core i3
クロック: 3GHz
ソケット: LGA1156
チップセット: Q57Express
メモリー: DDR3-4G
HDD: 320G
OS: Windows7 Pro

上記スペックのパソコンにLinuxのワークステーションをインストールして活用すると、Windowsマシンでは得られなかった快適さを実感できる。

centos7_screen

IT業界における多重下請け構造の問題点と解決策

IT業界における多重下請け構造とは、発注者からシステム開発を受注した元請け企業が仕事の一部を2次請け企業へ外注し、2次請け企業が受注した仕事の一部を3次請け企業へ外注し、3次請け企業が受注した仕事の一部を4次請け企業へ外注し・・・・・・と仕事を外注企業へ下ろしていくピラミッド構造の事をいう。
serkai-piramid-giza-3big
通常、元請け企業は要件定義等の上流工程を担当し、2次請け企業は設計・実装などの下流工程を担当する。下請け企業は自社で賄えない業務を孫請け企業に外注するという事を、3次、4次・・・と繰り返し、多いときには7次請け企業まで存在する。

多重下請け構造には、次の3つの問題点があると言われている。

1.価値の高い労働に対して低い賃金を与える逆転現象:1つ下の層に所属する労働者の賃金はマイナス5%~30%になり、価値の高い労働をしても、下の層に所属していると賃金に反映されない。

2.労働者を交換可能な消耗品として扱う:実装工程では、作業レベルを誰でもできる単純作業に落とし込み、実装工程の労働者を交換可能な消耗品として扱っている。一方、複雑な機能については、プログラマーが詳細設計と実装を同時に行なっているため、有能なプログラマーに仕事が集中して使い潰されるパターンが多発する。

3.違法の可能性:多重派遣は、中間業者による労働搾取につながることや、派遣元・派遣先の企業と労働者に対する責任の所在が不明瞭になるため職業安定法第44条、労働基準法第6条(中間搾取の禁止)で禁止されている。業務請負労働者に対して、発注者が指揮命令を行うと多重派遣(違法)になる。常駐開発では、発注側と請負側のエンジニアが同じチームで作業をすることも多く、事実上「多重派遣」状態になってしまう可能性を否定できない。

タッチタイピング(ブラインドタッチ)の利点と習得のコツ

タッチタイピング(ブラインドタッチ)の利点は、入力速度向上、ミス修正速度向上、眼精疲労抑制とされている。
タッチタイピング習得のコツは次のようになる。
1:通常の指の位置はホームポジションに置き、キー入力で指を移動させる必要がある時だけ、その指を移動させて入力し、入力後は元の位置に指を戻す。
TouchTyping_HomePosition_QWERTY
2:キー入力時はキーボードを見ないで画面に集中する。
3:「キー配列と指の位置」を画面に表示させているキー入力練習ソフトを利用すると、指位置の確認も画面上で可能となり、効率が良い。
4:はじめは、様々な英単語のキー入力を練習して、ローマ字入力を覚える。
5:ローマ字入力を習得した後で、数字と記号のキー入力を練習する。
6:「キー配列と指の位置」を見ないで、キー入力練習ソフトの問題を1文字1秒以内にミスせず入力できるようになってから、日本語入力の練習をはじめる。

パソコンに使われているCPUの消費電力を比較する

パソコンに使われているCPUの消費電力を比較すると、次のようになる。

 
CPU クロック ソケット 消費電力 発売日
Pentium3 1.4GHz 370 32W 2001/06/30
Pentium4 3GHz 478 80W 2002/01/08
Pentium4 3GHz 478 89W 2004/01/01
Pentium4 3GHz LGA775 86W 2006/01/05
Core2duo 2.8GHz LGA775 65W 2009/02/08
core i3 3.0GHz LGA1156 73W 2010/01/08
core i3 2.5GHz LGA1155 35W 2011/02/20
core i3 3.5GHz LGA1155 35W 2012/09/02
core i3 3.0GHz LGA1150 35W 2013/09/01
core i3 3.3GHz LGA1150 35W 2014/05/11
core i3 3.3GHz LGA1151 35W 2015/10/30
core i5 3.2GHz LGA1150 65W 2014/05/11
core i5 2.7GHz LGA1151 35W 2015/09/02
core i7 3.2GHz LGA1150 65W 2014/05/11
core i7 2.8GHz LGA1151 35W 2015/09/02

800px-Intel_core_i7_940_bottom_R7309480_wp

CentOS7インストールDVDを作成する手順

CentOS7インストールDVDを作成する手順は次のようになる。

1:http://ftp.riken.jp/Linux/centos/7/isos/x86_64/ からCentOS-7-x86_64-DVD-1511.isoをダウンロードしてWindowsパソコン(DVDrw)に保存する。

2:http://forest.watch.impress.co.jp/library/software/infrarecord/ からir053.exeをダウンロードしてWindowsパソコン(DVDrw)に保存する。

3:Windowsパソコン(DVDrw)にダウンロードしたir053.exeを実行してInfraRecorder(DVDライティングソフト)をインストールする。

4:Windowsパソコン(DVDrw)のDVDドライブに空のDVDディスクをセットする。

5:Windowsパソコン(DVDrw)にインストールしたInfraRecorderを実行して、WriteImageボタンを押し、イメージファイルとしてCentOS-7-x86_64-DVD-1511.isoを指定する。
3f59f19fe10167a19a271246a21ae2f6

6:表示された書き込みダイアログのOKボタンを押す。

7:DVDへの書き込みが完了すると、イメージ書き込み中ダイアログのOKボタンが表示されるので、このOKボタンを押す。

8:Windowsパソコン(DVDrw)のDVDドライブからDVDディスクを取り出し、CentOS-7ラベルをはる。

9:CentOSをインストールするパソコンのDVDドライブにDVDディスク(CentOS-7)をセットする。

10:CentOSをインストールするパソコンを再起動させ、F2またはF12キーを押し続けて起動メニューを表示させる。

11:起動メニューでDVDドライブから起動するように設定する。

12:CentOS-7のインストール画面が表示される。

CentOS6.8インストールDVDを作成する手順

CentOS6.8インストールDVDを作成する手順は次のようになる。

1:http://ftp.riken.jp/Linux/centos/6.8/isos/i386/ からCentOS-6.8-i386-bin-DVD1.isoをダウンロードしてWindowsパソコン(DVDrw)に保存する。

2:http://forest.watch.impress.co.jp/library/software/infrarecord/ からir053.exeをダウンロードしてWindowsパソコン(DVDrw)に保存する。

3:Windowsパソコン(DVDrw)にダウンロードしたir053.exeを実行してInfraRecorder(DVDライティングソフト)をインストールする。

4:Windowsパソコン(DVDrw)のDVDドライブに空のDVDディスクをセットする。

5:Windowsパソコン(DVDrw)にインストールしたInfraRecorderを実行して、WriteImageボタンを押し、イメージファイルとしてCentOS-6.8-i386-bin-DVD1.isoを指定する。
3f59f19fe10167a19a271246a21ae2f6

6:表示された書き込みダイアログのOKボタンを押す。

7:DVDへの書き込みが完了すると、イメージ書き込み中ダイアログのOKボタンが表示されるので、このOKボタンを押す。

8:Windowsパソコン(DVDrw)のDVDドライブからDVDディスクを取り出し、CentOS-6.8ラベルをはる。

9:CentOSをインストールするパソコンのDVDドライブにDVDディスク(CentOS-6.8)をセットする。

10:CentOSをインストールするパソコンを再起動させ、F2またはF12キーを押し続けて起動メニューを表示させる。

11:起動メニューでDVDドライブから起動するように設定する。

12:CentOS-6.8のインストール画面が表示される。

CakePHP2.8.xをリモートサーバーにインストールする手順

CakePHP2.8.xをリモートサーバーにインストールする手順は次のようになる。(リモートサーバーには予め、PHP5.6.22とMysql5.5がインストールされている)

1:https://github.com/cakephp/cakephp/tags からLinuxパソコンへCakePHP2.8.xをダウンロードする(ダウンロード完了後、ダウンロードフォルダーからアカウントルートへファイルを移動しておく)

2:https://github.com/cakephp/debug_kit/tree/2.2 からLinuxパソコンへ debug_kit-2.2.zipをダウンロードする(ダウンロード完了後、ダウンロードフォルダーからアカウントルートへファイルを移動しておく)

3:コンソールでscpコマンドを実行してサーバーにファイルをコピーする(scp cakephp-2.8.x.tar.gz アカウント名@サーバー名:)

4:コンソールでscpコマンドを実行してサーバーにファイルをコピーする(scp debug_kit-2.2.zip アカウント名@サーバー名:)

5:コンソールでsshコマンドを実行してサーバーにログインする(ssh アカウント名@サーバー名)

6:コンソール上のサーバーに対してmvコマンドを実行してファイルをWeb用ディレクトリへ移動する(mv cakephp-2.8.x.tar.gz ./www/)

7:コンソール上のサーバーに対してtarコマンドを実行してファイルを展開する(tar xvfz ./www/cakephp-2.8.x.tar.gz)

8:コンソール上のサーバーに対してmvコマンドを実行してファイルをPluginディレクトリへ移動する(mv debug_kit-2.2.zip ./www/cakephp-2.8.x/app/Plugin)

9:コンソール上のサーバーに対してunzipコマンドを実行してファイルを展開する(unzip ./www/cakephp-2.8.x/app/Plugin/debug_kit-2.2.zip)

10:コンソール上のサーバーに対してmvコマンドを実行してディレクトリ名を変更する(mv ./www/cakephp-2.8.x/app/Plugin/debug_kit-2.2 ./www/cakephp-2.8.x/app/Plugin/DebugKit)

11:コンソール上のサーバーに対してviコマンドを実行して下記のようにファイルを編集する(vi ./www/cakephp-2.8.x/app/Config/core.php)
編集A:Configure::write(‘Security.salt’, ‘DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi’); と記述された行を探し、ランダムな文字列の部分を任意のランダムな文字列に置き換える。
編集B:Configure::write(‘Security.cipherSeed’, ‘76859309657453542496749683645’); と記述された行を探し、ランダムな数字列の部分を任意のランダムな数字列に置き換える。

12:コンソール上のサーバーに対してcpコマンドを実行してファイルを別名でコピーする(cp ./www/cakephp-2.8.x/app/Config/database.php.default ./www/cakephp-2.8.x/app/Config/database.php)

13:コンソール上のサーバーに対してviコマンドを実行して下記のようにファイルを編集する(vi ./www/cakephp-2.8.x/app/Config/database.php)
public $default = array(~)とpublic $test = array(~)の要素に実環境の情報を設定する。
‘host’ => ‘データベース サーバ名’,
‘login’ => ‘データベース ユーザ名’,
‘password’ => ‘接続パスワード’,
‘database’ => ‘データベース名’,
‘prefix’ => ”,
‘encoding’ => ‘utf8’,

14:コンソール上のサーバーに対してviコマンドを実行して下記のようにファイルを編集する(vi ./www/cakephp-2.8.x/app/Config/bootstrap.php)
いちばん下に次の1行を追加する。
CakePlugin::load(‘DebugKit’);

15:コンソール上のサーバーに対してviコマンドを実行して下記のようにファイルを編集する(vi ./www/cakephp-2.8.x/app/Controller/AppController.php)
いちばん上に次の1行を追加する。
Configure::write(‘debug’, 1);
class AppController extends Controller {~}の中に次の1行を追加する。
var $components = array(‘DebugKit.Toolbar’);

16:cakePHPをインストールしたURL(http://サーバー名/cakephp-2.8.x/index.php)にアクセスする。

cakePHPinstall

LinuxはWindowsと比べて、消費電力を抑えやすい

エコロジーを主眼にパソコンOSを選定すると、Linuxが最有力と言われている。LinuxはWindowsと比べて、消費電力を抑えやすい。例えば、topコマンドでcpu占有率を表示しておき、負荷の高いプロセスを切ることで消費電力を抑えられる。

top_command

機能面から見ても従来とは違い、ブラウザ経由で様々なサービスを利用できるうえ、openOfficeやGimpなどの充実したアプリケーションをLinux上で利用することができる。

保守面から見ると、Windowsでは、処理の負荷が集中すると操作不能になることがあり、強制終了によるシステム損傷を修復するために多くの時間を取られてしまう可能性もある。また、再起動の際に次々とセキュリティホールとなっている場所に「パッチ」を当てるシステム更新が行われ、長時間待たされてしまうこともある。

一方、Linuxでは、処理の負荷が集中して不具合を起こしても、「Ctrl」+「Alt」+「BackSpace」を同時に押せば、ログイン画面に戻れる。また、システム更新の通知が表示されても、ユーザーの都合で実行すればよく、システム更新中にパソコンが使えなくなることはない。