リスキルテクノロジー

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
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

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はソリューションではなく、ビジネスモデル全体です。

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

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

チャネルは?

収益は?

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

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

これら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
プログラミングを学ぶならこちら

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する