最新記事一覧

サーチ(探索):アルゴリズムの基本4

From: リスキルテクノロジー 松田航
新宿本校にて、、、

世の中には
さまざまな情報が溢れています。

情報を効率よく管理して活用するために
コンピューターシステムが作られますが...

膨大なデータ量になるほど
特定のデータを探し出すのに時間がかかります。

今回はデータを探すアルゴリズムである、

「サーチ」

についてお話しします。

インターネットでも業務システムでも広く使われています

インターネットでは、
何か知りたいことがある時、

Yahoo!やGoogleなどの
検索サイトで情報を調べることは多いですよね。

検索サイトでキーワードを入力すれば、
キーワードに関連するサイトが
検索結果として表示されます。

業務系のシステムであれば、
顧客情報や売上情報、経理情報など、
さまざまなデータがデータベースで管理されています。

例えば、ある顧客の情報を見たい時には、
顧客の名前や電話番号をキーワードにして検索すれば
顧客の情報を知ることができます。

このように、
キーワードを指定して
特定の情報を探索することを...

「サーチ」

...と言い、ソートと共によく使われるアルゴリズムです。

サーチアルゴリズムには
さまざまな種類がありますが、

その中でも基本的なものをご紹介しましょう。

リニアサーチ(線形探索法)
~データをひとつずつチェックして探索~

リニアサーチは線形探索法とも言われる、
サーチアルゴリズムの中では
最も単純な探索アルゴリズムです。

一直線に並んだ箱の中を
順番に空けて中身をチェックしていくのに似ています。

リニアサーチのイメージを見てみましょう。

linear

3,2,5,4,1と並んだ
5つの値を持つ配列があり、
この配列から4という値を探し出します。

リニアサーチは
順番に値をチェックしてゆくアルゴリズムです。

探索値と1番目の値を比べ、
探索値と2番目の値を比べ、
探索値と3番目の値を比べ...

と、順番に比べていって、
値が一致したらサーチ終了となります。

もし、どの値とも一致しなければ、
探索結果は無しとなります。

インターネットで検索する時でも
でたらめなキーワードで検索すると...

「一致する情報はみつかりませんでした」

と表示されますが、あれと同じですね。

リニアサーチは1つずつ値を比較するので、
とても時間がかかってしまいます。

少量のデータ探索には使えますが、
膨大なデータ量になると時間がかかりすぎて
実用的ではありません。

そこで、リニアサーチよりも
探索速度の速いアルゴリズムが必要とされます。

バイナリサーチ(二分探索法)
~データを2つに分けて効率よく探索~

バイナリサーチは二分探索法とも言われる
探索速度の速いアルゴリズムです。

ただ、リニアサーチをするには、
ひとつだけ条件があります。

その条件とは、
探索する配列の値が
あらかじめソート(並べ替え)されていることです。

それでは、
リニアサーチのイメージを見てみましょう。

バイナリサーチよりもややこしいので、
イメージだけつかんでください。

binary

1,2,4,5,6,8,9と
値が昇順に並んだ配列があり、
この配列から4という値を探し出します。

バイナリサーチでは、
まず配列の中間にある値をチェックします。

配列の中間の値は5なので、
探索値は中間よりも右側の
小さいグループにあることがわかりますね。

次に、小さいグループの中から
中間にある値をチェックします。

中間の値は2なので、
探索値は小さいグループの中間よりも
右側にあることがわかります。

そして、小さいグループの中間より
右側の値をチェックします。

ここで探索値が見つかったので、
サーチ終了となります。

バイナリサーチでは
ソートされたデータの特徴を活かして、

中間点の値を比べ続けることにより
高速に探索することができます。

リニアサーチだと
全ての値をチェックするか、
探索値が見つかるまでサーチを続けますが...

リニアサーチの場合は
必要ないチェックを行わずに探索できるのです。

ただ、リニアサーチを行う前には
必ずソートしなければいけないので、
ソートのための処理時間がかかるのが難点ですね。

サーチは常に使われる重要なアルゴリズム

このほかにも
さまざまな種類のサーチがありますが、
必要に応じて覚えていってください。

実際の現場では、
どのアルゴリズムを使うなどというのは、
あまり考えません。

データベースの性能に頼ってしまった方が、
いいからです。

しかし、考え方という意味で、
いろいろな場面で役立つのがアルゴリズムというやつです。

さまざまなアルゴリズムを習得して、
他のプログラムに利用できるような
応用力を目指すべきでしょう。

リスキルテクノロジー
松田

PS

アルゴリズムの範囲は広がっています。

ロボット掃除機の物体認識アルゴリズムや
テレビのCM音量を自動的に抑えるアルゴリズムなど、

ITの活用シーンが増えるにつれて
そのバリエーションは幅広くなっています。

あなたがエンジニアとして
最新のアルゴリズムを使うこともあるでしょう。

その日のために基本をしっかりとおさえて、
準備を整えておきましょう。

アルゴリズムも含めて学べるプログラミング講座

ユーザーエージェントとは?

From: リスキルテクノロジー 松田航
新宿本校にて、、、

「エージェント(代理)」

というと、
プロスポーツにおける
代理人を想像してしまいますが、

Webの世界でも
エージェントが使われています。

今回は
Web技術における

「ユーザーエージェント」

...についてご紹介します。

ユーザーエージェントって何ですか?

Webサーバーは
ブラウザからの要求に対して

処理した結果を
Webページとして表示します。

このやりとりの際、
あなたが使っている
ブラウザの種類やバージョンを

Webサーバーが
把握しているということを
ご存知でしょうか?

実は各ブラウザには…

「ユーザーエージェント」

と呼ばれる固有の設定があり、
HTTPでWebに接続する際の情報に
ユーザーエージェントが含まれているのです。

このユーザーエージェントでは
あなたが...

・どのブラウザを使っているか?
・ブラウザのバージョンはいくつか?
・PCのOSは何か?

...といった情報が含まれておいあす。

Webサーバーでは
送られた情報をもとにして、
ブラウザに最適な方法でページを表示します。

たとえば...

スマホから
Webページにアクセスすると

自動的に
スマホ用サイトに移動することがありますが、

これはユーザーエージェントを判定して、
スマホからのアクセスの場合には
スマホ用サイトに遷移するようにしているためです。

ユーザーエージェントの例

各ブラウザ別に
ユーザーエージェントの例を見てみましょう。

■Internet Explorer

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

■Google Chrome

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36

■Firefox

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
Firefox 14.0 Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Mozilla/5.0 (X11; Linux i686; rv:40.0) Gecko/20100101 Firefox/40.0

■Android Mobile Safari

Mozilla/5.0 (Linux; U; Android 3.2; ja-jp; A01SH Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1
zilla/5.0 (Linux; U; Android 4.0.3; ja-jp; URBANO PROGRESSO Build/010.0.3000) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Linux; Android 4.2.2; ja-jp; SC-04E Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19

これらのは
ほんの一例ですが、

ブラウザの種類や
バージョンにより違いがあります。

また、
使用している端末のOSや
32bitマシンか64ビットマシンかによっても
ユーザーエージェントは変わります。

このように
ユーザーエージェントは

使用している環境によって
細かく分けられており、

この情報をもとに
Webサーバーのアクセス解析が行われます。

例えばWebサイトが...

・どのブラウザでよく閲覧されるか?
・どのOSからアクセスされているのか?
・PC、スマホのどちらからのアクセスが多いか?

...などといった
統計を取る事ができるのです。

ユーザーエージェントの偽装って?

ユーザーエージェントは
使っているWebブラウザから
Webサーバーに向けて、

「こういう端末でアクセスしていますよ」

といった、
いわば自己紹介のようなものです。

この自己紹介を
エージェント(代理人)が
行ってくれているといったイメージですね。

しかし、
このユーザーエージェントですが、

偽の情報を
設定することもできてしまいます。

偽のユーザーエージェントで
Webサーバーにアクセスすることを...

「ユーザーエージェントの偽装」

と言い、
偽装されてしまうと
Webサーバーは正しいアクセス解析ができなかったり、

本来公開したくない環境に対して
Webページを見せたりしてしまいます。

例えば
スマホ専用のサイトを
PCから閲覧するような場合ですね。

サイト管理者は
スマホだけをターゲットにして
Webサーバーを公開しているにもかかわらず、

「スマホからアクセスしています」

...とユーザーエージェントを偽装した
PCから閲覧されてしまうと迷惑ですよね。

運営側にとっては
偽装されるとデメリットが大きいので、
偽装対策の技術も進んでいます。

ユーザーエージェントを偽装すると
サービス提供側から罰則を受けるケースもありますので、
決して行ってはいけません。

バージョンアップ情報に注意しよう

ユーザーエージェントは
ブラウザのバージョンにより変わりますが、

場合によっては
大きく変わるケースもあります。

例えば、
あるWebサイトで
特定のブラウザからのアクセスを禁止している場合、

ユーザーエージェントから
ブラウザを判定しますが...

新しいバージョンの
ユーザーエージェントに対応しきれず
ブラウザを判定できない場合もあります。

そのため、
Webアプリの開発エンジニアは、

ブラウザのバージョンアップ情報などを
把握しておくことが必要です。

ソフトウェアエンジニアであれ
インフラエンジニアであれ、

使用している
アプリケーションには
バージョンアップはつきものです。

バージョンアップしたら
動作しなくなったということがないように、

バージョンアップ情報などは
しっかりと把握するようにしましょう。

リスキルテクノロジー
松田

PS

Webアプリケーションを開発するプログラミングの講座

Java開発環境を作ろう-JDKインストール編-

From: リスキルテクノロジー 松田航
新宿本校にて、、、

以前のブログで
Javaの基礎知識をご紹介しました。

CentOS7に
Javaがインストールされているかを
確認していたところ...

openJDK

...が既にインストールされていましたね。

openJDKとは
いったい何なのでしょうか。

openJDKって何ですか?

openJDKとはJavaSEの

「リファレンス実装」

...という位置づけです。

では
リファレンス実装とは
何でしょうかという話ですが...

プログラムを学ぶ時に
実際に動いているソースコードがあると

学びやすさは
確実にアップしますよね。

OpenJDKは
Javaの言語仕様を理解するために
オープンソース化されたものです。

実際には
openJDKとJDKは
ほとんど同じコードで書かれています。

細かいところでは
書き方の違いがあるようですが

機能的に
openJDKとJDKは同じもので

JDKの提供元である
Oracleも

openJDKは
JDKのリファレンス実装であると
公式に認めています。

つまり、
JDKがなくてもopenJDKがあれば
Java言語は学べるということです。

Oracle版のJDKをインストールするには?

それでも...

正規のJDKを使いたい!

...という方も
いらっしゃるでしょうから
JDKのインストール方法をご紹介します。

まずは
Oracleのホームページから
最新のJDKをダウンロードします。

Oracle
[URL]http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
step1

Java SE Development Kit 8u45

...が最新ですね。

Linux x86

または

Linux x64

のRPM版をダウンロードします。

x86とは32bit版のこと、
x64とは64bit版のことですので、
お使いのPCにあわせてダウンロードしてください。

ダウンロードする時には...

Accept License Agreement
(ライセンスに同意します)

...をチェックしないと
ダウンロードすることができません。

ダウンロードしたファイルは

ホーム-ダウンロード

に保存されています。
※保存方法にもよります

step2

さて、
今回はいつものように
コンソールからのインストールではなく

ウィンドウからの
インストールをしてみましょう。

このファイルを
右クリックして...

step3

ソフトウェアのインストールで開く(O)

を選択すれば
インストールが開始されます。

step4

途中で
パスワードを求められますので

入力して
インストールを続けます。

step5

インストール中の
メッセージが消えれば
インストールの完了です。

では、
インストールされているかを
確認してみましょう。

step6

openJDKに加えて
JDKがインストールされました。

openJDKとJDKのどちらが有効なの?

さて、
インストールはできましたが

今のところ
同じJavaでも...

openJDKとJDK

この両方が
共存していることになります。

Javaを実行するときは
どちらが使われるのでしょうか。

Javaコマンドで
アクティブなJavaを調べてみましょう。

CentOSが認識している
Javaのバージョンを確認します。

java -version

step7

どうやら
openJDKが認識されているようです。

Oracle版のJDKを使うには
どうしたらいいのでしょうか?

次回、
その方法についてご紹介しましょう。

リスキルテクノロジー
松田

PS

Oracle版のJDKでなく
openJDKでもJavaはきちんと動きます。

プログラミング講座ならこちらから

プログラミングの勉強をスタートしたとき楽になる考え方

プログラミング

From: 松田航
新宿サザンテラスのスタバにて

何かをはじめるととても大変です。ほとんど素人ですから何をやってもうまくいきません。いたるところでつまずきます。そして、だんだんいやになっていきます。

「何時間使ってもデバッグできない・・・。センスがないのか・・・」
「いくら考えてもオブジェクト指向で書けない。なんでだ!」
「うわぁ、またssh接続できなくなったよ。馬鹿か俺は」

その分野を勉強し始めたときは、どんなものであれ苦しくなるものです。そんなときはこう考えるのをおすすめします。

だんだん楽になる

今が大変だから、もっときつくなるんだと人間は思い込みます。この職業は向いていないんだ。違う分野に移動しようか。

今がこんなに大変なんだから、今後はもっと大変になるんだろうな、とか。

特に日本人はこの傾向が強いものです。楽して成果を上げた人よりも、一生懸命練習して成果を上げた人を褒め讃えるのが日本人の特色です。いわゆる成功者も嫌われたくはないため、「いや、大変だったのははじめだけだよ!」とは言わずに、「今も努力の連続ですよ」と言います。

しかし、実際には動き出すところが一番大変で、徐々に徐々に楽になっていきます。スーパエンジニアよりも、今日初めて学んだ人の方が大変で、偉大な仕事をしているのです。

物理の基本法則

大玉ころがしは、押すときが一番大変です。しかし、どんな重い球でも、転がり始めると、すぐにコロコロところがっていきます。「慣性の法則」が働くからですね。

絶対不変の慣性の法則によると、動いているものは動き続けようとします。反対に止まっているものは止まり続けようとします。

だからはじめは大変なのは仕方がないことで、少しでも動き出せば、後から加速させるのは割と簡単なのです。

学習曲線と呼ばれる曲線をご存知でしょうか? 学習時間と効果のグラフです。効果の伸び率がはじめは非常に悪い。しかし、それを残り超えると角度は急勾配になって生きて、一気に成長することができるようになります。

ただ、頑張ればいいのです。

まずは小さいところからはじめてみる

はじめが大変なのですから、いきなりすべて理想通りにやる必要はありません。これをやるから、誰しも挫折をします。

例えば、200ページある洋書に手を出してみたとしましょう。休暇中の10日間で全部読み切ると決意したとします。大抵の場合、「よし、1日20ページだな。今日から頑張ろう」と考え、初日もしくは翌日に挫折します。

そうではなく、「今日は初日だから1日10ページにしよう。その代わり丁寧に読もう」とすると、結果目標をクリアすることが多くなります。

最大限の結果をまずは望まず、まずは小さいことからはじめてみる方がいいのです。

・オライリーの新書を買ったら、まずは目次だけでも読んでみる
・英語の勉強を決意したら、洋楽を聴くようにする
・技術ブログをはじめようと思ったら、まずはブログだけ開設してみる

などですね。まずは抵抗のない、小さいことからはじめましょう。それだけで目標への到達率が大きく変わってきます。

もしあなたが今、やりたいと思っていることがあるのなら、今日まず何かしらの行動を起こしましょう。それはとても小さいことで構いません。

あなたは何からスタートしますか?

松田

PS

はじめは苦労が多く、疲れてしまい逃避しがちなので、強制的にプログラミングを勉強しなければならない状態にするのがいいです。

一気にレベルが上がるプログラミング講座はこちら

Java開発環境を作ろう-基礎知識編-

From: リスキルテクノロジー 松田航
新宿本校にて、、、

エンジニアになるために
習得しておきたい言語のひとつに...

Java

…が挙げられます。

以前のブログで
CentOSをインストールしましたが…

そこに
Javaの開発環境を作りたいと思います。

まずは
Javaに関する基礎知識からご紹介しましょう。

Javaって何ですか?

Javaは1990年代に
Sun Microsystems社によって
開発されたプログラミング言語です。

Web上で話題となっている
プログラム言語をランキングしている…

TIOBE Programming Community Index

において
Javaは常に上位に位置しており、

就転職市場でも
習得していれば有利な言語です。

TIOBE Programming Community Index
[URL]http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

TIOBE

Java人気の理由のひとつに…

プラットフォーム(環境)に依存しない

...という点が挙げられます。

他のプログラム言語は

特定の機種やOS上でしか動作しない!

...というものが多いのですが、

Javaで作ったプログラムは
どのような環境でも動作するのです。

その理由は...

Javaバーチャルマシン(JVM)

にあります。

JVMをすごく簡単に言うと、
どんな機種やOSに対してでも

Java言語を翻訳して
プログラムを実行できるようにするものです。

言語的にも
技術者人口の多かった
C言語やC++に似ている構造ですので、

技術者にとっては
取り組みやすく、

Javaが市民権を得るまで
多くの時間がかからなかったと言えます。

JDKとJREって何ですか?

Javaについて
少しでも調べたことがある方は

JDK
JRE

という言葉を
目にしたことがあるでしょう。

Javaだけではないですが、
プログラム言語では

このような、
略語が多く使われていますので、
混乱する方もいらっしゃるようです。

この2つの言葉の違いを
簡単にご説明しましょう。

JDKとは

Java Development Kit

の略で...

Javaを使った
アプリケーション開発に必要なものです。

JDKには
開発において必要となる...

・コンパイラ
(プログラムを実行形式にする機能)

・デバッガ
(バグ発見・修正を支援する機能)

・クラスライブラリ
(開発を効率化するライブラリ)

・ドキュメント生成
(ソースからドキュメントを自動的に作る機能)

...などが含まれたものです。

一方、JREとは

Java Runtime Environment

の略で...

Javaプログラムを実行するのに
必要なものです。

実行に必要なものですので、
Javaを使った開発はできません。

簡単に言えば...

・JDKはJavaアプリケーションを作るのに必要
・JREはJavaアプリケーションを実行するのに必要

...ということです。

ちなみに
JDKはJavaを実行しますので、
JREも含まれています。

じゃあJavaME、JavaSE、JavaEEって何ですか?

また略語だらけですね。

Javaは
ターゲットとなる環境により
製品を分けて提供されています。

JavaMEは...

Java Micro Edition

の略で...

家電製品などに組み込まれる
小型端末向けのJavaのことです。

JavaSEは...

Java Standard Edition

の略で...
一般的なPC向けのJavaのことです。

JavaEEは...

Java Enterprise Edition

の略で...
サーバーなどで使用される
企業向けのエディションになります。

ちなみに、
少し前までは
違う呼び名で呼ばれていました。

JavaME = J2ME
JavaSE = J2SE
JavaEE = J2EE

インターネットで検索すると
これらの単語が出てきますので、
混乱しないように注意してくださいね。

openJDKって何ですか?

それでは
いよいよ開発環境作りに入りますが...

まずは
JDKがインストールされていないか
確認してみましょう。

コンソールを開いて
以下のコマンドを入力します。

step1

...既にJDKが入っていますね。

ですが、

openJDK

...となっています。

openJDK?

また新たな言葉の登場です(笑)。

一般的なJDKとは
違うものなのでしょうか?

次回、
openJDKについてご紹介します。

リスキルテクノロジー
松田

PS

Javaを習得しておくと
エンジニアとして対応できる
開発のジャンルが飛躍的に広がります。

エンジニアを目指すなら
ぜひ習得しておきたい言語です。

Javaプログラミング講座ならこちら

初心者のためのリーンスタートアップ

From: 松田航

リーンスタートアップ。

IT、さらに言うと、ITスタートアップの界隈で話題になっている(なった)起業の方法論です。

これがなんで話題になったかというと、起業のプロセスがようやくすこし科学的になったからです。

キーワードは「検証」です。

今からリーンで立ち上げるプロジェクトがあるため、復習がてら書いてみます。

スタートアップはギャンブル?

for_blog_la

スタートアップというのは、当たるかどうかが正直わからないものです。チャレンジングなものほどその傾向が強く、Googleもそうですし、Facebookもそうです。仮に私が記憶がない状態で、過去に戻ってFacebookの創業メンバーと会っていたとしても、なんだこの連中? くらいにしか思わず、投資なんて考えもしなかったでしょう。

実際100社に投資して、1,2社当たればいいや、というある種のギャンブルです。

急成長するスタートアップになるのか? という疑問どころか、そもろもターゲットがいるのか? その商品にお金を払ってくれるのか? そもそも悩みが独りよがりでは無いのか? 

そういう不安を押しのけつつ、作って、当たれー!!!と祈るのが、スタートアップだったわけです。(いい過ぎですが)

リーンスタートアップでは、起業のリスクを最小限にし、意味のある失敗を繰り返すことで、成功へ近づいていく方法論を確立しています。これはとても革新的で、ちゃんとビジネスとしてやりましょうね、というのがひとつの案として示されたということです。

リーンスタートアップの要訣

リーンスタートアップの要訣はなんといっても、「検証による学習」にあります。

(1)すごく前

完璧なものをつくって、リリース。ウォーターフォール

(2)すこし前

とにかく早くリリース。全力で書け。アジャイル

(3)リーンスタートアップ

ちゃんと検証して、それが本当に必要なのか見てから、最小限作ろう。リーン

 

というのがざっくりな違いです。前と書いてありますが、現在でも主要は上の2つでしょう。

しかし、(1)(2)ですと、無駄なものを作る可能性が高くなります。どれだけ自信満々に作り始めても、まったくユーザが欲していないものを作りがちです。(実際に、僕は全力で利益にならないものをつくってしまいました)

そうすると、それまでに使った費用や工数はすべて無駄になり、だいぶ厳しいスタートアップ生活を余儀なくされます。bootstraping起業(自己資本起業)ならともかくとして、投資家がいたらより厳しいでしょう。詰められます。

だからこそのリーンスタートアップです。

顧客の課題・それに対するソリューション(解決策)・価格(収益)・チャネル、をきちんと検証し学習して、それからスケール(拡大)を考えよう、という話です。

例えば、靴の販売で有名なザッポスは、地元の靴屋の靴をそのままオンラインで販売してみて、ニーズを確認しました。

このように、実際に必要とされているものを、ユーザがいる+チャネルで売れている、という確認が取れれば、事業化および拡大に安心して走れることになります。

反面、ダメだった場合、すぐに調整してのピボットや、そもそものアイディアの再構築に時間がさけます。

やり方

やり方はだいたいこんな感じで流れます。もちろん考え方や本質の方が大事なので、参考までに。

①プランA(本来の計画)を作る

②プランで最もリスクの高い部分を見つける

③プランを体系的にテストし続ける

① プランAを作る

はじめのプランを作ります。ビジネスモデルの仮説を捕まえて、書き出します。

プランAはソリューションではなく、ビジネスモデル全体です。

なんの課題を持っているか? 

では、ソリューション(解決策)は?

チャネルは?

収益は?

の流れです。ソリューションに拘り過ぎるのはやめましょう。ここ考えるのが一番楽しくて、大体の起業家が得意なところでして、その結果はまるのもここです。

もうすこし細かいところを考えるのであれば、リーンキャンバスというツールがいいでしょう。『実践リーンスタートアップ』の著者アッシュ・マウリャ氏が作成しているものです。


No Problems in Your Business Model is a Problem

これら9つのブロックに内容を記述していき、ひとつのプランとするのです。

このリーンキャンバス何がいいって、作成するのに30分もかかりません。15分くらいで作成できます。

何枚も作成して、それをまともな相談相手に相談しましょう。まともな相談相手とは、起業or事業についての理解があり、相談に対してなんらかの適切な反応が得られそうな人です。

② プランで最もリスクの高い部分を見つける

「成功する製品の構築 = リスクを減らす」ですよね。なので、成功するためにはリスクを低減しないといけません。

スタートアップの最も大きなリスクとは、「誰も欲しく無いものを作ること」です。そのため、3段階に渡ってテストします。

■ 第1ステージ 課題/解決フィット

解決に値する課題があるのか?をテストします。

実はアイディアはとても安いのです。なんらかの課題を頭に入れつつ、10冊くらい起業家やマーケターの本を読んでみてください。きっと、新規のアイディアが2,3ノートに書かれているはずです。

しかし、そのアイディアに対して取り組むのは高いコストが必要です。

・それは顧客が必要としているものですか?
・顧客はお金を払ってくれますか?
・それは解決可能ですか?

この3つの問いに答えるために、顧客にインタビューをしましょう。

知り合いの知り合いくらいの距離感がちょうどいいですが、

■ 第2ステージ 製品/市場フィット

続いて、誰かに必要とされるものを構築したか? をテストします。

簡単に言えば、必要最低限のものだけを用意して、実際に売ってみるということです。

とにかく必要最低限のものです。売るのに必要最低限。コア部分だけという意味ですね。アーリーアダプターが好みそうなあれです。

実際に売ってみるのも手っ取り早いのですが、顧客へのインタビューを挟むのもいいでしょう。そして、買ってくれた人がちゃんと使ってくれるかを確認しましょう。

使ってくれていないのであれば、またインタビューです。で、修正するところは修正する。

■ 第3ステージ 拡大

ここまでできて初めて拡大を考えます。

成長するための方法をひとつに絞って、時間や資金を投下します。これもちゃんとテストをしているはずですから、安心してお金を入れられるはずです。

ここまでしっかりと検証・学習に時間を費やせば、安全側な起業ができるようになります。

③ プランを体系的にテストし続ける

そして、一度検証して終わりではなく、構築 - 計測 - 学習のループを回し続けます。

常に、仮説=>検証=>結果を確認します。

・顧客はこれを悩んでいるんじゃないか?
・これだったらその悩みを解決できて、そこでお金がもらえるんじゃ無いか?
・実際に小さいものを用意して売ってみようか? 小さい機能追加してみようか?
・売れた? じゃあ、本格的に用意をしよう

です。

なので、失敗するのであれば、一刻も早く失敗する。それが学習ループです。

リーンスタートアップとはこのような起業方法です。従来の方法に比べて、かなり精度が高くスタートできるのがわかります。

サイバネティクス理論を取り入れた、誘導ミサイルみたいなものですね。

ただし!!!

リーンスタートアップがよくわからず、悩んで足が止まるくらいだったら、いいからガンガン進めちゃった方がいいんじゃないかと、個人的には思っています。

普通の人や、スタートアップ初心者がごちゃごちゃ考えると、たいてい進まずに諦めるもんです。

特にその分野自体をはじめてやる場合、どちらにせよ、よくわかりません。

検証とか言われましても。。。というのが正直なところだと思います。

突っ込んで、一回叩きのめされて、2回目突っ込む時に「ああ、リーンスタートアップって正しいよね。これだよね」というふうに言えるようになったほうが健全だと思っています。

業界に詳しければ、別なんでしょうが、強くそれを感じています。理論だけの人は行ったり来たりで進まずに、割と大変そうだなぁ、とはたから見て思います。

ただ、なんにせよ、最低限のテストを実施して、失敗するまでの速度を速めるという感覚は、持っておくといいのではないでしょうか?

 

松田

エンジニアにとってのレビューとは?

From: リスキルテクノロジー 松田航
新宿本校にて、、、

プログラムや
システムの設計は

作っておしまい!

という訳にはいきません。

必ず内容を
他の人に説明する必要があります。

今回は
エンジニアとっての

「レビュー」

についてお話ししましょう。

エンジニアにとってのレビューとは?

芸術家が絵を描いて
見事な作品を作ったとします。

誰もが見惚れる程の
美しい抽象画です。

しかし、
芸術家はその抽象画について

絵の表現する意味や
細かい内容については

見る人に説明する必要ありません。

絵画は
人の感性に訴えかけるものです。

説明することで
見る人が受ける感覚を
惑わせてしまうケースもあります。

しかし
エンジニアが作る
プログラムや設計書などは

感性ではなく
理論や手法を明確にしたものです。

芸術のように
人によって受け止め方が違うと
問題になる場合もあります。

そこで
他のエンジニアやユーザーに

「レビュー」

という形で
内容を詳しく説明する必要があるのです。

読んでおいてください-だけではダメなのです

設計書も
プログラムソースもあるのに
どうしてレビューが必要なの?

それを見て理解すればいいでしょう?

...という
エンジニアも中にはいらっしゃいます。

しかし、
どれだけ優れたドキュメントでも

読み手によって
理解できる範囲が異なります。

例えば...

参考書を買って勉強したという
経験を持つ方は多いでしょう。

勉強していくうちに...

「書いている内容がイマイチわからない」

「説明がむずかしい」

と思う箇所が
必ず1つや2つは出てくるものです。

そういう時に
読み手に合わせて丁寧に教えてくれる
講師がいれば理解できますよね。

レビューにおいては
関係者に内容を理解してもらうことも目的です。

設計書やプログラムを
作った本人だからこそ、
一番詳しい講師になれるのです。

エンジニアが行うレビュー

エンジニアは
レビューをする機会も
レビューされる機会も多いと言えます。

システム開発を進める上で、
よくあるレビューに次のようなものがあります。

■1: 設計レビュー

基本設計や詳細設計など
システムの設計内容について

エンジニアやユーザーに
説明することが目的のレビューです。

内容の理解を深めるの
ももちろんですが...

設計ミスを早い段階で
発見して修正するのも目的のひとつです。

2: ソースレビュー

プログラマが作った
プログラムソースを、

他のエンジニアに説明し、
適切な処理内容が行えているかをチェックします。

ほとんどの場合は
開発チーム内で行いますが、

ソースがわかるユーザーがいる場合は
ユーザーが参加するケースもあります。

3: テストレビュー

テスト仕様書や
テスト結果についてのレビューです。

テスト内容や
テストの種類に問題がないか、

不具合があった場合、
何が原因で不具合が発生したかなどを
主にユーザーに向けてレビューします。

これ以外にも
いろいろなレビューがありますが、

所属している企業やチームによって
レビュー対象は異なります。

レビューするにあたってのポイント

レビューを苦手とする
エンジニアは少なくありません。

黙々と仕事をするのは得意でも、
人前で何かを説明することが苦手!

...と言う方は多いです。

それでも、
エンジニアを続ける限り
レビューする機会はなくならないでしょう。

そういう方は、
ソースコードにコメント多用したり、

わかりやすい言葉を使って
設計書を作ったりと、

プログラムや設計書を
丁寧に作るようにしましょう。

実際のレビューでは
作成物を見ながらレビューするのですから、

丁寧に作っていれば
それを読み解く形で進めることができます。

あとはストーリーですね。

どのような流れで
レビューを進めるのかを思い描いて
レビューすれば大丈夫です。

レビューに関しては...

トーク力を高めなければいけない!

と考える方もいらっしゃいます。

それはそれで
間違いではないのですが、
トーク力を高めることが必要なのではありません。

得意不得意は誰にもあります。

トークが不得意ならば、
丁寧なドキュメントを作り、

レビューの際に
トーク力不足を補うと言ったように...

あなたの不得意分野を
得意分野でカバーできるように
それをカバーできる工夫を忘れないようにしましょう。

リスキルテクノロジー
松田

PS

誰もが優れた能力を
持っている訳ではありません。

しかし、
それに近づくための
向上心を持つことこそが大切なのです。

そして、
あなたの能力を高める手助けをすることが
私たちの役目でもあります。

講師にリアルタイムでレビューしてもらえるプログラミング講座

エンジニアのための時間管理術

時間管理術

From: 松田航
新宿本校にて

「今日、あなたはなんの仕事をしましたか?」

この質問に明確に答えられるエンジニアは幸いです。

新人エンジニアや新しい職場に入ったばかりのエンジニア、もしくはフリーでやっているエンジニアは割ときちんと答えられるでしょう。

しかし、企業に長くいればいるほど、本来やるべき仕事から遠く離れたことに時間を使ってしまいがちです。時間管理術を身につけると、仕事の効率が格段にあがります。

本来やるべき業務ができていない

for_blog_la

設計だったり、コーディングだったりすると思いますが、あなたが本来するべき仕事がほとんどできていない日が多くあるはずです。とくに最近では、1日2時間も生産的な時間が取れていないという感想を持ったエンジニアが急増しています。

本当の力から言えば、3時間で終わるような機能追加が、異常なほど時間が取られ、3日経っても終わらないというようなことがあるはずです。

これには、主に二つの理由があります。

大きく時間を取られることが沢山ある

これは会議や顧客への訪問などです。

会議を至上命題と捉えている会社員は多いもので、会議が多ければ多いほど、その分生産に使える仕事が減っていきます。

これは仕方ない部分もあり、会議がないと進まない場合もあるのですが、時間は制限すべきですし、最低でも区切るべきです。いらなくなった人は随時リリースするなど。

大きい時間がまるごとドカっと取られていると、そこに至るまでの時間もなかなか集中できません。集中しても、すぐに会議があるとわかっているからです。

ですから、会議の数は少なく or まとめてやる。

そして、会議自体も時間を少なくしても、目的に沿ったものにしましょう。

時間節約のアイディアは沢山あり、例えば、立って会議をするなど。弊社では実行していますが、会議の時間が20-30%ほど減ります。

短い時間のロスが沢山ある

とはいえ、なかなかどうして大きい時間のロスは減らしにくい物です。とくにあなたが上の立場でもなければ、、、まず意見するのは難しいでしょう。

それは仕方がないことです。階層社会にいる訳ですから、上司の命令にはある程度従うべきです。(そのために会社組織があるわけですし)

では誰しもが解決できる問題はというと、短い時間のロスをなくすということです。短い時間というのはそれこそ、3分や1分、30秒といった極短い時間です。

実はこの時間がかなり大事なのです。

なぜか? 

人間は一度切れた集中力を戻すのに、ものすごい時間と体力を必要とするからです。

一度集中状態に入ったら、その状態をなるべく維持する努力をしなければいけません。プロの将棋を見ていればわかりますが、誰も音を立てようとしません。音を立てる対局者は全般的に嫌われます。

それくらいノイズなどの集中力を妨げるものはアウトとみなされるのです。

その中でも特に対処が必要はのは、下記の3つです。

時間泥棒その1メール

メールというか、メッセージといった方が正確でしょうか?

SlackでもChatworkでもスカイプでも構いませんが、なんらかのメッセージです。メッセージが来るたびに、アラートを発信して、それを読みにいっている人がいますが、あれほど非効率なことはありません。

アラートなんて全部切りましょう!

通知はすべてオフ。

そして、読む時間を限界まで制限しましょう。例えば、メールは1日に3回も見れば十分です。とにかく見ない。

見るときはそれようの時間をあらかじめスケジュールに追加しておく。それくらい、見ない。その時間以外は見ないという固い意志をもってください。

もっとも大きな時間のロスがこれです。

確かに人付き合い的には厳しくなるかもしれませんが、生産性は10倍くらいになります。一週間でいいので試してみてください。(本当に)

また、当然ですが仕事中にSNSにアクセスするとかもNGの極みです。同様の理由で。

時間泥棒その2 電話

これはできる人だけやってください。できない人もいるでしょう。

しかし、電話から極力離れるという考えは持っておいて損はないです。電話の近くにいて、いいことはないです。

当たり前ですが、かかって来たらとらなくてはいけないのですから。

対顧客の部署では電話がもっとも大事なものなので、必ず、一瞬でも早く取るべきです。

しかし、エンジニアは違います。エンジニアの存在目的はプロダクトを作ることです。内戦の電話や顧客からのマニュアルに書いていあるようなサポートのために存在するわけではありません。まして、営業の電話をうけるのなどは論外です。

とにかく電話から逃げましょう。(逃げられるなら)

※ 顧客サポート部隊に属しているのに、逃げるとかは職務怠慢なのでやめましょうね。

時間泥棒その3 話かけらる

話しかけられるのはエンジニアの常です。他のエンジニアからだったり、営業さんからだったり、PMからだったりしますが、とにかく常に話しかけられます。IT企業以外でエンジニアをやっている人ほどそれを理解しているでしょう。

なぜなら彼らは他の人の時間や集中力を大事なリソースだと思っていないからです。

ではどうするべきか?

まずは、話しかけるなオーラを出しましょう。いえ、不機嫌そうにしろというわけではなく、イヤホンをして、画面にのめり込むように仕事をしましょう。それだけで、話しかけてくる人の数は激減します。びっくりするほど。

イヤホンは極力大きい物。イヤホンよりはヘッドホンの方が良いです。

そしてちなみに、コーディングをしながら、音楽を聴くのは止めましょう。明らかに集中力を切らします。マルチタスクは、人間には向いていません。

音楽はOFF。見せかけだけのヘッドホンを装着しましょう。

つづいて、打ち合わせの時間を決めてもらう。

5分でも10分でも打ち合わせの時間を決めてもらう習慣を持ちましょう。

ちなみに60%くらいの質問は時自分で解決できるものだったりします。調べるのが面倒だから聞いたりですとか、自分で考えるのが億劫だから聞いたりですとか、責任を一緒に追ってねという意味での質問が大体です。

なので、これだけで質問が4割くらいは減ります。なぜって、会議を設定するよりは自分で考えた方が楽だからです。

時間が倍増する

これだけで、今までの2倍は集中の時間が取れるようになります。そうすれば生産性があがりますし、バグを直すのも、顧客からの希望機能を作ることもできます。結局社内全体にとってはいいことだらけです。

性格悪くなれ、というわけではなく、自分の集中力を最大限生かすためにはどうすればいいのかを意識しましょうという話です。

これがなかなか難しいという人は、自分がどこに時間を使っているか、測ってみることをおすすめします。かなりの危機感を覚えて改善の方向に向かおうと思い出すはずです。きっと!

時間というリソース、あなたは大事に扱えていますか?

松田

PS

ちなみに、だからこそ、自分もそれをするのをやめましょうね。
相手の集中が切れたときを見計らって、話しかけたり、依頼をしたりしましょう。

PPS

プログラミング・エンジニアリングを学ぶならこちらから

エンジニアリングと2進数・16進数(基礎)

From: リスキルテクノロジー 松田航
新宿本校にて、、、

システムの学習を
進めていると

「2進数」
「16進数」

...という
耳慣れない言葉を学びます。

10進数とは異なる
このような数の考え方が

システムの学習に
どうして必要なのでしょうか。

さまざまな数の数え方

普段の生活で
使われるのは10進数です。

言う間でもありませんが、

0,1,2,3,4,5,6,7,8,9

と数えてゆき、
9の次は桁上がりして

10

となる数の考え方ですね。

人間の手に
10本の指があるから
10進数が定着したとも言われています。

他には
60進数も使われますね。

時計の考え方です。

0...57,58,59

と数えてゆき、
59の次は桁上がりします。

1時59分の次は
2時0分になりますね。

こちらは
古代のバビロニア帝国で使われた
数の考え方です。

そして
コンピュータが登場して

世に定着しはじめたのが
2進数と16進数の考え方です。

2進数は

0と1だけで数えます。

2になると
桁上がりする数え方で、

0,1,10,11,100...

...と数えます。

これを10進数で言うと

0,1,2,3,4...

にあたります。

16進数は
16の次に桁上がりする数え方で、

0,1,2,3...9,A,B,C,D,E,F

と数えてゆき、
F(16)になると桁上がりします。

F,10,11,12,13...1F,20,21,22...

と数えます。

ここまでよろしいでしょうか。

あまり理解できなくても...

普段の生活とは違う
とっつきにくい数の考え方!

という風に覚えておいてください。

コンピュータは2進数しか扱えない

基本的に
コンピュータは
2進数しか扱うことができません。

コンピュータには多くの

IC(Integrated Circuit)

…が含まれています。

コンピュータの中身を
見たことがあるならわかりますが、
黒い虫みたいな部品のことです。

最近では
小型化、薄型化されて
ICカードに内臓されていますね。

このICでは
多くの計算が行われていますが、

実際には...

0か1

...しか判断できないのです。

0か1

つまり、

0 = 電流が流れていない状態
1 = 電流が流れている状態

ですね。

ICカード内では
0か1を判断するエリアが複数あり、

その単位を

ビット(bit)

...と言い、

8ビットだと
一度に8つ判断できるという意味になります。

最近のPCは

32ビットマシン
64ビットマシン

と言いますが、

文字通り
一度に計算できる量(実行速度)が
多いことを表しているのです。

プログラムを書いていると
多くの命令文が存在しますが、

結局のところ
コンピュータ上で実行される時には

0,1

という電気信号に変換された
プログラムが実行されるのです。

人間が使う
10進数でコンピュータと
やりとりしようとしても

コンピュータは
ONかOFFの2進数しか扱えません。

機械を制御するにしても
通信してデータを送るにしても

最終的には
2進数で行う必要があるのです。

2進数と相性のいい16進数

しかし、
2進数にも欠点があります。

それは

人間にわかりにくい!

...ということです。

たとえば

10000

という10進数を
2進数で表すとなると

0010011100010000

...になり、
表している数がわかりにくいですね。

ここで表れるのが16進数です。

16進数は2進数と相性がよく、

2進数を4桁ずつ区切ると、
16進数で表現できます。

0010 0111 0001 0000

それぞれの区切りを
16進数に変換すると...

2 7 1 0

...になり、

0x2710

...となります。

ずいぶんと短くなりますね。

最初の0xは...

16進数で表現していますよ

という意味です。

プログラムや仕様書に
16進数で表現しておけば、

長い2進数を
書く必要もありませんし、

処理においても
2進数に変換しやすく、

コンピュータにも
複雑な変換処理が必要なくなるのです。

制御系やインフラ系ではよく使います

一般的なシステム開発で
2進数や16進数を使うことは
あまりないかも知れません。

ほとんどの
プログラムや仕様書では

10進数がベースで
書かれているためです。

しかし、
機械を操作する制御系システムや、
インフラ系エンジニアにとっては

2進数や16進数を
目にする機会は増えることでしょう。

その時になって
慌てないためにも、

今のうちから
2進数、16進数に馴染んでおいてください。

リスキルテクノロジー
松田

PS

私も最初は戸惑いましたが
学んでいくうちに次第に慣れます。

何でもそうですが、
知ることで不安は消えます。

安心して多くを学びましょう。

ネットワークのスクールならこちら

over 初心者の罠

From: 松田航
サザンテラスのスタバにて

「えっとここって何が書いてあるんですか?」

「ああ、これは◯◯している場所ですね」

「これって何してる関数ですか?」

「これは△△のモデルにデータを取りにいっています」

「ここで宣言している変数って何に使っているんですか?」

「えっと、これは、、、」

うちのスタッフとの会話です。

彼はかなり育ってきたスタッフで、スラスラとコードを書いてくれるようになっています。ほとんど放置しても大丈夫で、とても楽になってきました。

しかし、最近プルリクでコードを確認すると、上記のような会話が頻発するようになってきました。

僕の理解力が低いのではという話は置いておいて、これは少しまずい傾向です。

初心者を抜け出して、少しコードが書けるようになってくると、陥る罠があります。

かっこよく書きたくなる

for_blog_la

ビギナーのレベルを超えた人間が次に目指すのは「かっこよく」です。特に男性陣はその傾向が強い。

・とにかく短く書こう
・とにかくライブラリ化して使いまわせるようにしよう
・関数をたくさん作ろう(何をとってきてんだかわからんgetホニャララ)

とか、そのような感じです。これは初心者ゾーンを抜けたエンジニアによくある病です。

当然、これらが100%いけないわけではありません。向上心も二重丸です。しかし、程度もんだという話です。

目指すべきゴール地点がずれているのです。

かっこよく書くのがゴールか?

なぜ、コードを短く書くかというと、その方がわかりやすく読みやすくなる「可能性が高い」からです。

1万文字の文章と3000文字の文章、どちらの方が早く読み終わるでしょうか?

後者の方が、時間がかからないですよね? 

コードも一緒で、3000行のコードと1000行のコードを読むとき、後者の方が早く読めます。

だからこそ短く書くべきなのです。

ライブラリや関数を作って使うのは、それが再利用できて、便利で、コードが読みやすくなるからです。

解読難度の高い1行を作った時点で、どんなに短いコードであっても、読むのに時間がかかるようになります。

少なくとも今は一回しか使わないものをライブラリ化しても、工数も無駄にしますし、コードを読みに行くのが非常に手間です。(3回くらい同じこと書く必要ができたらやるべき)

ゴールは読みやすく

「かっこよく」という定性的な自己満足ではなく、「読みやすい=他人が読んで時間がかかりずらい」という定量的なゴールを目標にすべきです。

自分だけ知っているニッチなフレームワークの隠れ関数を叩いても、他の人にとっては邪魔なだけです。

自分以外が読んでもわかるか否かを基準にコードは書くべきなのです。

どうしても使いたくなったら、上にわかりやすいコメントを書きましょう。(社内wikiは読みに行くのが手間だし、そもそも調べにいかないことが多々)

メンバー全員が、「周りの人が読みやすいコードを」を意識して書いてくれれば、それだけでいいプロジェクトになりますし、メンバーが仮に抜けたとしても、その後のフォローは格段に楽になります。

読みやすいコードを書くには?

オライリーのリーダブルコードを読みましょう。

以上! 笑

あとは、コミュニケーションと一緒です。一人で暴走しないようにしましょうね。周りに合わせて話す大きさと速度を変えましょうね、ということです。

松田

 

PS
空気を読めという話ではないので、それが全員に伝わるように研修をやるとかも可。

ただし、新しく入ってくる人がわからないので、マニュアルを作るか(面倒だけど、、)、もういっそプログラムごとの標準的コーディング規則およびドキュメントや本に頼りましょう。

PPS
プログラミングを学ぶスクールならこちら

MySQLを使ってみよう-SQL編-

From: リスキルテクノロジー 松田航
新宿本校にて、、、

以前のブログで
MySQLのインストールから...

データベースの作成までを
ご紹介しました。

今回はSQLを使って
実際にデータを登録してみましょう。

テーブルを作ってみよう

データベースでは
さまざまなデータを管理します。

登録されるデータは...

「テーブル」

...と呼ばれる単位で
管理されています。

住所録のような
一覧表をイメージしてください。

列には
住所や氏名などの項目があり、

行には
それぞれの住所データが
掛かれています。

テーブルも同じで
列に項目、行にデータを
設定してゆきます。

もちろん、
住所データだけではなく、

管理するデータによって
それぞれの項目が変わってきます。

テーブルがなければ
データを登録することはできません。

そこで、
まずはテーブルを作ってみましょう。

以前のブログで
MySQLで作成した
linuxacademyデータベースにアクセスします。

step1

それでは、
電話帳テーブルを作ってみましょう。

テーブルを作るには
CREATE TABLEコマンドを実行します。

telephone
というテーブルに...

num(電話帳番号)、
name(氏名)、
tel(電話番号)

...という項目を設定します。

INT(2)というのは
2ケタの数値の項目、

VARCHAR(40)というのは
半角40文字の項目を意味します。

step2

実行したら、
テーブルができているか確認しましょう。

テーブルの構造を確認するには
DESCコマンドを使います。

step3

テーブルが作成されていますね。

SQLでテーブルにデータを登録しよう

続いて、
telephoneテーブルに
データを登録してゆきます。

データベースで
データの登録や参照をするには
SQLがつかわれます。

SQLの基本は以下の4種類です。

・SELECT : データを検索する
・INSERT : データを登録する
・UPDATE : データを更新する
・DELETE : データを削除する

まずは、
INSERT文を作成して
新しいデータを登録しましょう。

INSERT文は
次のフォーマットで書かれます。

INSERT INTO テーブル名 (項目1, 項目2...)
 VALUES (値1, 値2...);

今回、
telephoneテーブルに登録するので...

...と設定しましょう。

step4

データが登録できました。

では、
登録したデータを
検索して見てみましょう。

データを検索するには
SELECT文を使います。

SELECT文は
次のフォーマットで書かれます。

SELECT 項目1, 項目2...
FROM テーブル名
WHERE 条件式1, 条件式2...

条件式は
特定のデータを検索する時に指定します。

ここでは
numが1のものを指定します。

SELECT num, name, tel FROM linuxacademy WHERE num = 1;

これを実行すると...

step5

登録されている
データが表示されました。

では次に、
登録データの電話番号を変更してみましょう。

データの変更するには
UPDATE文を使います。

UPDATE テーブル名
 SET 項目1 = 値1, 項目2 = 値2 ...
 WHERE 条件式1, 条件式2...

条件式には
変更するデータを指定します。

UPDATE telephone SET tel='0120111222' WHERE num = 1;

これを実行して
先程のSELECT文で見てみましょう。

step6

電話帳番号1の
電話番号が変更されています。

それでは最後に
登録したデータを削除します。

削除するには
DELETE文を使います。

DELETE FROM テーブル名
 WHERE 条件式1, 条件式2...

条件式は
削除するデータを特定する時に使います。

これを指定しないと
全データが削除されますので
注意が必要です。

DELETE FROM telephone WHERE num = 1;

これを実行して
先程のSELECT文で見てみましょう。

step7

Empty Set...

つまり、
データが削除されていますね。

操作しながら学びましょう

SQLは
一見すると簡単に見えますが...

実際の
システム開発では、

複数のテーブルを
組み合わせた検索方法や...

複雑な条件式が書かれた
非常に長いSQLが使われることもあります。

まずは
実際に操作しながら
SQL文を習得してゆきましょう。

実際に操作しながら学ぶことは
習得への近道です。

リスキルテクノロジー
松田

PS

データベースも学ぶプログラミングのスクール

未経験者・初心者がプロフェッショナルエンジニアになるためにやるべきこと

From: 松田航
新宿サザンテラスのスタバにて

つい先日、LPI-Japan(LPIC主催団体)の会合で、デージーネットの恒川さんとお話をする機会がありました。『ドラッカーさんに教わったIT技術者が変わる50の習慣』を書いている方ですね。(IT系の本としては、とても珍しいほど売れている良本です。ぜひご一読を)

せっかくの機会だったので、質問をしてみました。

「プロフェッショナルなエンジニアになるために、
 まずやるべきことってなんだと考えていらっしゃいますか?
 未経験や初級レベルから意識すべきことで」

ほとんど当たり前かのように、恒川さんが出してくれた答えが、

「タイピングをとにかく速くすることでしょう」

でした。

タイピングを速く!

for_blog_la

恒川さんの会社では入って来る新卒に対してもタイピングを徹底するように指導するそうです。会社にソフトがあり、そのソフトを基準に実施しているのだとか。

とにかくエンジニアの最低限の条件としてタイピングを早くしてもらわないといけないという話をしてもらいました。

即答でこの回答が来たことは、とても意外でしたが、たしかに納得できるものでした。

なぜそれほどタイピングが大切か?

答えはわかりやすくて、思考をすぐにアウトプットできないと、思考の速度がタイピングの速度になってしまうからです。

一般的な社会人にも必要な能力ですが、エンジニアはなおさらです。エンジニアは書くことが仕事ですから、思考をそのままなるべく速くアウトプットでないと、話になりません。作家さんなども同じなのですが、自分の思考スピードでものが書けないと、その速度でしか思考が進まなくなります。

人間は多くの場合アウトプットの速度に合わせて思考をします。話すのが早い人は頭の回転が早い傾向にあるのも、それが一因でしょう。

エンジニアの生産量には100倍の差があるという話がありますが、生産性の高い人は確実にタイピングも早いです。

トライアンドエラーに速度の差が出る

また、タイピングが速くなるメリットにトライアンドエラーが繰り返せるというものがあります。恒川さんの本にも詳しく書いてありますが、タイピングだけで5〜10倍の差がでます。

トライアンドエラーを1/5しか実施できなければ、その分、学ぶ量が圧倒的に少なくなるのはよくわかると思います。その分だけ成長率は下がりますし、長期間見ると大きな差になってきます。

タイピングをどれだけトレー二ングするかで、そのときの生産量だけではなく、成長の速度も変わってくるということです。

仕事ができるように見える!

もうひとつ、副次的な効果ですが、タイピング早いだけで仕事ができるように見えます。それはもうびっくりするほど仕事ができるように見えます。

近くにいるタイピング早い人を思い浮かべてみてください。多分、仕事も速い、印象がないですか? 実際の仕事量はなかなかわかりにくいのですが、タイピングの速度だけでファーストインプレッションに大きな効果があるのです。

タイピングの速度を上げるだけで仕事ができるように見えるのであれば、これほど楽なことはありません。ひたすらに向上させるべきです。話し方を変えるとか、プレゼンスキルを身につけるとか、発想力を上げるとかよりも目標が具体的なだけに目指すのが楽でしょう。

LAの授業や研修でもそう

また、授業・研修でもタイピングが遅いため、打つにのに必死になり、授業についていけないという人がやはり出てきます。

授業がわからないという相談の大きな原因が、だいたいここにあります(本当です)。タイピングに必死になり、考えるという時間がないのです。じゃあ、長く時間を取ればいいのかというとそういう訳でもありません。人間が集中できる時間はそれほど変わらないので、いつまでたっても終わらなくなります。結果、途中で挫折しがちです。

LAでも極力練習をしてから、クラスに入ってもらうようにしています。そうすることで、習得率はあがりますし、考える時間がとれ、質問の質も上がり、クラス全体がいい雰囲気になります。

練習方法と基準

練習方法は、とくにはじめのうちは、なんでも構いません。ウェブにいくらでもタイピングソフトやタイピング練習サイトが落ちているのでそれを利用しましょう。

私がよく研修などでも利用するのは、「寿司打」です。寿司を食べていくら儲けられたかというゲーム性も強いタイピングソフトです。検索してみてください。

ただ、慣れてきたら、日本語ではなく、英語のソフトを使ったほうがいいでしょう。

日本語ももちろんたいせつなのですが、どちらかというと、初心者がつまづくのは記号です。そちらも練習をすべきです。

オススメは下記サイトです。

http://typing.lk/

コードのタイピング練習には最適です。

理想的には1秒間に10文字程度のペースで打てるようになるといいです。

練習しましょう!

速くする方法はひとつだけ。練習あるのみです。

あまり意識したことがない人も多いでしょうが、確実にあなたの人生を向上させるので、時間を見つけつつ楽しんで実施してみるのをオススメします。

松田

PS
プログラミングを学ぶならリスキルテクノロジー

MySQLを使ってみよう-データベース作成編-

From: リスキルテクノロジー 松田航
新宿本校にて、、、

以前のブログで
MySQLのインストールや、

MySQLを使うための
初期設定を行いました。

いよいよ
実際にMySQLを操作してみましょう。

今回は
MySQLの起動とログイン、

そして
データベースと
ユーザーの作成方法をご紹介します。

MySQLを起動しよう

まずは
MySQLを起動します。

起動するには
CentOS7から採用された
systemctlコマンドを使います。

これで
MySQLが開始されます。

ちなみに...

MySQLを停止するには...

再起動するには...

です。

実行したら、
起動したかを確認しましょう。

で確認できます。

step1

状態は...

active(running)

となっているので
MySQLの起動が確認できました。

MySQLにログインしよう

それでは
いよいよMySQLにログインしてみましょう。

まずは
管理者権限でログインします。

MySQLに
ログインするためには...

mysql -u ログインするユーザ名 -p

と入力します。

管理者は「root」ですので...

ですね。

次に
パスワードの入力が求められますので

初期設定の時に登録した
管理者パスワードを入力します。

step2

これでログインできました。

データベースを作成してみよう

MySQLの
データベースを作成してみます。

まずは
現在登録されている
データベースを見てみましょう。

データベースを
一覧表示するには
次のコマンドを入力します。

コマンドの最後に

「;」(セミコロン)

を入力する点に気を付けてください。

MySQLにログインした後は
コマンドの最後にセミコロンを入力して

入力がここまでです!
ということをMySQLに知らせる必要があります。

step3

登録されている
データベースが表示されます。

では、
自分で使うための
データベースを作成してみましょう。

データベースを
作成するには次のコマンドを入力します。

ここでは...

と入力して…

linuxacademy

というデータベースを作りましょう。

コマンドを入力後、
データベース一覧で確認します。

step4

linuxacademyという
データベースが作成されていますね。

ユーザーを作成してみよう

続いて
MySQLにログインできる
ユーザーを作成してみましょう。

ユーザーを作成するには...

と入力します。

ユーザー:testuser
パスワード:testuser

...の設定で作ってみましょう。

ホスト名とは
ユーザーを作る場所のことです。

ここでは
このCentOS上に作りますので、

ホスト名は

localhost

…となります。

と入力します。

コマンドを入力したら
実際にユーザーが作成されたか確認します。

ユーザーを確認するには...

select user, host from mysql.user;

というSQL文を発行します。

step5

SQL文の
発行結果が表示されました。

testuser

というユーザーがありますので、
ユーザーが作成されたことが確認できました。

ここで
注意したいことがひとつあります。

ユーザーは
ただ作るだけではいけないということです。

ユーザーには
権限を与える必要があります。

権限とは、
データベースに対して
どのような操作ができるかという設定です。

権限を与えていないと
testuserで
linuxadacemyデータベースに
接続しようとしてもエラーになります。

step6

このように
アクセスが拒否されていますね。

ユーザーに
権限を与えるには...

grant all privileges on データベース名.テーブル名 to 'ユーザー名'@'ホスト名';

というコマンドを入力します。

all privileges

とは...

「全ての権限」

...という意味です。

もっと細かい設定もできますが、
ここでは全権限を与えるようにします。

では、
先ほど作成したユーザー

「testuser」

...に

先ほど作成したデータベース

「linuxacademy」

...に対する権限を与えてみましょう。

step7

権限の付与が成功しました。

では、
testuserで
linuxacademyデータベースに
接続できるか試してみましょう。

step8

権限が与えられたので、
接続できていますね。

MySQLからのログアウト

MySQLを終了するには

と入力してください。

と表示されて
MySQLからログアウトできます。

step9

それでは今回はこのあたりで...

Bye!

リスキルテクノロジー
松田

PS

プログラミングとデータベースを学ぶスクールならこちら

ちゃんと失敗する

for_blog_la

From: 松田航
新宿本校にて

「とりあえず動くようにしてくれ!」

多分、先週の日曜日に、僕がもっとも発した言葉です。

リリース直前のアプリケーションがあり、これがなかなか完成しない。そのため、リリース日当日に、スタッフのエンジニアにそんなことを言っていたのでした。

いや、今思っても最悪に近い言葉ですね。僕自身もコードを全力で書いていたため、若干焦り気味だったのでしょう。

ちなみに、PM(プロジェクトマネージャ)がコードを書き始めると大体残念な結果に終わるプロジェクトが多いので、極力書かない方がいいです。全体に関係のない、API叩いてデータ取ってくる、とかそういう箇所だけやるのなら影響範囲が小さいのでOK。

で、話を戻すと、「とりあえず」という発言はそれはもう、リスキーで、情けない言葉です。

ちゃんと失敗する

アプリケーションの不具合は発見できるのが早ければ早いほど、その後の修正は少なくて済みます。他部分への影響が小さいのですから、そりゃそうですよね。だから、単体テストをいかにしっかりと実施できているかが、最終的に安定稼働するアプリケーションになるかどうかを分けます。

問題点が早くに発見できるのは、最終的にすごく健全で、堅牢のソフトウェアができることを意味して言います。だから問題を発見できるようにすべきなのです。

だから、「とりあえず」動かすのではなくリリース前であれば尚更、エラーを表示させてちゃんと失敗をすべきです。

作り始めは全力でエラーを表示

とにかく作り始めた段階ではエラーは目立たせるべきです。PHPのCakeフレームワークのエラー表示など素敵です。赤字のバーが上部に表示される形ですね。自分でゼロからアプリケーション作る場合でも、あれを表示させてもいいくらいです。

エラーをウェルカムしましょう。エラーが出たときにいちいちへこまずに、

「よし、また一個素晴らしいプログラムに近づいた!」

になったと思うべきです。完全に思い込みましょう。自分のストレスを減らすためにも。

つい先日、エンジニア向け本の中で20万部を超える大ベストセラーになった奇跡の書「なぜプログラムは動くのか」の著者、矢沢さんに講演を行ってもらいましたが、講演の中で、こんな話が出ていました。

「コンパイラやエラーそのものを大切に扱いましょう。彼らはあなたをマンツマーンで叱ってくれるいい先生です」

まさしくだと思います。

(要約前「コンパイラを女優の◯◯だと思えば、叱られるのを幸せに感じるでしょ!」笑)

予測できない問題への対応

予測できないような問題に対応できる方法はとても大切です。ソフトウェアの品質が本当に試されているのは、何か問題が起きた時です。

誰でもミスを犯します。仕事を進めていく中で愚かなミスがあります。人間ですから。でも、そのミスをなるべく早く見つけることができれば、後からの問題は激減します。

  • 間違いに気づいたら、とりあえずの処理をしない。納期の問題で仕方がなかったら、少なくとも、メンバーのに状況を共有する。wikiにあげてもいいですし、slackで発言してもいいでしょう。
  • 解決策を提示しよう。時間リソースが足りずに、自分が解決できなくても、こうすれば解決出来るという道を見出して、メンバーに共有しましょう。できれば、そのメンバーのリソースで適用可能な対処法を提示できると、その人は重宝がられます。極端な話ですが、ある新規のプログラムを作成していて、OracleにDBを変えれば、大丈夫。というような解決策は、まぁ残念な訳です。
  • 早く相談する。相談する相手がいれば、相談することです。プロマネでもいいですし、技術のメンターでも構いませんし、仲良くなった技術者に「今度おごるから!」と叫んで協力してもらってもいいです。早めに相談することがデスマーチから遠ざかる道です。
  • きちんとミスをするのがリスク回避につながる!

    またどこかで書こうと思いますが、breakのひと文言だけで、60億円の損失を発生させた例もあります。

    真っ青になるなんてものじゃないでしょう。

    ちゃんとミスしましょう!
    とりあえず、動けばいいとか言わずに!

    松田

    MySQLを使ってみよう-初期設定編-

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    以前のブログで
    MySQLをインストールしましたが、

    今回はいよいよ
    MySQLを実際に起動してみましょう。

    最初にいくつか
    初期設定が必要ですので、

    その設定方法や、
    起動方法などの操作をご紹介します。

    MySQLを起動しよう

    多くのデータベースでは
    最初にいくつか設定しなければ

    データベースとして
    使うことができません。

    それはMySQLでも同じです。

    設定と言っても
    あまり難しくはなく、

    最初に起動したときに
    いくつかの質問に答えることで
    初期設定することができます。

    では、
    次のコマンドで
    実際に起動してみましょう。

    これでMySQLが起動しますので、
    初期設定を行います。

    MySQLの初期設定

    初期設定は
    次のコマンドで実行します。

    入力すると、
    対話形式でのMySQL設定が始まります。

    step1

    これは
    設定にあたって
    管理者権限のパスワードが必要だけど、

    最初の設定で
    また管理者権限のパスワードが
    設定されていないならEnterを押してください

    ...という意味です。

    まだ何も設定していませんので
    [Enter]キーを押します。

    step2

    次の質問です。

    管理者権限の
    パスワードを設定しますか?

    ...という意味です。

    [Y]を入力してパスワードを設定します。

    step3

    そして次の質問です。

    デフォルトでは
    誰でもログインできるように

    「匿名ユーザー」

    というものが設定されています。

    最初の設定では
    これを削除したほうがいいですよ。

    ...という意味です。

    削除するので[Y]を入力します。

    step4

    管理者権限で
    ネットワーク越しに
    ログインできるようになっています。

    これを許可しないようにしますか?

    ...という意味です。

    セキュリティ的に
    よくありませんので[Y]を入力します。

    step5

    次の質問です。

    誰でも使える

    「test」

    というデータベースがありますが、
    これを削除しますか?

    ...という意味です。

    残しておいてもいいですが、
    [Y]を入力して削除しておきましょう。

    データベースの作り方は
    次回にご紹介します。

    step6

    最後の質問です。

    ここで設定した権限の内容を
    すぐに反映しますか?

    ...という意味です。

    [Y]を入力してすぐに反映します。

    step7

    これで初期設定はすべて終了しました。

    少しずつ着実にスキルを身に付けよう

    MySQLの
    インストールから
    初期設定までが終了しましたが、

    このままでは
    ただの空っぽの状態です。

    次回は実際に
    データベースやユーザーの作成、

    そして
    データを操作するために
    簡単なSQL文を発行してみましょう。

    まぁ、実際やってみると色々なエラーがでてきたり、
    よくわからなくなるとおもいます。

    それ自体がいい勉強です。

    実際に操作して...

    たくさん悩んで、
    たくさん調べて、
    たくさん覚えて、

    少しずつ着実にスキルを身に付けましょう。

    リスキルテクノロジー
    松田

    PS

    データベースもマスターしたエンジニアになるスクール

    MySQLを使ってみよう-インストール編

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    大規模なシステムから
    スマホのアプリケーションまで

    システム規模の大小を問わず
    データベースが活用されています。

    オープンソースの
    代表格的なデータベースに

    MySQL

    ...があります。

    今回から数回にわたり
    MySQLのインストールや設定、
    簡単な操作方法などをご紹介しましょう。

    ちなみに、PostgreSQLがうちのスクールでは主流ですが、
    MySQLも取り入れていたりします。

    MySQLとは?

    MySQLとは
    世界中で最も使われている
    オープンソースのデータベースです。

    大小さまざまな
    システムで採用されており、

    有名どころでは
    facebookでも使われていますね。

    facebookでは
    何千台ものMySQLが
    利用されているようです。

    もともとは
    スウェーデンの企業で
    開発されたデータベースですが、

    その後
    サン・マイクロシステムズ社に買収され...

    さらに
    サン・マイクロシステムズが
    オラクル社に買収されと...

    いろいろと
    歴史のあるデータベースなのです。

    ともあれ、
    MySQLは優れた性能を持っており、

    それまで
    商用で販売されていた
    データベースと同等の性能を持っています。

    将来有料化しないか心配ですが、
    当分は大丈夫でしょう。

    インストールする前に...

    それでは、
    以前インストールした
    CentOS7にMySQLをインストールしましょう。

    と、その前に...

    まずは、

    MariaDB

    という製品が
    インストールされていないか
    確認する必要があります。

    CentOSでは
    MySQLが標準だったのですが、

    バージョン7から
    MySQLは標準ではなくなっています。

    MySQLの代わりに
    MariaDBというデータベースが
    標準でリポジトリに入っています。

    MariaDBとは
    MySQLとの互換性を持った
    データベースです。

    このMariaDBについては
    また別の機会にご紹介しますね。

    MySQLとMariaDBは
    同じ環境にインストールできますが...

    割とややこしいので
    今回はMariaDBに関するものを
    アンインストールした上で進めましょう。

    まずは、
    MariaDBに関するものが
    インストールされていないかを確認です。

    root権限で
    端末から次のコマンドを入力します。

    step1

    mariadb-lib
    というものが入っているようです。

    これを
    次のコマンドで
    アンインストールしましょう。

    step2

    アンインストールできました。

    いよいよMySQLをインストール

    まずは
    MySQLの公式サイトから
    次のコマンドでMySQLをダウンロードします。

    step3

    ダウンロードが完了しました。

    そしていよいよ
    MySQLとMySQLの動作に必要な
    パッケージをインストールします。

    yum -y install mysql
    yum -y install mysql-devel
    yum -y install mysql-server
    yum -y install mysql-utilities

    1行ずつコマンドを実行すると、
    それぞれのパッケージのインストールが開始されます。

    順番にインストールしましょう。

    インストールが完了したら、
    次のコマンドで確認しましょう。

    step4

    インストールされていますね。

    これで
    MySQLの準備が整いました。

    次回は
    MySQLの初期設定についてご紹介します。

    リスキルテクノロジー
    松田

    PS
    データベースを使ったプログラミングを学ぶならこちらから

    プロフェッショナルになる方法

    プロフェッショナル

    for_blog_la

    From: 松田航
    新宿サザンテラスのスタバにて

    先日、リスキルテクノロジーのインターン生から、いい質問を受けました。

    「プロフェッショナルなエンジニアになるためにはどうしたらいいでしょうか?」

    漠然としていますが、いい質問です。あなたも考えたことがあるかもしれません。

    もし、あなたもなんらかの分野で成功したいと思っているなら今日のメルマガは参考になるはずです。プロフェッショナルになるための"現実的な"方法についてお伝えするからです。

    プロフェッショナルになるには?

    この方法はすべてのプロフェッショナルに当てはまります。このステップに従って、自分のキャリアを組み立てればほぼ確実になんらかの成功を手にするでしょう。金銭面か地位か時間かは、個人の望みによります。

    僕もこのステップに従って動いていますし、今後も肝に命じたいと思っています。

    ステップその1:分野を選ぶ

    何でもいいからプロフェッショナルになればいいというわけではありません。まず重要なのが分野を選ぶということです。

    ビジネスでいうとポジショニングです。これは事業だけではなく、個人にも当てはまるということです。

    今からCOBOL(すこし古くなったプログラミング言語)に時間を投下して、プロフェッショナルになったところで見返りは小さいでしょう。ただプロフェッショナルになるのではなく、なんのプロフェッショナルになるのかということをまず意識する必要があります。

    できるだけ長く持つ分野。とはいえ、新しすぎてブームが去ったら、すぐに消えそうではない分野。を選ぶ必要があります。

    それだけではなく、需要に対して供給が少ないものに時間を投下すべきです。例えば、いまからHTMLのコーディングに時間を投下し、誰よりもミスが少なく、インデントをきれいにコーディングができても、見返りは小さいでしょう。Webがある限りなくならない技術ですが、それでも見返りが小さいのです。

    だからまずは分野を慎重に選ぶことが必要です。

    ・その分野の将来性
    ・需要と供給バランス

    なるべく価格競争に陥らず、将来長持ちする技術や分野に時間を投下するのが賢明です。それが難しいという話もありますが、そこはある程度の判断をし、次のステップによってリスクを下げます。

    ステップその2:すこし上の階層も視野にいれる

    分野を決めるとはいっても、その分野に固執するだけではリスクがあります。なぜなら、領域が小さければ小さいほど、その領域には「旬」があるからです。

    特にエンジニアリングの領域は変化が激しい業界です。あるフレームワークのプロフェッショナルになっても、3年後にはトレンドが変わっているというのはよくあることです。

    そのため、ひとつ上の階層に目を向ける方がいいでしょう。

    プログラミングのプロフェッショナル・サーバのプロフェッショナル・ネットワークのプロフェッショナルという階層をまず視野に入れて、それから、さらにJavaやRubyのプロフェッショナルという風に一段下も見るという視点を入れてください。

    そうすれば、仮にRubyが時代遅れになっても、プログラミング全般の知識があるため他の分野への移行はスムーズになります。(もともと、ひとつの言語を極めようとするとそうなります。しかし、割とそうじゃない人もいるのが事実です)

    デザイナでもマーケタでもそれは同じです。企業だけではなく、個人もリスクヘッジはとても大切だということです。

    そうすることで、耐久年度はあがり、あなたの価値は長続きします。

    ステップその3:1万時間投下する

    1万時間の法則という法則をご存知でしょうか?

    1万時間その分野に、プロフェッショナルになれるという法則です。マルコム・グラッドウェルという人唱えた理論です。感覚的にも、この理論はとても現実に即しています。

    幸い、僕たちがいるのはビジネスの世界です。スポーツの世界ではありません。0.1秒や0.1mを競うような世界ではないのです。

    才能はもちろん作用しますが、才能以上にどれだけ時間を投下したかで、十分に勝てる領域に行ける分野なのです。

    1万時間というのはどれくらいの時間でしょうか?

    1日3時間、毎日で10年間かかります。

    仕事で関わっているのであれば、1日8時間、平日だけで約2000時間。5年間でプロフェッショナルになれます。

    ジャンルを決めたら、そこに時間を投下する覚悟を持ちましょう。

    反対にいうと、5年はかかるということです。すぐに成功したいと望むのは人間のサガですが、これを頭に入れておくと、忍耐を忍耐と思わずに済みます。自然なことだと捉えられるようになるのです。

    ただし、プロフェッショナルになる前が素人で食えないかというとそんなことはありません。ある程度で十分に稼げるようになります。その中でもプロフェッショナルを目指すならという話です。

    最悪なのが、、、

    途中で諦めて次の分野に移ることを繰り返すことです。別の分野に移ると楽しいし、楽ですが、すぐに時間が経過してしまいます。いつのまにか5年経っていたということになりかねません。

    もちろん、最初の1時間がなければ、残りの9999時間はありません。しかし、自分のキャリアは慎重に選ぶ必要があります。

    エンジニアリング・マーケティング・マネジメントが今後10年では重要知識になると僕は思っています。いずれかを選択されることをオススメします。マネジメントはなかなか勉強が難しいですし、実践しにくいですから、エンジニアリングかマーケティングでしょう。

    現実的にプロフェッショナルを目指す

    これがプロフェッショナルになるための現実的な方法論です。

    宝くじを当てるよりも、片手間にFXに手を出してみるよりも、不動産投資をやるよりも確実にあなたに金銭的利益ももたらしてくれます。

    世の中誘惑がいっぱいですが、それらに振り回されないようにしましょう。

    あなたはどの分野に時間を投下しますか?

    松田

    PS

    僕は「教育事業」というまた別の視点に1万時間を投下しています。このような投資の仕方も、(オススメはしませんが)ありです。特化して、そこに集中することです。

    PPS

    一方で全体像を理解していることは大事なので、その話はまた時間があるときに。。

    システム開発の質を高めるバージョン管理ツールとは?

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    「バージョン管理」

    という言葉をご存知でしょうか。

    システム開発においては
    欠かすことのできない手法です。

    これが欠けてしまうと
    開発作業は大きく混乱してしまいます。

    今日は
    大切なバージョン管理に必要な...

    「バージョン管理ツール」

    ...についてお話しましょう。

    バージョン管理は何のために?

    多くの場合、
    システム開発は1人では行いません。

    複数のエンジニアが集まり
    システムを作り上げてゆきます。

    システムを作るにあたっては
    設計書やプログラム、マニュアルなど

    多くのファイルを作りながら
    進められてゆきます。

    全て1人でするならば...

    どのファイルに
    どんなことを書いたのか、
    どのように修正したのかなど、

    ファイルの内容を
    ある程度覚えておくことができます。

    しかし、
    複数の人で開発をする場合は別です。

    自分が書いたファイルが
    知らない間に他の人に修正されたり、

    プログラムが書き換えられたりと
    ファイルの状態を把握できなくなります。

    ファイルの状態を把握できないと
    何が起こるかというと...

    本来は
    プログラムのバグを修正した
    最新のファイルを納品しないといけないのに

    バグのある古いファイルで納品し
    システムトラブルが発生することもあります。

    そのような問題を避けるために
    ファイルのバージョン管理を行う...

    「バージョン管理ツール」

    ...が、
    ほとんどの開発現場で導入されています。

    ファイルのライフサイクルを管理する

    バージョン管理ツールとは
    ひとことで言うと...

    「ファイルのライフサイクルを管理するツール」

    ...だと言えます。

    ファイルに対して...

    誰が、いつ作成したのか?
    誰が、いつ、どこを修正したのか?
    ファイルが何回修正されたのか?

    ...などをデータベースで管理します。

    プログラムだけでなく、
    様々なフォーマットのドキュメントや、

    画像ファイルや動画ファイル、
    音楽ファイルに至るまで、
    あらゆるファイルを管理することができます。

    また、
    複数の人が同じファイルを
    同時に変更することがないように

    誰が今、ファイルを変更しているか?

    といったことも管理することができます。

    バージョン管理ツールには
    大きく分けて2つのタイプがあります。

    ■集中型

    まず1つ目は「集中型」と呼ばれるタイプ。

    これは、
    ファイルのバージョン管理をする

    「リポジトリ」

    と呼ばれるデータベースのようなものが、
    専用のサーバーで一元管理されているタイプです。

    比較的古いバージョン管理ツールは
    この集中型のものが多いですね。

    ■分散型

    そして2つ目は「分散型」と呼ばれるタイプです。

    分散型も集中型と同じように
    リポジトリでファイルを管理しますが、

    作業する人がそれぞれに
    リポジトリのコピーを持つことで、

    たとえば
    ネットワークに繋がっていなくても
    修正することができるというのが特徴です。

    最近開発された
    バージョン管理ツールは分散型が多いですね。

    代表的なバージョン管理ツール

    それでは、
    代表的なバージョン管理ツールを見てみましょう。

    ■CVS

    CVSとは
    Concurrent Versions Systemの略称で、
    並行バージョン管理システムを意味します。

    1990年に開発された
    比較的歴史の古いバージョン管理ツールです。

    こちらは集中型の
    バージョン管理システムになります。

    ■Apache Subversion

    多くの開発現場で使われていた
    CVSの問題点を改善するために作られたツールです。

    2000年に開発され、
    操作がCVSと似ていることから、

    CVSからSubversionに
    乗り換えるユーザが多くいました。

    CVSと同じく
    集中型バージョン管理システムです。

    ■Visual Source Safe

    1994年にMicrosoft社が開発した
    集中型のバージョン管理ツールです。

    CVSやSubversionと違い
    フリーウェアではなく商用ツールですが...

    ファイルの破損といった
    トラブルがけっこうあったツールですね。

    商用だから良い!
    というわけではありませんね。

    ■Git

    2005年に開発された
    分散型のバージョン管理ツールです。

    Linuxカーネルの
    ソースコード管理のために開発されたもので、

    今では多くの開発者に使われている
    人気のバージョン管理ツールです。

    開発者は
    Linuxカーネルの生みの親である
    リーナス・トーバルズです。

    もちろんフリーウェアです。

    フリーで使えて質が良い...

    やはり
    オープンソースはいいですね(笑

    開発の生産性と質を高めるために

    この他にも
    多くのバージョン管理ツールがありますが、

    現在の主流は
    SubversionとGitです。

    Subversionのシェアは高いですが、
    それを追うようにGitがシェアを広げています。

    これらの
    集中型と分散型の代表的なツールを
    一度は触っておいたほうが良いでしょう。

    私はプログラムを触らないから...

    という方も、
    一度は触っておいてください。

    なぜなら、
    管理するファイルはプログラムだけでなく、

    業務資料や仕様書といった
    さまざまなファイルが対象となるからです。

    バージョン管理ツールを
    活用することで...

    システム開発の生産性を高め、
    開発の質そのものを高めることに繋がるのです。

    リスキルテクノロジー
    松田

    PS
    gitflow画像は下記からの引用です
    http://artandlogic.com/2013/02/confessions-of-a-git-skeptic/

    PPS
    実践的な開発手法を習得するならこちら

    サービスを停止させないクラスタリングとは?

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    システムの障害などにより
    サーバーが停止してしまうと、

    ビジネスだけでなく
    生活にも大きな影響を与えてしまいます。

    今日は
    システムを停止させない技術である、

    「クラスタリング」

    についてお話しします。

    クラスタリングって何ですか?

    現代社会では
    システムが止まってしまうと、

    大きな混乱が
    発生してしまいます。

    また、
    システム利用者の増加によって

    大量のデータや
    通信のやりとりが発生しています。

    システムを
    停止させないように、

    そして、
    できるだけ高速に
    処理を行うように考えられた技術が

    「クラスタリング」

    という技術です。

    「クラスタ」とは
    「ぶどうの房」という意味で、

    複数のサーバーを統合して
    処理を行うことを言います。

    複数のサーバーを
    統合することにより、

    1台のサーバーでは
    実現できないサービスを提供できます。

    クラスタリングは大きく分けて…

    ・HAクラスタ(High Availability)

    と…

    ・HPCクラスタ(High Performance Computing)

    …の2種類があります。

    では、
    それぞれの特徴を見てみましょう。

    高可用性を実現するHAクラスタとは?

    HAクラスタは
    高可用性を目的としたクラスタリングです。

    「可用性」

    とは、
    継続して稼働できることを意味します。

    言い換えれば、
    システムの壊れにくさですね。

    HAクラスタは
    さらに2種類に分けられます。

    ha

    ■1:フェイルオーバー型

    同じ役割を持つノードを
    複数用意しておき、

    一方を稼働系
    もう一方を待機系とします。

    ※ノード:サーバーやネットワーク機器などの総称

    常に動いているのは
    稼働系のノードです。

    そして稼働系ノードに
    何か障害が発生したときには、

    待機系ノードが
    稼働系ノードに切り替わります。

    こうすることで、
    サービスを停止することなく、
    システムを稼働することができるのです。

    稼働系がActive、
    待機系がSatndbyなので
    Active-Standby型とも言われます。

    ■2:負荷分散型

    同じ役割を持つノードを
    複数用意しておき、

    いずれも並行して
    稼働させておく方法です。

    1つのノードが停止しても
    他のノードが処理をするので、

    サービスを停止することなく
    システムを稼働させられます。

    また、
    複数のノードで処理をするため、

    各ノードの負荷が減り、
    高い処理性能を発揮することができます。

    いずれもActiveなので
    Active- Active型とも言われます。

    高い処理性能を実現するHPCクラスタとは?

    HPCクラスタとは
    処理速度を高めるための手法で、

    スーパーコンピュータでも
    使われている技術です。

    HA構成では
    各サーバーの役割は同じでしたが、

    HPC構成では
    それぞれの役割が異なります。

    hpc

    ヘッドノードは
    クラスタの管理を行う役割で、

    各ノードの管理や
    クライアントとのやりとりを行います。

    そして、
    計算用ノードは
    計算処理を専門に扱うノードで、

    複数の計算用ノードが
    平行して処理を行う事で
    高い計算能力を発揮します。

    データベースとのやりとりは
    データノードが行います。

    このように、
    それぞれの処理を専門に行い、

    処理の高速化をするのが
    HPCクラスタの特徴なのです。

    インフラエンジニアの大切な役目

    ひと昔前までは
    クラスタリングをするには、

    高額なアプリケーションや
    専用の機器が必要でした。

    しかし、
    オープンソースソフトウェアにより
    安価に導入できるようになり、

    多くの企業や研究機関で
    クラスタリングが行われています。

    Linuxをはじめとする
    オープンソースの普及が、

    現代のITを
    リードしていると言えるでしょう。

    これからの時代、
    インフラエンジニアを目指すなら、

    サービスを停止させずに
    高い処理性能を維持する、
    クラスタリングのノウハウは必要です。

    多くのシステムは
    人々の生活に大きく影響しています。

    インフラエンジニアには
    そのようなシステムやサービスを

    停止させないという、
    大切な役目があるのです。

    リスキルテクノロジー
    松田

    PS

    サーバーエンジニアや
    ネットワークエンジニアを目指すならこちらから

    マルウェアとは、どんなプログラム?

    マルウェア

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    この社会では
    コンピューターを触らない日はない!

    ...と言っても過言ではありません。

    そのコンピューターを
    危険な状態にしてしまうプログラムに

    「マルウェア」

    ...があります。

    今回はマルウェアについて
    お話ししましょう。

    マルウェアって何?

    マルウェア(malware)

    とは

    英語で「悪いこと」を意味する

    「mal-」

    という接頭語にソフトウェアの

    「ware」

    を付けた言葉です。

    マルウェアと言うと
    わかりにくいかも知れませんが

    「コンピューターウィルス」

    と言えば皆さんご存知でしょう。

    とはいえ、
    コンピューターウィルスは
    あくまでマルウェアのうちの1種類で、

    他にもコンピューターに
    さまざまな障害をひきおこす
    マルウェアが存在します。

    ひと昔前までは
    せいぜいコンピューターを
    実行できなくする程度のものでしたが、

    今では
    ネットワーク環境の発展にあわせて
    さまざまな障害を引き起こしています。

    マルウェアは
    現代のネットワーク社会において
    非常に大きな問題となっているのです。

    代表的なマルウェアの種類

    それでは、
    マルウェアの種類を見てみましょう。

    とても多くの種類がありますが、
    ここでは代表的なものをご紹介します。

    ■1:ウィルス

    ユーザーが
    気づかないうちに増殖して
    ファイルに感染していくマルウェアです。

    メディアやネットワークを通じて
    他のコンピューターに感染します。

    感染して
    すぐに発症するものもありますが、

    潜伏期間を過ぎて
    発症するものもあります。

    ■2:ワーム

    ウィルスのように
    ファイルに感染することなく
    自己増殖してゆくマルウェアです。

    ネットワークを通じて
    自分のコピーを別のコンピューターに作るため、

    コンピューターの
    ネットワークリソースを消費します。

    ■3:トロイの木馬

    一見すると
    何もないプログラムですが、

    実際には
    ウィルスやワームなど

    害を与えるプログラムを
    運ぶためのマルウェアです。

    プログラムを
    知らずに実行すると、

    トロイの木馬が
    運んできたマルウェアが動作します。

    ■4:スパイウェア

    ユーザーが知らないうちに
    クレジットカードやパスワードなど、
    個人情報を盗み出しマルウェアです。

    盗み出された情報は
    スパイウェアの製作者に送信されます。

    ■5:ボット

    コンピューターを
    外部からコントロールするためのマルウェアです。

    ボットに感染したコンピューターは

    「ゾンビPC」

    と呼ばれ、
    他のコンピューターに操られてしまいます。

    ■6:ボットネットワーク

    ボットに感染した
    複数のゾンビPCで構成されたネットワークで、

    悪意あるユーザーが
    ゾンビPC指令用サーバーを経由して
    ゾンビPCに一斉に命令を指示します。

    マルウェアに感染するとどうなる?

    感染するマルウェアによって
    引き起こされる症状はさまざまですが、

    大きく分けると
    次のような影響があります。

    ■1:ウィルスの拡散

    ネットワーク内にある
    他のコンピューターにウィルスを拡散します。

    遠隔操作系のマルウェアなら
    新しいマルウェアを
    次々と送り込まれる可能性もあります。

    ■2:情報の漏えい

    システム情報や
    ルートパスワードなど

    コンピューターにとって
    非常に大切な情報を盗まれることもあります。

    管理者権限を持つ
    ユーザー情報を盗まれた場合は

    コンピューターが
    乗っ取られる可能性もあります。

    ■3:他のコンピューターへの攻撃

    マルウェアの1種である
    ボットに感染したコンピューターの場合、

    ボットネットワークを通じて
    ゾンビPCに一斉に命令を置くることで、

    迷惑メールの送信や
    ネットワーク障害を起こすことがあります。

    マルウェア対策の重要性

    「Linuxはマルウェアに強い」

    と言われています。

    しかし、
    Linuxユーザーが増えるにつれ、

    Linuxを狙ったマルウェアが
    増えているのも残念ながら事実です。

    基本的なマルウェア対策としては...

    ・ファイアウォールを利用する
    ・セキュリティソフトを利用する
    ・不要なサービスを起動しない
    ・知らないファイルを実行しない
    ・パスワードを定期的に変更する

    ...などが挙げられます。

    Linuxは
    サーバーやクライアントだけでなく、
    家電製品などに組み込まれるケースが増えています。

    そして
    ライフラインを管理するような
    重要なシステムにも使われているため、

    これまで以上に
    セキュリティ対策が必要です。

    万が一、
    マルウェアの標的にされたとしても

    問題を起こさないような
    セキュリティ対策を心がけるようにしましょう。

    リスキルテクノロジー
    松田

    PS

    Linuxの構築から運用
    そしてセキュリティまで学びたいならこちら

    VirtualBox使ってみよう! 副題:1台で複数のOSを動かす仮想化とは?

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    Linuxを使いたい時などに、
    パソコンそのまま使うのは大変ですよね?

    今回は
    1台のパソコンを
    2台にも3台にもすることができる

    「仮想化」+「VirtualBox」

    についてお話ししましょう。

    仮想化って何ですか?

    一般的には
    パソコン1台につき
    1つのOSがインストールされています。

    ですが、
    新しい環境が必要になった時、

    毎回新しいパソコンを
    購入するのは費用がかかってしまいます。

    この問題を解消するのが...

    「仮想化」

    ...という技術で、
    1台のパソコンの中に、

    複数のOSを同居させることを
    可能とする技術です。

    仮想化で作られた環境を...

    「仮想マシン」

    と呼び、仮想マシンで動作するOSを...

    「ゲストOS」

    と呼んでいます。

    つまり、
    仮想化されたパソコンには
    複数の仮想マシン・仮想OSが同居しています。

    仮想化を理解するには、
    賃貸マンションをイメージしてください

    マンションの空き部屋を
    別のOSに貸し出すようなイメージです。

    この例だと
    空き部屋が仮想マシンですね。

    内装やインテリアは
    住む人によって違うのでさまざまです。

    内装が仮想OSにあたります。

    同じ物件を使っているので、
    物理的な資源は共有しています。

    つまり、
    CPUやメモリーなど、

    パソコンが持つ資源をシェアして
    複数のOSを動作させることができるのです。

    仮想化するには仮想化ソフトが必要

    仮想化するには
    専用のソフトをインストールして、
    仮想環境を作ります。

    代表的な仮想化ソフトを
    いくつか見てみましょう。

    ■1:VMWare

    アメリカのVMWare社が開発した
    仮想化ソフトウェア。

    サーバーの仮想化など
    多くの企業で採用されています。

    個人用途には
    VMWare Playerがあり、

    業務用のVMWareと
    同じ仮想化技術が使われています。

    ■2:VirtualBox

    DBやJavaで有名な
    アメリカのOracle社の仮想化ソフトです。

    商用利用すると
    ライセンスが必要となるVMWareと異なり、

    オープンソースなので
    無料で使用することができます。

    ■3:KVM

    Linux標準の仮想化技術で
    イスラエルのQumranet社が開発した仮想化ソフトです。

    正式名称は

    「Kernel-based Virtual Machine」

    と言い、
    Linuxカーネルの機能を
    最大限に利用することができるソフトです。

    ■4:Xen

    イギリスのケンブリッジ大学で
    研究されたソフトがベースの仮想化ソフトです。

    こちらもオープンソースなので
    無料で仮想化環境を作ることができます。

    VirtualBoxで仮想マシンを作ろう!

    仮想化するには
    どのようにすればいいのでしょうか。

    実は意外と簡単に
    仮想環境を作ることができるのです。

    VirtualBoxを使った
    仮想マシンの構築法をご紹介しましょう。

    まずは、
    VirtualBoxをダウンロードします。

    VirtualBoxダウンロードページ
    [URL] https://www.VirtualBox.org/wiki/Downloads

    vbdownload

    「VirtualBox platform packages」

    にあるリストから、
    仮想環境を作りたいパソコンの
    OSに合うソフトウェアをダウンロードします。

    ダウンロードしたら、
    インストールしましょう。

    インストール時に
    いろいろ設定画面が出ますが

    特に変更する必要はありませんので、
    そのままインストールしてください。

    step1

    インストールが終わったら
    VirtualBoxを起動して仮想マシンを作りましょう。

    「新規」ボタンをクリックします。

    step2

    ゲストOSはCentOSにします。

    CentOSのDVDイメージファイルが必要ですが、
    あらかじめ以下のサイトから入手してください。

    CentOS
    [URL]https://www.centos.org/download/

    詳しい入手方法については、
    こちらのブログを参考にしてくださいね。

    step3

    ゲストOS(今インストールしているこれのこと)に
    割り当てるメモリーの量を指定します。

    上限はパソコンで使える
    メモリーの最大量ですので、

    あまり負担をかけ過ぎないように
    設定しましょう。

    step4

    仮想マシン用の
    ハードディスクを作成します。

    step5

    ハードドライブのファイルタイプは
    「VDI(VirtualBox Disk Image)」

    step6

    物理ハードドライブにあるストレージは
    「固定サイズ」

    step7

    ファイルの場所とサイズでは
    「16.00GB」

    ...に設定して
    「作成」ボタンをクリックします。

    サイズはパソコンの
    空き容量にあわせて設定してください。

    step8

    これで仮想マシンができました。

    CentOSを選択して
    画面上の「起動」ボタンをクリックします。

    step9

    最初の起動ですので…

    「起動ハードディスクを選択」

    という画面が表示されますが、
    右のフォルダアイコンをクリックして…

    あらかじめダウンロードしておいた
    CentOSのDVDイメージファイルを選択します。

    これで
    CentOSのインストールが開始されます。

    こちらのブログを参考にして
    インストールをしてくださいね。

    仮想環境に接する機会はますます増える

    仮想化技術は
    多くの企業が採用している技術です。

    レンタルサーバーなどでは
    1台のサーバーに複数の仮想マシンを構築し、

    仮想マシンを
    レンタルするサービスが多いです。

    また、
    実際にサーバーを購入すると

    コストや維持費がかかるため、
    自社サーバーを仮想化する企業も増えています。

    インフラエンジニアだけでなく
    アプリケーションエンジニアでも

    仮想環境に接する機会は
    これからますます増えて行くことでしょう。

    仮想化技術についての
    基本的なノウハウを持つようにしてください。

    リスキルテクノロジー
    松田

    PS
    仮想化の講座ならこちらから

    CentOSのインストール方法

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    このブログを
    読んでくださっている方は、

    Linuxに大きな関心を
    持っている方が多いことでしょう。

    「Linuxを実際に触ってみたい!」

    そう思うこともあるかと思います。

    では、
    実際にLinuxに触ってみましょう。

    下記でより細かいことを解説もしてみましたので、こちらもご参考ください。

    かなり詳しく!CentOS7のインストール方法

    Linux環境の構築方法

    今回はLinux環境の
    構築方法をお教えします。

    パソコンを1台だけ
    用意しておいてください。

    Linuxに興味はあって
    パソコンも持っているけど、
    他のOSが入ってしまっている...

    という方でも大丈夫です。

    ほとんどのOSには
    無償の仮想化ソフトがあります。

    仮想化というのは
    1台のパソコンの中に、

    別のパソコンがあるかのように
    新しい環境を作ることを言います。

    詳しくは
    ネットで検索してみてください。

    また、このブログでも近いうちに
    ご紹介していきます。

    もちろん
    仮想化ではなく、

    他のOSから
    Linuxに乗り換えるのもアリですね。

    まぁ、なかなか難しいかと思いますが、
    楽しいですよ。

    CentOSをインストールしよう

    CentOSとは
    Linuxディストリビューションのひとつで

    Red Hat Enterprise Linux(RHEL)と
    互換性のあるディストリビューションです。

    RHELのクローンOSとして有名で、
    安定性の高さで評判が高く、

    Webサーバーの
    およそ20%でCentOSが使われており、

    当スクールの授業でも
    このCentOSを使っています。

    それでは、
    CentOSを入手しましょう。

    CentOSは
    以下のサイトで手に入ります。

    CentOS
    [URL]https://www.centos.org/download/
    centos

    今回は

    「DVD ISO」

    を選択して
    CentOSのDVDファイルを選びます。

    すると、
    何やらリンクの一覧が出てきます。

    mirrorサイト

    これはCentOSを
    ダウンロードできるサイトの一覧です。

    「Actual Country(現在の国)」

    にあるリンクが
    日本で入手可能なサイトになります。

    この中のいずれかから
    ダウンロードしましょう。

    ダウンロードした
    DVDイメージをメディアに書き込んで
    準備完了です。

    なお、現時点での
    CentOSの最新バージョンは7です。

    CentOSインストール手順

    いよいよインストールです。

    先ほど準備した
    メディアからをパソコンに入れて
    起動しましょう。

    step1

    インストールの初期画面です。

    Enterキーを押せば
    インストールが始まります。

    step2

    しばらくすると
    言語の選択画面が表示されます。

    日本語を選択しましょう。

    step3

    インストールの概要画面です。

    ここではいくつか設定変更します。

    ・ソフトウェアの選択(S)

    次に表示された画面で
    「GNOME Desktop」を選択して
    [完了(D)]ボタンをクリックします。

    ・インストール先(D)

    次に表示された画面で
    何もせずに[完了(D)]ボタンをクリックします。

    最後に
    [インストールの開始(B)]
    を選択すると、インストールが始まります。

    step4

    インストールが始まると
    root(管理者)パスワードと
    ユーザーが作成されていないと表示されます。

    それぞれ、

    ・rootパスワード(R)
    ・ユーザーの作成(U)

    をクリックして設定します。

    インストールが終われば
    [再起動(R)]ボタンをクリックします。

    step5

    これでCentOSが使えるようになりました。

    実践で活躍するには多くのノウハウが必要

    いかがでしたか?

    Linuxのインストールは
    意外と簡単にできるのです。

    ただ、
    今回ご紹介した構築法は
    あくまでLinuxに触れるためだけの構築法です。

    実践で活躍できる
    エンジニアになるためには、
    多くのノウハウの習得が必要になります。

    まずはLinuxを
    身近に感じるためにも

    CentOSを
    インストールしてみるのもいいでしょう。

    それが、
    あなたがエンジニアになるための
    第一歩になるかも知れません。

    リスキルテクノロジー
    松田

    PS

    Linuxの
    体系的なノウハウの習得は、
    独学ではなかなか難しいと言えます。

    基礎から実践まで
    体系的にマスターしたいならこちらから。

    Linuxの専門スクール

    Linuxディストリビューションとは?

    linux ディストリビューション

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    Linuxには
    さまざまな種類があり、

    それらを

    「ディストリビューション」

    ...と呼びます。

    今回はさまざまな
    Linuxディストリビューションについて
    お話ししましょう。

    そもそもディストリビューションとは?

    ディストリビューションとは

    「流通」
    「配布」

    という意味で、
    Linuxが配布される形態のことを言います。

    本来、
    Linuxという言葉は
    Linuxカーネルのことを意味していますが、

    カーネルだけでは
    OSとして手軽に使うことはできません。

    そこで、
    Linuxを利用しやすいように

    アプリケーションなどをパッケージにして
    すぐに使える状態にしたものを

    「ディストリビューション」

    ...と呼びます。

    自動車で例えるとわかりやすいですね。

    自動車には
    エンジンの他にハンドルやタイヤなど

    さまざまな部品があって初めて
    自動車として利用することができます。

    Linuxも同じで、
    カーネル以外にも
    さまざまなアプリケーションがあって初めて

    Linuxとして
    利用することができるのです。

    そして同じ自動車でも
    いろいろな車種があるように

    Linuxにも
    いろいろなディストリビューションがあるのです。

    代表的なLinuxディストリビューション

    代表的なディストリビューションを
    いくつかご紹介しましょう。

    ■Red Hat Enterprise Linux (RHEL)

    アメリカのRedHat社が開発した
    商用向けのLinuxディストリビューションです。

    クライアントPC用途ではなく
    大規模システムのサーバーに利用されています。

    ■Fedora

    FedoraはRedHat社が
    支援しているディストリビューションです。

    RHELは商用向けで有料なのに対し
    Fedoraは無料で使うことができます。

    Fedoraは次世代のRHEL向けの
    検証用ディストリビューションとしての役割があり、

    実際にFedoraで検証された
    多くの新しい技術がRHELに採用されています。

    ■Debian

    Debianは
    世界中の有志が集結して作り上げた、

    100%フリーで使うことができる
    Linuxディストリビューションです。

    さまざまなCPU上での動作サポートと
    数万にもおよぶ膨大なアプリケーション数が特徴で、
    多くの企業のシステムに採用されています。

    ■CentOS

    CentOSはRHELのクローン(複製)OSで
    RHELの商用部分を取り除いたディストリビューションです。

    Fedoraのように
    RHELの実験的要素を含んだOSとは異なり、

    安定性も比較的高く、
    商用でも使われる機会も増えています。

    うちの授業はこれでやっています。
    Centいいですよ。

    ■Ubuntu

    Debianをベースに作られた
    世界的な人気を持つディストリビューションです。

    使いやすいデスクトップで
    初心者にも抵抗なく使えるのが特徴ですが、

    Debianと同じく
    多くの企業のシステムにも使われています。

    Linuxディストリビューションのトレンドは?

    Linuxには
    多くのディストリビューションがありますが、

    実際に使われているのは
    どのディストリビューションなのでしょうか。

    実際にWebサイトで使われている
    ディストリビューションを見てみましょう。

    W3Techs
    [URL]http://w3techs.com/technologies/history_details/os-linux

    dist

    これは
    2014年から2015年にかけて、

    Webサイトで使われている
    Linuxディストリビューションの割合を示したものです。

    2015年3月時点で...

    1位:Debian … 32.4%
    2位:Ubuntu … 26.2%
    3位:CentOS … 20.3%

    …と全体の78%以上を
    Debian、Ubuntu、CentOSが占めています。

    リリース当初は人気が高かった
    Red Hat Enterprise Linuxですが、

    Debian系ディストリビューションの人気が高く、
    少しずつ利用率が減ってきています。

    どのLinuxを使うかは企業によりますが、

    ・Debian系(Debian、Ubuntu)
    ・RedHat系(RHEL、CentOS)

    ...といったLinuxが
    現時点でのトレンドであることを覚えておいてください。

    操作自体は大きく変わりませんが、
    コマンド等が変わってくるので、
    注意しましょう。

    Linuxテクノロジーをしっかり学ぶことが大切

    ディストリビューションは違っても
    Linuxというテクノロジーに違いはありません。

    まずはLinuxという
    テクノロジーをしっかり学ぶことが大切です。

    ディストリビューションに左右されない
    正しいノウハウがあれば、

    どのようなディストリビューションにも
    対応できるエンジニアになれるのです。

    「環境に左右されないエンジニア」

    そんな素晴らしいエンジニアを目指してください。

    リスキルテクノロジー
    松田

    PS

    Linuxテクノロジーを学び
    環境に左右されないエンジニアを目指すならこちらから

    Linuxならリスキルテクノロジー

    エンジニアに必要なスケジュール管理能力とは?

    エンジニアのスケジュール管理

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    先日、
    あるプログラマーが
    こんなことを言っていました。

    「仕事をこなしても家に帰れない」

    スケジュールが遅れたり
    プログラミングが進まなかったりすると
    よくあることですが...

    いつまでに仕事をすればいいのかわからない

    そのプログラマーは
    大きなプロジェクトに参画しています。

    システム化にあたって
    作らなければいけない機能は多いのですが、

    参加している
    エンジニアの数も多いので
    何とかなるだろうと考えていたようです。

    彼は割り振られたプログラムを
    難なく作っていくのですが...

    「いつまでに作ればいいのかわからない」

    ...と言うのです。

    プロジェクトリーダーに
    いつまでにプログラムを作ればいいか尋ねても...

    「できるだけ早く!」
    「できるだけ前倒しで!」

    ...と言われるだけで、
    期日がはっきりしないのだそうです。

    そのため、
    毎日遅くまで残業が続き
    なかなか家に帰れないのだそうです。

    欠けているのは「スケジュール管理能力」

    同じ経験をしている
    エンジニアは多いと思いますが...

    このようなプロジェクトでは
    ひとつ欠けているものがあります。

    それは、

    「スケジュール管理能力」

    ...です。

    もちろん、
    突発的な仕事が起きた場合には

    スケジュールが進んでいれば
    対応しやすいと言えるでしょう。

    しかし、単純に...

    「早く仕事を済ませたい!」

    ...という理由で

    「できるだけ早くしてほしい」

    といった指示をする管理者も少なくありません。

    ほとんどの場合、
    最終的な納期しか理解しておらず、

    いつまでに、
    何をする必要があるのか

    プロジェクトを
    詳細まで分解して理解できていない場合に
    このような指示がされやすいのです。

    スケジュールを立てるには
    やることを詳細まで分割したうえで、

    それぞれの作業ごとに
    スケジュールを立てなければいけません。

    スケジューリング能力が
    不足しているということは

    全体の仕事を
    作業項目に分ける能力が
    不足しているということにもなるのです。

    管理者以外にも必要な能力なの?

    もちろん
    プロジェクトを管理する側だけでなく

    プロジェクトメンバーにも
    スケジュール管理能力は必要です。

    仕事をするにあたっては、
    自分が受け持った作業の期日だけでなく...

    自分のスキルも判断したうえで
    いつまでに終わらせることができるか?

    その仕事を終わらせるために
    どのような作業項目があって、
    どのような流れで対応するのが効率的か?

    そして、
    想定した作業で高い品質を保てるか?

    ...といったことを
    意識して対応する必要があります。

    スケジューリングの対象が...

    プロジェクト全体なのか、
    個人の作業レベルなのか、

    ...それだけの違いです。

    いずれにせよ、
    しっかりスケジューリングできなければ、

    作業の期限ギリギリになって
    慌てて作業することになってしまいます。

    慌てて仕事をすることは、
    品質を下げる結果に繋がりかねません。

    エンジニアとしての価値を高めるために

    エンジニアの仕事には
    必ず納期というものがあります。

    なければ決めるべきでしょう。
    締め切り効果って実際にありますからね。

    その納期に向けて
    早めに対応する越したことはありませんが、

    早く終わらせることを目的にすると
    品質が低下するリスクが高くなります。

    システムやサービスを提供する側としては、
    品質の低下は避けなければなりません。

    そのためにも...

    いつまでに、
    何を、
    どこまで終わらせるか、

    といったスケジューリングは
    エンジニアにとって必要な能力なのです。

    たとえそれが
    プロジェクトを管理する
    立場の者であってもなくても、

    普段から
    スケジュールを意識しておかなければ、

    その場その場の
    対応だけになってしまいます。

    全体を見据えて個々の仕事を行う...

    その姿勢は
    あなたのエンジニアとしての
    価値を高めてくれることでしょう。

    リスキルテクノロジー
    松田

    PS

    スクールの開発演習で力をつけましょう

    アルゴリズムの基本3:ソート(並べ替え)

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    プログラムでは必ずデータを扱いますが...

    データ量が増えれば増えるほど、
    並べ替えしておいた方が扱いやすくなります。

    今回は並べ替えのアルゴリズムである、

    「ソート」

    についてお話ししましょう。

    ネット検索にも使われている

    インターネットのウェブサイトの数は
    2014年に10億件を突破しました。

    Yahoo!やGoogleなどの
    検索サイトからサイト検索をするときに、

    いちいち10億件のサイトを
    検索していたのでは時間がかかって仕方ないですよね。

    このため、
    インターネットで何かを検索すると
    必ず訪問者の多いサイトが上位に表示されます。

    これはサーチエンジンが
    有効な情報を持っているサイト順に並べ替えて、
    訪問者の多いサイトを上位に表示しているからです。

    データというのは
    量が増えれば増えるほど、
    きちんと並べ替えられている方が管理しやすいですよね。

    この並べ替えのことを...

    「ソート」

    ...と言い、非常によく使われるアルゴリズムです。

    ソートする時には
    以前にお伝えした「配列」が必要で、
    配列にデータを入れてからソートするのが一般的です。

    値の小さい順にソートすることを「昇順」、
    値の大きい順にソートすることを「降順」と言います。

    どちらの順でソートするかはケースバイケースですね。

    それでは、
    代表的なソートアルゴリズムを
    いくつかご紹介しましょう。

    バブルソート
    ~単純なソートアルゴリズム~

    ソートのアルゴリズムで
    もっとも単純なもののひとつがこの「バブルソート」です。

    バブルソートとは、
    隣り合ったデータの値を比べて、
    単純に並べ替えていくというものです。

    イメージを見てみましょう。

    bubblesort

    1、4、3、2と並んだ
    4つの値が入っている配列があります。

    これを左から順に...

    1番目と2番目のデータを比べ、
    1番目と3番目のデータを比べ、
    1番目と4番目のデータを比べ...と、

    単純に順序だてて比べていって、
    左側の値が大きければ位置を交換する仕組みです。

    1番目の値を比べ終わったら、
    2番目のデータを元に比べてゆきます。

    数字が上に上がっていく様子が、
    泡が水の中で上に浮いてくる様子に似ていることから
    バブルソートと言います。

    ソートのアルゴリズムの中では単純で、
    少ないデータを扱う時には問題ありません。

    ですが、
    データ量が増えれば増えるほど、
    バブルソートでは処理に時間がかかってしまうのです。

    例えば、全ての値を
    比べ終わるのに必要な処理回数は最大...

    1,000個の配列だと49万9500回、
    10,000個の配列だと4999万5000回かかります。

    ちょっとかかりすぎですよね。

    そこで、バブルソートよりも
    高速なアルゴリズムが必要になってきます。

    クイックソート
    ~文字通り高速にソートできるアルゴリズム~

    バブルソートよりも処理の速いアルゴリズムで、
    代表的なものに「クイックソート」があります。

    簡単に言うと、
    データの中から基準となる値を決めて、
    それより大きいグループと小さいグループに分けてから、
    ソートしてゆくアルゴリズムです。

    ちょっとややこしいので、
    今はわからなくても大丈夫です。

    クイックソートのイメージだけ掴んでくださいね。

    それでは、イメージを見てみましょう。

    quicksort

    3、4、5、2、1と並んだ
    5つの値が入っている配列があります。

    一番左にある3を
    とりあえず基準値として、
    3よりも大きいグループと小さいグループに分けます。

    このとき、3の位置はもう確定しています。

    ちょうど大きいグループと小さいグループの間ですね。

    そして今度は、
    それぞれのグループから基準値を決めて、

    その基準値と
    グループの中のほかの数を比べて、
    相手の値が小さければ並べ替えます。

    最終的に比較するものがなければ、
    そこでソートが終わりです。

    ちなみに、この5つの値のソートを
    バブルソートですると処理回数が10回かかります。

    クイックソートは名前のとおり、
    素早くソートできるアルゴリズムなのです。

    適切なアルゴリズムを使って効率性を上げよう

    バブルソートやクイックソート以外にも、
    さまざまなソートのアルゴリズムがありますが...

    それらは必要に応じて覚えてゆけばいいでしょう。

    クイックソートは
    実用的で処理の早いアルゴリズムとして
    多くのシステムで使われますが、

    データ件数によっては
    別のアルゴリズムの方が速いケースもあります。

    扱うデータ件数によって
    アルゴリズムを使い分けると処理速度が上がるのです。

    アルゴリズムはあくまで
    効率的に処理を行う手順です。

    1つの手順にこだわることなく、
    常に適切なアルゴリズムを使うことができれば、
    効率の良いプログラムを組めるエンジニアになれます。

    柔軟な考え方のできるエンジニアになってください。

    リスキルテクノロジー
    松田

    PS

    柔軟な発想を持つには、
    基本から応用まで、幅広いノウハウが必要です。

    基本的なアルゴリズムを始め
    現場で使える応用力を身に着けたいなら資料請求を。

    アルゴリズムも勉強できるリスキルテクノロジー

    高品質サービスの指標となるSLAとは?

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    インフラエンジニアでも
    アプリケーションエンジニアでも

    何らかのサービスを作って
    ユーザーに提供するのは変わりありません。

    どのようなサービスを提供するかは
    ユーザーと話し合った上で取り決められます。

    今回はその取り決め内容をまとめた、

    「SLA」

    ...についてお話ししましょう。

    もしもコンビニが営業していなかったら

    どこを歩いていても
    必ず目に入るのはコンビニエンスストア。

    コンビニは
    24時間営業と豊富な品揃えが特徴ですが、

    あなたがコンビニに行ったとき
    営業していなかったり
    ほとんどの商品が売り切れだったらどう思いますか?

    ちょっと珍しい光景かもと
    面白く感じるかも知れません。

    しかし、
    コンビニとあなたの間で、

    24時間営業と豊富な品揃を提供するという
    「合意」を取り決めていたとしたら、

    「ちゃんと合意していた何どうして?」

    ...と思ってしまうことでしょう。

    このように、
    サービスを提供する側と
    受ける側との間で取り決められた合意内容を、

    「SLA(Service Level Agreement)」

    ...と言い、提供する側は
    SLAで取り決めた内容を目標として
    サービスをユーザーに提供するのです。

    実際にはコンビニと利用者はSLAを結びません。

    あくまで例です。
    念のため。

    データセンターなどで見られるSLA

    SLAはデータセンターや
    通信サービスなどでよく結ばれています。

    データセンターにおける
    SLAの内容について例をあげてみましょう。

    SLA(INFRA)

    SLAでは評価項目に対して、

    「目標とする水準をクリアできたかどうか」

    ...を客観的に判断できる目標が設定されます。

    この例で言うと、
    サーバー可用性は99.9%以上ですが、

    サーバーが99.9%以上の確率で
    正常に動いていることを保証するという内容です。

    簡単に言えば、

    「1年のうち99.9%は使用できることを保証しますよ」

    ...という意味になります。

    この他にも、
    障害が発生した場合の回復時間や、
    問合せの対応可能時間など

    データセンターに関するサービス内容が
    SLAで取り決められています。

    Webやメールサービスを
    提供しているレンタルサーバー業などでは、

    SLAの基準をクリアできない場合は
    月額料金を返還する業者もあるほどです。

    インフラ系のサービスにおいては
    SLAの取り決めは基本的なものになっていますね。

    システム開発にもSLAは有効です

    SLAはインフラ系サービスだけでなく、
    システム開発でも取り決められています。

    システム開発における
    SLAの例を見てみましょう。

    SLA(SYSTEM)

    システム開発におけるSLAでは
    比較的アプリケーションよりの内容になっています。

    たとえば
    オンラインレスポンスですが、

    ボタンをクリックして
    次の画面に移動するまでの時間について
    取り決められています。

    処理速度が遅く、
    画面表示に1分以上かかるのでは
    実際の業務では使うことはできません。

    そのため、
    要件定義や基本設計段階で
    処理時間について目標を決めて開発します。

    他にも、
    障害回復時間など
    障害発生後の対応をランク分けすることで
    復旧時間を決定するケースもあります。

    システム稼働に問題がない
    軽度な不具合は対応がややゆっくりの対応、

    障害復旧しないと業務できないといった、
    深刻な不具合は即対応などですね。

    システム開発におけるSLAは
    企業間のシステム開発だけでなく、

    社内システムの開発でも有効な方法として
    多くの企業で取り組まれるようになっています。

    高いサービス品質を保つことがエンジニアとしての質を高める

    インフラ系でも
    システム系でも、
    SLAを取り決めることによって、

    ・システムのサービス提供範囲の明確化
    ・サービスレベルに応じたコストの明確化
    ・高品質のサービスレベルの維持
    ・ユーザーとの信頼関係の構築

    ...といった多くのメリットがあります。

    サービスを提供するにあたり、

    「高い品質を保つための目標」

    ...とも言えるのがSLAを、
    エンジニアとして意識するようにしましょう。

    それは、
    エンジニアとしての質を
    高めてゆくことにつながる姿勢なのです。

    リスキルテクノロジー
    松田

    PS

    提供するサービスの品質は
    高ければ高いほどいいですよね。

    これは学習も同じです。

    品質の高いスクールはエンジニアへの近道です。

    エンジニアの専門スクール

    オープンソースの普及が4年間で2倍に

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    Linuxをはじめとする
    オープンソースソフトウェアは

    多くの企業のシステムに
    採用されはじめています。

    その傾向が、
    2010年から急激に動き、
    より顕著になってきました。

    オープンソースの採用は標準的なアプロ-チに

    ここに、
    オープンソース管理ソリューションを提供する
    アメリカのBlack Duck Software社と

    ベンチャー企業を支援する
    North Bridge社が共同で行った調査結果があります。

    The Ninth Annual Future of Open Source Survey
    [URL] https://www.blackducksoftware.com/future-of-open-source

    blackduck

    これは

    「オープンソースの未来について」

    というテーマで
    企業に対して行われている調査で、

    企業における
    オープンソースソフトウェアの
    使用状況などを調査しています。

    調査結果では、
    78%の企業が自社の業務で
    オープンソースを採用していると回答しており、

    42%だった
    2010年度の調査結果と比べると
    2倍近くにまで増えています。

    また、
    66%以上の企業は
    システム的な課題解決のために

    オープンソースを
    まず先に検討すると回答しており、

    オープンソースの検討が
    標準的なアプローチになっています。

    企業がオープンソースを選択する訳とは

    オープンソースの検討が
    標準的になっている背景には
    どのようなことが起きているのでしょうか。

    まず、
    企業の58%はオープンソースが
    拡張性に優れていると回答しており、

    オープンソースと
    そうでないソフトウェアを比べると、

    オープンソースの方が
    システム展開しやすいと回答しています。

    また、
    オープンソースと
    そうでないソフトウェアを比べると、

    55%の企業が
    オープンソースの方が
    セキュリティ性に優れていると回答しており、

    この考えを持つ企業の割合は
    今後2~3年間で61%にまで増える見込みです。

    ビッグデータや
    クラウドコンピューティング、

    そして今後大きく広まる
    モノのインターネット(IoT)などは

    2~3年のうちに
    オープンソースの影響を受けると予想されています。

    オープンソースの課題は「管理体制」

    しかしここで、
    ひとつの課題が浮き彫りになっています。

    確かに多くの企業で
    オープンソースが採用されていますが、

    オープンソースソフトウェアを
    しっかりと管理できていないという点です。

    55%以上の企業が
    自社でオープンソースを採用するにあたり
    正式な導入ポリシーを定めておらず、

    正式なポリシーを定めている企業は
    27%と低い水準にとどまっています。

    これは
    オープンソースを導入したはいいけど
    きちんと管理できていないことを意味しています。

    また、
    50%以上の企業は
    オープンソースに潜んでいる

    セキュリティ的な弱点(脆弱性)を
    把握するスキルが足りていないと回答しています。

    オープンソースを使った
    システムにおいて、

    脆弱性が潜んだ
    プログラムがあるかどうかを
    監視しているのはたったの17%でした。

    他システムと連携しやすく
    無償で導入できるのはオープンソースのメリットですが、

    それを使って
    セキュリティ的な弱点を潜ませる
    システムを構築してしまうのは問題ですよね。

    オープンソースの未来のために

    オープンソースが
    多くの企業で選択されているのは喜ばしいことです。

    Linuxをはじめとする
    オープンソースの活用シーンが増えることで

    エンジニアが
    活躍できる機会が増えています。

    しかし、
    オープンソースと言っても

    システムを作るための
    ひとつの道具にすぎません。

    どこでどの
    オープンソースが使われているか、

    しっかり管理されていないと
    収拾がつかなくなってしまいます。

    セキュリティについても同じです。

    脆弱性を知らずに
    システムを構築することは、

    玄関の鍵が
    壊れているのに気付かないまま
    家を建てているのと同じことです。

    エンジニアは
    オープンソースを使うにあたって

    オープンソースを使った
    システムやサーバーの構築法だけでなく、

    なぜシステム化するにあたって
    そのオープンソースを選択したのか、

    そのオープンソースに
    どのような脆弱性があるのかを
    理解したうえで活用しなければなりません。

    あなたもプロフェッショナルエンジニアになるなら、
    その意識を強くもっていきましょう。

    リスキルテクノロジー
    松田

    PS

    オープンソース一筋の
    専門校リスキルテクノロジー

    プログラマーは専門性だけではダメ?

    プログラマーのスキル

    From: リスキルテクノロジー 松田航
    @新宿オフィス

    「プログラマーを目指す以上、専門性を
    身に付けることは必須ですよね?」

    「やはりエンジニアを目指すなら、
    高度な専門技術が必要ですか?」

    エンジニアやプログラマーを目指すあなたが
    感じている通り、

    スペシャリストである以上、専門的な技術を
    身に付けることは必要条件です。

    しかし

    専門的な技術を身に付けたからといって、
    引く手あまたのエンジニアやプログラマー
    になれるか?

    というと、必ずしもそうではありません。

    事実、未経験からエンジニアを目指した方々が、
    転職後に活躍しているということは、
    まったく珍しいことでありません。

    つまり、専門的な技術だけではない、
    ということなのですが・・・

    それでは、エンジニアやプログラマーとして
    活躍するには、一体何が必要なのか?

    これについてお話したいと思います。

    【ヒューマンスキルを磨く必要がある】

    エンジニアやプログラマーを目指す方にとって、
    専門性を身に付ける必要があるというのは、
    ごく当たり前のことと考えられているようです。

    確かに少し考えてみると、

    料理人になるなら料理が作れないとなりませんし、
    美容師になるならカットなどの技術が必要ですから、

    仕事を遂行するにあたって専門的な技術を
    身に付けることは、スペシャリストに不可欠です。

    しかし専門性だけでお客さんと仕事をすることが
    できるかというと、そうではありません。

    たとえばプログラムの開発とサーバの構築の両方を
    お客さんから受注した場合、

    プログラマーやインフラエンジニア、営業担当などを集め、
    プロジェクトチームを作る必要があります。

    担当ごとに求められる専門性は異なりますから、
    多くの会社では分業化や専門化が進んでいるはずです。

    分業化や専門化が進めば進むほど、
    一つのプロジェクトを完了するにあたり、
    協力してもらうスペシャリストの人数が増えますから、

    あなたの担当する仕事を終えるためには、
    他のスペシャリストと協調して仕事をしていくスキルや

    正しく依頼や相談をするためのコミュニケーション力が
    必要になるわけです。

    つまり、プロジェクトの完遂には技術的なスキルに加え、
    ヒューマンスキルを磨く必要がある、ということです。

    そして仕事というのは、
    お客さんの課題を解決することですから、

    課題を理解するといったコミュニケーション力を
    はじめとする、ヒューマンスキルが必要不可欠です。

    技術だけではだめ

    エンジニアやプログラマーとして活躍し、
    評価されるには専門性だけでは十分ではなく、
    ヒューマンスキルが求められるということ。

    また、結局給料が上がって行くのも、
    技術力だけではなくバランスよく能力が上がっている
    人材です。

    なぜなら、上の立場の人間は、
    人を育てることも重要な仕事になるからです。

    専門性を身に付けなければならない、
    という意識はきっとあなたも持っていると思いますから、

    むしろヒューマンスキルこそ、
    仕事を進めるにあたり大事なスキルである

    こう、考えてみてもいいかもしれません。

    リスキルテクノロジー
    松田

    PS

    手っ取り早くエンジニアに必要なヒューマンスキルを上げるには、
    開発演習をやるべきです。

    開発演習も行うプログラミング講座

    エンジニアリングの基本:PDCAサイクル

    pdcaサイクル

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    「PDCAサイクル」

    という言葉を知っていますか?

    学生であれ
    社会人であれ、

    一度は聞いたことがあるかと思います。

    今回は

    「PDCAを意識する大切さ」

    についてお話ししましょう。

    PDCAサイクルって何ですか?

    PDCAサイクルとは
    業務品質を高めるための手法で、

    継続的に業務内容をチェックして
    改善・改良しやすくするための理論です。

    PDCAは以下の4つの要素に分かれています。

    【P】Plan(計画)

    目標を設定して計画をたてる。

    【D】Do(実行)

    計画に基づいて実行する。

    【C】Check(評価)

    実行結果を分析して評価する。

    【A】Action(改善)

    実行結果や計画通り進んでいない点について、
    実行方法を改善する。

    この4つの要素の頭文字を取って、

    「PDCAサイクル」

    と呼ばれています。

    PDCAはサイクルですので、

    P→D→C→A→P→D...

    と繰り返してゆきます。

    この繰り返しによって、
    より良い品質を保つことができるのです。

    個人の業務にもPDCAサイクルは当てはめられる

    PDCAサイクルは
    企業の品質管理や業務管理に使われますが、

    個人の業務にも
    当てはめることができます。

    例えば、あなたが
    プログラムを作るとしましょう。

    その時には、
    あなた個人の業務の中に
    PDCAサイクルができているのです。

    【P】Plan(計画)

    仕様確認してどのように作るか計画する。

    【D】Do(実行)

    仕様に基づいて作成する。

    【C】Check(評価)

    動作確認を行う。

    【A】Action(改善)

    不具合があれば修正する。
    もっと処理を効率化できる点を改善する。

    プログラミングの例で言えばこうなりますが、

    どのような業務でも
    PDCAサイクルは個人の業務に生まれています。

    もし、個人の業務に
    PDCAサイクルが生まれていない場合は、

    業務の品質が低くなってしまうのです。

    PDCAを意識しない業務は品質が低い

    業務の中に、
    PDCAサイクルが
    生まれていない例を見てみましょう。

    例えばサーバー障害が発生して、
    ネットワークが接続できなくなったとします。

    あるエンジニアは、
    やたらとコマンドを入力して
    設定変更を行っては障害復旧しようとします。

    思いつく限りの方法を試みますが、
    まったく障害復旧する様子はありません。

    時間は過ぎて行く一方で、
    エンジニアには焦りだけが募ります。

    …これって効率が悪いですよね。

    「とりあえずやってみるか!」

    というタイプの方に多いケースなのですが...

    (私もこちらのタイプですね。)

    このタイプのエンジニアには
    Plan(計画)とAction(改善)がないのです。

    Do(実行)とCheck(評価)だけです。

    知っていることをひたすら試し続ける。

    それが問題だとは言いませんが、
    もっと効率的に業務を行う方法はあるはずです。

    できるだけ短い時間で最大の効果を発揮する方法が、
    高い業務品質を持った業務です。

    そのためには、
    サーバーログファイルなどを確認して
    情報を集めた上でどのように対応するか計画し、

    実行、評価して障害回復しなければ
    改善策を検討して別の方法を試してみる...

    といったように、
    PDCAサイクルを業務に活かさなければ、

    業務品質が低くなってしまうのです。

    業務品質を高めるためのポイント

    普段の業務では...

    「PDCAサイクルをいかに早く回すか」

    ...という点がポイントです。

    慎重なタイプの方に多いのですが、
    Plan(計画)ばかりに気をとられていると、

    なかなか行動が起こせずに
    業務が進まなくなってしまいます。

    何かの業務をするときには...

    【P】手早く業務を進める手順をたてる。
    【D】手順通りに業務を行う。
    【C】業務内容をチェックする。
    【A】不備や手順どおりにできていない点を確認する。

    ...というサイクルを
    どれだけ早く繰り返すかが大切なのです。

    PDCAサイクルは、

    ・大きく見れば企業全体の業務品質を高める
    ・小さく見れば個人の業務品質を高める

    ...ということを覚えておいてください。

    リスキルテクノロジー
    松田

    PS

    PDCAサイクルは
    品質管理としてはスタンダードな手法です。

    より良い品質を提供するために
    個人レベルでPDCAを意識するようにしましょう。

    エンジニアスクールのリスキルテクノロジー

    最近よく聞くIoTって何のこと?

    IoTとは?

    From: リスキルテクノロジー 松田航
    新宿本校にて、、、

    最近よく聞く言葉に...

    「IoT」

    という言葉があります。

    ITじゃなくてIoT?

    IoTとは
    いったい何なのでしょうか?

    IoTって何のこと?

    IoTとは

    「Internet of Things」

    の略で、
    「モノのインターネット」のことです。

    じゃあ
    モノのインターネットって何?

    という話になりますよね。

    これまでのインターネットは
    パソコン同士がネットワーク通信していましたが、

    モノのインターネットでは
    パソコンに限らず...

    家電製品や機械などが
    インターネットで通信することを言います。

    IoTはビジネスから日常生活まで
    幅広いシーンで活用することができます。

    たとえば
    自宅にある家電を
    スマートフォンから操作したり、

    自動販売機などで
    在庫が少なくなったら
    自動的に商品を発注したりと、

    活用シーンはさまざまで、
    これからもアイディア次第で
    IoTの活用シーンはどんどん増えてゆきます。

    IoTとLinuxの関係

    IoTの普及には
    Linuxが大きく役立っています。

    アメリカの調査会社である
    VDC Research Groupの調査によると、

    家電製品などを
    制御するために組み込むOSとして、
    Linuxを活用する企業が増えています。

    まぁ、そりゃそうですね。
    一個一個の家電に有料OS入れる訳には
    いきません。

    Linuxの活用は
    2012年には市場シェアの56.2%でしたが、

    2017年には64.7%にまで
    増えるであろうと予測しています。

    このLinuxシェアの増加の背景には
    IoTの普及があります。

    IoTの急伸が、
    機械に組み込むOSとして、

    従来の組み込みOSから
    Linuxに移行することを加速させているのです。

    誰でも入手できる、
    オープンソースで無償であるLinuxを、

    IoTの活用において、
    第一の選択肢となる企業が増えています。

    個人でもできるIoT

    IoTの活用は
    企業でないとできないのでしょうか?

    いえ、そんなことはありません。

    その気になれば
    個人でも少しの出費で
    IoTの環境を作ることができます。

    ちょっとIoTをやってみたい!

    という方向けに...

    「Raspberry Pi(ラズベリーパイ)」

    というコンピューターが売られています。

    手のひらサイズで、
    5,000円もあれば買えてしまいます。

    小さいけれど性能は高く、
    ひと昔前のコンピューターと同じ性能です。

    温度や気圧などの
    さまざまなセンサーや、
    カメラなどのUSB機器が接続できます。

    実はこれ、
    Linuxベースのコンピューターなのです。

    Raspberry Piを使って
    自宅のペットを監視するカメラや、

    音声で自宅のドアの開閉や
    照明のON/OFFを制御するなど、
    IoTを活用した環境が作れます。

    もちろん、
    ある程度の知識は必要ですが、
    興味のある方はチェックしてみてください。

    Linuxはエンジニアの標準スキル

    IoTは世界的に注目されており、
    今後もますます広がってゆく分野です。

    大手CPUメーカーであるIntelは
    IoTのための標準機能の提供を予定しており、

    そこに
    Linuxの普及促進機関である
    LinuxFoundationが全面協力しています。

    IoTの世界的な普及は確実であり、
    IoTにおけるLinuxの活用も確実に広がります。

    ソフトウェアエンジニアでも
    コンピューターの小型化によって、

    Raspberry Piのような
    小さなコンピューターで
    動作するソフトを開発する機会は増えるでしょう。

    どのようなエンジニアでも
    あなたの前には必ずLinuxが存在するのです。

    Linuxはこれからの時代、
    エンジニアとしての標準スキルなのです。

    リスキルテクノロジー
    松田

    PS

    このIoTの活用には
    以前お話ししたIPv6の技術が必要不可欠です。

    数多くのモノがインターネットするので
    それぞれのモノにIPアドレスが必要となります。

    膨大な数のIPアドレスを管理できる
    IPv6の技術があってこそIoTは実現します。

    インターネットは
    新しい時代に入りつつあるのです。

    Linuxとネットワークの専門スクール リスキルテクノロジー

    未経験からの育成制度も充実
    IT講師に興味はありませんか?

    リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

    IT講師に応募する