最新記事一覧

バージョン管理ツール「Git」とは

From:リスキルテクノロジー 高坂一城 新宿本校にて

kohsaka

ソフトウェア開発ではソースコードを作成しながら ソフトウェアを作っていきます。 ソフトウェア開発の現場では、 バグ(不具合)の修正や機能の追加ごとに、 その時のソースコードの状態を記録し、 それぞれの版(バージョン)を管理することが 必要になります。 このソースコードのバージョンを管理するソフトウェアを 「バージョン管理システム」と言います。 「Git」とは、バージョン管理システムの一つで、 ここ数年で非常によく使われるようになってきました。 ちなみに「ギット」と発音します。

なぜバージョン管理が必要か

突然ですが、あなたはゲームをしますか。 「ドラゴンクエスト」に代表される 古典的なRPG(ロールプレイングゲーム)では、 プレイの途中でそこまでの状態をセーブ(保存) することができます。 なぜソフトウェア開発に バージョン管理が必要なのか、 その理由は、 ゲームをセーブする理由と同じなのです。 ゲームをセーブする理由は、 ①もう寝るから(今日はここまで) ②途中でプレイヤーが死んでしまっても  やり直しができるから この2つが大半だと思います ソフトウェア開発にバージョン管理が必要な理由は、 上記の②に相当します。 例えば、 あるソフトウェアに新しい機能を追加します。 しかし、その機能を使わなくなった。 そういった場合、このソフトウェアを 新しい機能を追加する前の状態に 一瞬で戻せると便利ですよね。

Gitの登場

そこで「Git」の登場です。 Gitは、 世界最大のオープンソースソフトウェアである Linuxカーネルのソースコードを 効率的に管理するために作られました。 Gitの特徴は、 ①動作速度が速い ②分散型である    です。

特徴① 動作速度が速い

Gitは Linuxカーネル開発で培われたノウハウを活かし、 大規模プロジェクトにも対応できるように 設計されています。 大規模プロジェクトでは 多数のソースコードを管理する必要があります。 ソースコードの変更点を抽出したり、 「リポジトリ」と呼ばれるソースコードや 変更履歴を保存する場所への操作が 高速にできる必要があるため、 動作速度に重点が置かれています。

特徴② 分散型である

Gitが登場する前は、 「Subversion(SVN)」に代表される 「集中型バージョン管理システム」が 広く使われてきました。 「集中型バージョン管理システム」では、 開発対象のソフトウェア一つにつき 「リポジトリ」を一つだけ持っています。 ソフトウェア開発に参加するメンバは、 この一つのリポジトリから ソースコードを持ってきて編集し、 編集が終わったらリポジトリに反映します。 これにより、 リポジトリが置かれたマシンに接続できない環境では、 最新のソースコードを取得したり、 編集したソースコードの反映ができないことになります。 この問題点を解決したものが、 Gitに代表される 「分散型バージョン管理システム」です。 「分散型バージョン管理システム」では、 メインとなるリポジトリ以外に、 自分のマシンにもリポジトリを持つことができます。 リポジトリをマシン毎に持つことができるので 「分散型」と呼ばれています。 自分のマシンにもリポジトリがあるため、 いつでもどこでも作業ができ、 かつ自分のマシンである程度作業が進んだ時点で、 メインとなるリポジトリに反映する、 といったことができます。

Gitはバージョン管理だけではない

Gitは分散型であることをメリットに、 近年、システム開発の現場で 広く使われるようになってきました。 このGitですが、 バージョン管理だけではとどまらず、 Gitの仕組みを利用した「GitHub」(ギットハブ) というサービスにも使われています。 「GitHub」とは、 世界中の人々が、自分の作品 (ソースコードやデザインデータ)を 保存・公開することができるようにした Webサービスです。 GitHubは GitHub社という会社が運営しており、 個人・法人問わず無料で利用できます。 あなたもぜひ使ってみては いかがでしょうか。 --------------------------------------------- PS.選ばれ続けて15年には理由があります。 卒業生5,000名以上! プログラミングスクールなら実績豊富なIT専門スクールで ----------------------------------------------

省略のルール

From:リスキルテクノロジー 高坂一城 新宿本校にて

kohsaka

前回、 間違えやすいHTMLのタグの読み方、 について書きました。 なぜ読み間違えやすいのか? これは、タグの表記が 英単語を省略した形になっている、 ことが要因の一つです。 そこで今回は、 この英単語の省略形について 書きたいと思います。 一見、 無造作に省略しているように見えますが、 実はあるルールに基づいて省略されています。

なぜ省略するのか?

そもそも、 なぜ英単語を省略するのでしょうか? それは、 全てを綴ると文字数が長くなるので、 短く簡潔に表現するためです。 歴史的な背景をみてみましょう。 インターネットやファックスが発達する前、 通信にはテレックスというものが 使用されていました。 テレックスの料金は文字数に比例します 文字数が少ないほうが料金が安い、 ということで省略形が使われていました。 テレックが一般的でなくなった今では 見やすさや覚えやすさのために 省略形を使うことが多いです。

省略系のルール

では早速、省略形のルールについて 見ていきたいと思います。

ルール1: 頭文字あるいは先頭の数文字で表現する

<a href=...>は、このルールに該当します。 「a href」は 「Anchor Hypertext REFerence」の省略形です。 このルールは、HTMLだけではなく、 一般的によく使われています。 例えば、銀行の「ATM」。 これは、 「Automated Teller Machine」 の省略形です。

ルール2 母音を消して表現する ※先頭の母音は消さない

<img src=...>は、このルールに該当します。 「img src」は 「IMaGe SouRCe」の省略形です。 大文字の部分(子音)だけで構成されています。 (先頭のIは省略しない) 英語を発音するときに、 母音よりも子音が単語の音を出します。 そのため、母音を消した綴りでも 単語が分かるという発想から生まれました。 また、このルールはIT系でよく 使われています。 例えば、 電子メールを送信する際のルールに SMTPというルールがあります。 そのルールにおいて、 宛先を指定するコマンドとして 「RCPT」というコマンドがあります。 「RCPT」とは「ReCeiPT」の省略形で 「受取り」という意味です。

何でも省略すればいいわけではない

今回は、英単語の省略ルールについて 書いてきましたが、 何でもかんでも省略すればいい、 というものではありません。 省略することで、 全く意味をなさないものもあります。 省略形は、意味が通じる範囲で 適切に使うようにしてください。 ただ、こうしたルールを知ることが、 HTMLだけではなく、 IT業界で多用される、いわゆる「略語」を 理解する手がかりになると思います。 ------------------------------------ PS.選ばれ続けて15年には理由があります。 卒業生5,000名以上! プログラミングスクールなら実績豊富なIT専門スクールで -------------------------------------

プロでも間違える!HTMLのタグの読み方

From:リスキルテクノロジー 木村和司
新宿本校にて

以前、プログラミング言語で良く使われる
読み間違えやすい英単語についてお話しをしました。

確かに読み間違えやすいのですが、
所詮、英単語。
調べればその読み方はすぐにわかります。

プログラミング言語の中には、
アルファベットではあるが
英単語ではない、
特別な文字列を使用したものも存在します。

その代表的な言語がHTMLです。

HTML(Hyper Text Markup Language)

HTMLとは、
ホームページを制作するための言語です。

言語と言っても一般的にHTMLは、
プログラミング言語ではなく、
マークアップ言語と呼ばれる
ホームページの構造を
記述するための言語です。

HTMLでは「タグ」と呼ばれる
特別な文字列を使い、
ホームページを記述していきます。

その「タグ」を正確に読めない、
あるいは、読み方が分からない、
という方が結構いらっしゃいます。

ホームページを制作するプロの方でも、
間違って読まれることがあるくらいです。

プロでも読めない意外な事実

では早速、読み方を間違えやすい
「タグ」を紹介していきます。

<img src=...>

これは、
ホームページ内に画像を掲載するときに
記述するタグです。

そのため、
世の中のほとんどのホームページには
このタグが使われています。

さて、なんと読むでしょうか?

「アイエムジー エスアールシー」
「イメージ エスアールシー」

実はこれ
「イメージ ソース」と読みます。

「image source」の省略形です。
imageは「画像」、sourceは「元」
という意味です。

<a href=...>

これは、
ホームページ内に「リンク」を記載するときに
記述するタグです。

「リンク」も多くの
ホームページで使われています。

さて、なんと読むでしょうか?

「エー ハーフ」
「ア ハーフ」
「ア ハレフ」

実はこれ
「アンカー エイチレフ」と読みます。

(実際には、エー エイチレフが多いでしょうか)

aタグのanchorとは「錨」という意味です。

錨というとイメージしにくいですが、
何かをつなぎとめるものという一般的な意味もあり、
aタグはここから来ています。

「href」は「hypertext reference」の略で、
Web上に存在する他のホームページへの参照
という意味です。

IT業界では省略形が多い

今回は、ホームページを制作するには
欠くことのできないHTMLで使われている
間違って読まれることが多い
タグについてお話しをしてきました。

これらのタグに共通することは、

どれも「元の英単語からの省略形」

ということです。

IT業界ではプログラミング言語に限らず、
このような省略形で表記されるものが
非常に多いです。

そこで、この省略のされ方を見ると、
一見やみくもに省略しているかのように
見えますが、

実は、ある程度のルールに従って
省略されています。

次回は、この省略のルールについて
お話をしていきたいと思います。

--------------------------------------------------------------------------------------
PS.選ばれ続けて15年には理由があります。卒業生5,000名以上!
SEを目指すなら、実績豊富なプログラミングスクール
--------------------------------------------------------------------------------------

ソースコードの記号の意味

From:リスキルテクノロジー 高坂一城 新宿本校にて

kohsaka

ソースコードには英単語だけではなく、 様々な「記号」が登場します。 この記号の中には、 普段の生活で使っている記号とは 表現が異なるものがあります。 今回は、そのような間違いやすい記号と その用途についてお話します。

間違いやすい記号

「*」

「アスタリスク」と発音します。 この記号は多くのプログラミング言語で 「乗算(掛け算)」の記号として使用されます。 数学では乗算として 以下のような記号が使用されますが、 5 × 3 プログラミングの世界では、 5 * 3 と表現します。 キーボードで 「×」の記号が入力できないため、 見た目が近い 「*」が使用されてます。

「/」

読み方は 「スラッシュ」 と発音します。 この記号は、 多くのプログラミング言語で 「除算(割り算)」 の記号として使用されます。 数学では除算として 以下のような記号が使用されますが、 5 ÷ 3 プログラミングの世界では、 5 / 3 と表現します。 これも「×」同様、 キーボードで「÷」の記号が 入力できないためです。 三分の一を1/3と 表現することがありますが、 1/3は1 ÷ 3と同じことなので、 「÷」の意味として「/」が使用されます。

「%」

読み方は 「パーセント」 と発音します。 この記号は、 多くのプログラミング言語で 「剰余算(余りを求める)」 の記号として使用されます。 数学では剰余算として 以下のような記号が使用されますが、 5 mod 3 プログラミングの世界では、 3 % 5 と表現します。

記号の用途

今回お話しました 「*」や「/」という記号は、 プログラミングの中で数値の 計算に使用するため、 使用頻度が比較的高い記号です。 しかし、 「%」はどういったときに 使用するのでしょうか。 例えば、 キーボードから入力された数値が 偶数なのか奇数なのかを 判定するには、 どうしたらよいか考えてみましょう。 偶数は2で割り切れる数、 奇数は2で割り切れない数です。 2で割り切れるということは、 2で割った余りが0である、 ということです。 逆に、 2で割り切れないということは、 2で割った余りが0以外である、 ということです。 ここで「%」が登場します。 キーボードから入力された数値 % 2 上記の答えが0なら、 入力された数値は偶数である。 上記の答えが0以外(実際には1)なら、 入力された数値は奇数である。 ということになります。 このように、プログラム中に登場する記号は、 単に数値を計算するだけではなく、 今回のようなアルゴリズムとしても 使用することがあります。 -------------------------------------------------------------------------------------- PS. 業界未経験からIT業界へ就職するには 社会人のための" プログラマースクール"で夢をかなえませんか --------------------------------------------------------------------------------------

ソースコードを”発音”する

From:リスキルテクノロジー 高坂一城 新宿本校にて

kohsaka

前回、ネーミングについてお話しをしたときに、 「プログラミング言語の多くは"英語"  で記述するものがほとんどです」 と書きました。 世界的に見ても日本人は英語が 得意な人種ではありません。 しかし、ソースコードを書くには 英語は避けて通れません。 最初は英語と格闘しながら ソースコードを書くことになるかもしれませんが、 徐々に慣れていきますので安心してください。

ソースコードを"読む"

こうして、ソースコードを書くことに慣れてくると、 次は"読む"ことにも慣れたいものです。 読むと言っても、 目で追いかけて読むのではなく、 声に出して読む(発音する)のです。 ソースコードを"発音"する? どういうことでしょうか。 プログラマ同士で打ち合わせをするときなど ソースコードの一部を発音することが しばしばあります。 そのときに 英語の読み方を間違えて発音してしまう、 あるいは、 読み方が分からなくて言葉に詰まってしまう、 という状況を目にすることがあります。 そこでソースコードによく登場するが、 間違って発音されることが多い英単語を いくつか紹介します。

読み間違えやすい英単語

「height」と「width」

「height」は「高さ」、「width」は「幅」を 表現するときによく用いられる英単語です。 さて、みなさんどう発音しますか? 「height」は 「ヘイト」ではなく「ハイト」と発音します。 また「width」はよく 「ワイズ」とか「ウィドス」と発音されますが、 正しくは「ウィッズ」と発音します。

「allow」と「deny」

これもよく間違って発音される英単語です。 「allow」は「許可」、「deny」は「拒否」 を表現するときに用いられます。 「allow」は「アロウ」ではなく「アラウ」、 「deny」は「デニー」ではなく「ディナイ」と発音します。

プログラマに発音の能力は必要か

ソースコードの「発音」を間違えても プログラムの動作に影響はありません。 しかし、 一つのプログラムを作成するときに、 一人で全て作成することはほとんどありません。 プログラムを作成するには数人から数十人、 場合によっては 数百人というチームで作成することがほとんどです。 つまり、他のプログラマとコミュニケーションを取りながら ソースコードを書くわけです。 その際に 自分の書いたソースコードを読み間違える、 というのは 恥ずかしいこともさることながら、 プログラマとしてのスキルレベルも 疑われる可能性があります。 そのため「たかが読み間違え」と思わずに プログラミングを勉強する際には、 ソースコードの読み方も勉強していきましょう! ---------------------------------------------- PS. ITエンジニアを目指すのは今からでも遅くない!! 社会人のための" IT専門校"で学習を始めませんか? ----------------------------------------------

わかりやすいコードと”ネーミング”

From: リスキルテクノロジー 高坂一城
新宿本校にて
kohsaka

以前「綺麗なコードの書き方」について
お話をしました。

統一感があるソースコードは、
非常に見やすくなります。

さて、綺麗なコードを書けるようになったら、
次のステップとして
「分かりやすい」コードを書くことを
心掛けましょう。

分かりやすいコードとは、
一体どういうものでしょうか。

ネーミング

プログラミングには、

「ネーミング(名前付け)」

と呼ばれるものがあります。

皆さんも、コンピュータ上で
新しいファイルやフォルダを作成するときに、
適切なファイル名やフォルダ名を付けますよね。

これと同じように、
プログラマがソースコードを書く際に、
ソースコード中に自由に名前を付けることができる
場所がたくさんあります。

そういった場所に適切な名前を付けることを
「ネーミング」と言います。

ネーミングの難しさ

プログラミング言語の多くは
「英語」で記述します。

そのため、ネーミングも英語で行います。

例えば、
「日本語で"削除する"という意味のネーミングをしたい」

皆さんなら、どういう英語を使いますか?

プログラミングにおいて、
「削除する」という意味を表す
ネーミングとしてよく使われる英語が

「delete」と「remove」 です。

この違い分かりますか?

・delete
 完全に消し去る

・remove
 取り除く(消し去っていはいない)

という意味の違いがあります。

つまり、
あるものを完全に消し去る場合には「delete 」、

あるものをそこから取り除くだけで、
どこかにまだ存在する場合には「remove」、

というネーミングを使います。

その他にも、
日本語で"見つける"という意味を表す
ネーミングとして、

「find」と「search」という英語があります。

・find
 見つかることが前提

・search
 見つからないかもしれない

という意味の違いがあります。

「ネーミング」の重要性

ネーミングはコメントと同様、
適当に付けてもプログラムの動作には
影響を及ぼしません。

「delete」とすべきところを
「remove」と記述しても
プログラムは動きます。

それでは、
なぜ「ネーミング」が大切なのでしょうか。

それは、コメントと同様にネーミングも、
ソースコードをメンテナンスする人への
大切な情報源だからです。

「プログラミングとは名前を付けること
 そのものである」

という人もいるくらいです。

最初はネーミングを考えながら
プログラミングをすることは
時間が掛かり大変かもしれません。

しかし、ネーミングを考えながら
より多くのコードを書くことで

プログラミングをする時間も徐々に
短くなっていきます。

--------------------------------------------
PS.プログラミングやJavaを身につけたい方へ
これまでに5000名以上の卒業生を輩出の
社会人のためのIT専門校なら" LAプログラミングスクール"
---------------------------------------------

「コメント」の重要性

From: リスキルテクノロジー 高坂一城
新宿本校にて

kohsaka

プログラミング言語を学ぶとき、
「コメント」は最初に習う項目の一つです。

「コメント」とは、
「ソースコードに書かれている注釈」 です。

そのため、コメントがあろうがなかろうが、
実際のプログラムの動作には全く
影響を及ぼしません。

プログラムを実行するときには、
コメントは全て無視されます。

では、なぜコメントを書くことが
必要なのでしょうか。

ある、調査機関によると、

「ソースコードの平均19%がコメントである」

という調査結果が出ています。

なぜ「コメント」が必要か

その理由は、
「ソースコードをメンテナンス(保守)する人に
情報を伝えるため」
です。

多くの場合、プログラムを作成する人と
そのプログラムをメンテナンスする人は異なります。

どんな「コメント」を書けばいいのか

では、どんなコメントを書けばよいのでしょうか。

今までに私が見てきたコメントで一番多いものが、

「何をしているコードなのか」

というものです。

例えば、

「ここでファイルにデータを出力する」
「もし値が0ならばエラー処理する」  などなど...。

このようなコメントは必要なのでしょうか??

「何をしているコードなのか」は、
ソースコードを見ればわかることです。

「コメント」として書くべきこと

ソースコードをメンテナンスする人が知りたいのは、

「なぜそのようなコードになったのか」

です。

ソースコードに手を入れて変更するにも、
なぜそのようになっているのかが
解らないと手を入れられません。

一見すると回りくどいソースコードだけど、
もしかしたら何か理由があるのかも?

そう考えると迂闊に手は入れられません。

「何をしているコードなのか」は、
時間をかければ読み解くことができます。

しかし、
「なぜそのようなコードになったのか」は、
そのソースコードを書いたプログラマの
頭の中にしかありません。

その意図をソースコードから読み取ることは
できません。

だからこそ、コメントで補う必要があるのです。

「コメント」も成果物の一部

最初にも書きましたが、
コメントはプログラムの動作には影響しません。

実際にプログラマに話を聞くと、
「なんとなく」でコメントを書いている人も多いです。

しかし、
コメントもソースコード(成果物)の一部です。

また、ソースコードをメンテナンスする人への
大切な情報源です。

実際にプログラムを書く際には、
「なんとなく」ではなく、気を遣ってコメント
を書くようにしましょう。

--------------------------------------------
PS.これからITを勉強したいあなたへ
高坂も登壇!参加費無料のセミナーはこちら↓↓
IT業界セミナー・授業体験セミナー
--------------------------------------------

綺麗なコードを書くためには?

From: リスキルテクノロジー 高坂一城
新宿本校にて

kohsaka

「優れたプログラマが書くコードは綺麗である」

と、よく言われます。

これは私の経験上、真実だと思います。

では、「綺麗なコード」とは何でしょうか?

一言でいうと、「一定のルールで書かれている」ということです。

書き方が統一されていないコードは美しくありません。

また、書き方が統一されていても、
そのルールが美しくなければ意味がありません。

ということで、「美しい書き方のルール作り」が大切です。

名前の付け方

まずは名前の付け方を決めます。

全て英単語にする、といった場合、
以下の2つの表現方法があります。

【スネークケース】

単語と単語の間を"_"(アンダーバー)で区切る方法です。

例えば、「ユーザ名を取得する(get user name)」ことを

get_user_name

と表現します。

これは単語を"_"でつなげる様(さま)が、
スネーク(蛇)に似ていることから名付けられています。

【キャメルケース】

単語の頭文字だけ大文字にして連ねる方法です。

上記の例では、

getUserName

と表現します。

これは大文字の部分がキャメル(らくだ)の"こぶ"の
ように見えることから名付けられています。

基本は使用する言語に合わせる

名前の付け方(単語の区切り方)は、
使用するプログラミング言語に合わせます。

一般的に、Javaならキャメルケース、
Rubyならスネークケースが綺麗とされています。

「綺麗なコード」は、見返りの大きい、時間の投資

名前の付け方を考えて綺麗なコードを書くには、
時間がかかります。

10行や100行のコードをただとりあえず動くだけの
レベルで書くのに比べたら、余計に時間はかかります。

さらに、動いたらメンテナンスせずに捨ててしまうプログラムなら、
「綺麗」にこだわっても意味がないですよね。

しかし、たいていのプログラムは、10行や100行を
書いて終わりではないです。

実際は、もっともっとたくさんのコードを書き、
それをメンテナンスしなくてはいけません

(スマートフォンの中にはおよそ1億行のプログラム
が入っていると言われています)。

そこで綺麗なコードのために費やした時間に、
メンテナンスのし易さ、
という膨大な利子が付いて返ってきます。

さらに、綺麗なコードを書くために、
プログラムを整理することは、

こだわった分だけ、
そのプログラマ自身のスキルを確実に向上させます。

例えば、今、綺麗なコードを書くために10の時間がかかっても、

次は9の時間でそれができ、その次は8の時間で、というように、

投資に必要な時間がどんどん短くなっていきます。

投資額が少なくなる一方、見返りがどんどん増えていく。

こんな美味しい投資をしない手はありませんよね!

--------------------------------------------
PS.プログラミングを学ぶなら
LAプログラマースクール
--------------------------------------------

プログラムの正しい書き方とは?

From: リスキルテクノロジー 高坂一城
新宿本校にて

kohsaka

「プログラムの正しい書き方ってあるのでしょうか?」

プログラミングを
学び始めて間もない方から
先日このような質問を受けました。

さて、
そもそもプログラムに...

「正しい書き方」

...はあるのでしょうか?

プログラムって動けばいいの?

プログラムの
正しい書き方というのは
もちろんありますが...

「これが絶対的に正しい!」

...という
明確なものがあるかというと
ちょっと悩んでしまいますね。

エンジニアとして
活躍されておられる方なら
誰もが一度は...

「動けばいいから」

...という言葉を
聞いたことがあるかと思います。

これはプログラムの中身はどうあれ、
システムとして期待している

機能や結果が出ていれば
問題ないよという意味で使われます。

決してシステムの中身が
どうでもいいという訳ではありません。

じゃあ何が「正しい」ってことなの?

いきなりたとえですが...

例えばあなたが
小説を読み始めたとします。

せっかくの休日。
ゆっくりとした時間を取ろうと考えて、
本屋に行って買ってきました。

しかし、
読んでみると、、、

全然理解できない。
前後の文脈が合っているような、あっていないような、、、

「ああ、それが言いたかったのね」

...と後半になってやっと理解できるような
文章だったりすると疲れてしまいます。

ポイントはここです。

正しいプログラムの書き方のポイントも
小説などの文章と同じくここにあります。

まずひとつめは...

1.理解しやすい書き方かどうか

...ですね。

小説でも新聞記事でもそうですが、
文章は読みやすい方がいいです。

プログラムも
文章みたいなものです。

処理そのものはコンピュータがしますが、
人が書いて人が読むものです。

意図が伝わりにくいよりも
伝わりやすい方がいいのです。

システム開発は多くの場合
1人だけでするものではありません。

多くのエンジニアが
集まってシステムを作り上げます。

あるエンジニアが書いたプログラムが
非常に分かりにくいコードで、

そのエンジニアから

「設計書ないから、ソース読んで理解してね」

...と言われても、
言われた方が困りまってしまいますし、

効率の良い開発が行えなくなります。

そしてもうひとつのポイントは...

2.適切な書き方かどうか

...ということです。

処理結果が同じであっても
書かなくても良いことを書いていたり…

書かない方が良い
内容を書いたりしている場合、
そのときは動いていても、
何らかのバグの原因になりかねません。

プログラム言語は
書き方によってはどんな処理もできますが、

プログラム的には
あまり使わない方がいい書き方もあるのです。

javaの例を見てみましょう

簡単な内容ですが、
javaのコード例を少し見てみましょう。

例えばこちらは
雑貨、医薬品、衣類の売り上げを合計し、
平均売上高を出すロジックです。

int a,b,c,t,v;
a = 320000;
b = 200000;
c = 130000;
t = a+b+c;
v = t/3;

コードは短いですが
変数名がa,b,c,t,vとなっています。

これだとぱっと見ただけでは、
変数か何の値を扱うかが分かりにくいですね。

これをこのように書き換えます。

int salesItem = 0;
int salesDrug = 0;
int salesWear = 0;
int total = 0;
double salesAvl = 0.0;

salesItem = 320000;
salesDrug = 200000;
salesWear = 130000;
total = salesItem + salesDrug + salesWear;
salesAvl = total / 3;

変数名をしっかり設定するだけで
何の値を扱う変数か、
どんな処理をしているかがよくわかります。

続いてはこちら、乱数の計算です。

double totalValue = ((Math.random() * 10 )+(Math.random() * 20)-(Math.random() * 5)+(Math.random() * 15));

4つの乱数を加減算していますが、
1行でまとめてしまうと
ちょっと長くて読みにくいです。

これくらいならまだ読めますが、
もっと長い処理を1行で書こうとする
エンジニアもいらっしゃいますね。

double firstValue = Math.random() * 10;
double secondValue = Math.random() * 20;
double thirdValue = Math.random() * 5;
double fourthValue = Math.random() * 15;

double totalValue = firstValue + secondValue - thirdValue + fourthValue;

こちらはこのように書き換えると
乱数との積を求める値もわかりますし、
パッと見て理解できるかと思います。

続いては条件文です。

public boolean checkTarget(int targetValue){
if (checkValue1(targetValue) == 0){
if(checkValue2(targetValue) == 0){
if(checkValue3(targetValue) == 0){
if(checkValue4(targetValue) == 0){
if(checkValue5(targetValue) == 0){
return true;
}else{
return false;
}
}else{
return false;
}
}else{
return false;
}
}else{
return false;
}
}else{
return false;
}
}

checkValue1~5の
5つのチェック全てにおいて
値が0かどうかをチェックしていますが、

ネスト(入れ子)が多すぎて
わかりにくいですね。

同じ処理をこのように書き換えると
見づらさは解消されます。

public boolean checkTarget(int targetValue){

boolean ret = false;
if(checkValue1(targetValue) == 0 &&
checkValue2(targetValue) == 0 &&
checkValue3(targetValue) == 0 &&
checkValue4(targetValue) == 0 &&
checkValue5(targetValue) == 0 ){

ret = true;

}
return ret;
}

最後にもうひとつ、
こちらはオブジェクト指向的な話です。

public class classA(){
public int ValueA = 0;
public int ValueB = 0;
...
}

このようなクラスがあります。

public変数はどのクラスからでも
参照できるものですが、

クラスの依存性が明確になりませんし、
カプセル化の観点からもあまり良いとは言えません。

public変数は
そのクラス内からのみ参照できる
private変数に変更して...

setter、getterと呼ばれる
値の設定と取得を行うメソッドを設定しましょう。

public class classA(){
private int valueA = 0;
private int valueB = 0;

public void setValueA(int _valueA){
valueA = _valueA;
}
public int getValueA(){
return valueA;
}
...
}

...こんな感じですね。

エンジニアとしての質を高める

このように
書き方ひとつで読みやすさが
段違いに変わってきます。

読みやすさが向上すると
メンテナンス性が高まりますので、

長い目でシステムを見た時に
バグが発生する可能性が低くなるのです。

このような
プログラムの取決めは

「コーディング規約」

にまとめられています。

javaの場合は
いくつかの団体が
コーディング規約を公表しています。

日本の企業でも
公表している企業がありますが、

開発経験が長い企業だと
独自のコーディング規約を作っている企業もあります。

プログラムをプロダクトして考えると
プロダクトの質を高めることが大切です。

その質を高めるためには
コーディング規約などによって

読みやすさや適切な処理などを
高める必要があります。

もちろんコーディング規約だけが
質を高める要素ではありません。

システムとして総合的な質を高めるには
プロジェクトの進め方や設計手法など
さまざまな要素の質を高めなければなりません。

全ての質を高めるには
多くの時間と経験が必要になりますが、

まずは基本となる...

「プログラムの質」

...を高めることから
エンジニアとしての意識を高めてゆきましょう。

 

PS

プロフェッショナルになるプログラミング講座はこちらから

ミスのない設計をするには?

From: リスキルテクノロジー 高坂一城
新宿本校にて

ミスのない設計をするには
どうすればいいか?

これは
全てのエンジニアにとって
命題と言っても過言ではないでしょう。

今回は
設計ミスを無くすために
何が必要かをご紹介します。

設計ミスは無くせるか

ミスのない設計をする!

と意識して
いざシステム設計してみたが...

実際には
さまざまな設計ミスが
システムの陰に潜んでいた....

そんな経験を持つエンジニアの方は
多いと思います。

設計ミスは100%無くせるのか!?

答えは残念ながらノーです。

人間が作るものですから
必ずどこかにミスが潜む可能性はあります。

なんだ、
やっぱり設計ミスはなくせないんだ...

なんて思わないでください。

そもそも

「無くせるか無くせないか」

という、
「0」か「1」で考えることに
無理があるのです。

設計ミスを防ぐにあたっては

ミスを無くす!

と考えるのではなく、

設計の品質を高める!

と考える方が遥かに建設的です。

システムと言えども
所詮は人間が作るものです。

言わば「ものづくり」ですね。

どのような
ものづくりでもそうですが、

品質の高いものをつくることが
ユーザーの評価に繋がりますし、

品質の高いものをつくることで
作り手(エンジニア)を育ててくれます。

とはいえ、
もちろん設計ミスは
無いに越したことはありませんよね。

設計ミスを
限りなく0に近づけるとともに

システムとしての
品質を高める姿勢こそが
エンジニアにとって重要なのです。

勘違いしてはいけません

設計品質を高めるために
勘違いしてはいけないことがあります。

それは...

「○○制度を導入しているから品質は高い」

...と言う点ですね。

○○には
設計手法であるとか
設計文書管理の規約であるとか、

テンプレート的な
手法や方法があてはまります。

確かに
一般的に広く使われている
制度や手法を導入することで

品質には一定の
ベースアップが見込めます。

それは非常に大切な事であり
導入することで品質が高まるのであれば
迷わず導入することをオススメします。

ですが、

「それを導入している=品質が高い」

という考えるのは誤りです。

制度や手法は
ある面では大きな効果を生みますが

その制度や手法に
そぐわないアイディアは実行しにくいという
ある種の縛りも生みます。

さらに、
品質を最大限に高めるのは

制度や手法といった
実体のないものではなく、
あくまでエンジニアという人間です。

システム開発を
1人で行うケースは非常に稀です。

制度や手法だけに頼らずとも
さまざまな経験やスキルを持った
エンジニアが必ずそばにいるのです。

制度や手法がもたらしてくれる
メリットを最大限に利用しつつ...

エンジニア同士が協力しあうことで
設計品質を高めることができます。

どうやって品質を高めるのか

設計品質を高めるために
エンジニアに必要な心がけを
いくつかご紹介しましょう。

ある程度の品質が保証されているものを利用する

これは先ほどの
制度や手法のメリットを
利用するということに繋がります。

たとえば設計書であれば
先日ご紹介したUMLを利用するのがいいですね。

UMLは
オブジェクト指向設計のために考案された
モデリング言語ですので、

多くのエンジニアが...

「こんな設計書があれば理解しやすいのに」

というニーズに合わせて
進化し続けている設計書の表現方法です。

また、実装段階では
デザインパターンを利用するのもいいですね。

デザインパターンとは
プログラムを実装する際に

特定のパターンでプログラムを書けば
問題なく実装できるといった
パターン集のことです。

デザインパターンについては
また別の機会に話しますが、

デザインパターンも
多くのエンジニアが
品質向上のために編み出した手法です。

もちろん、
UMLやデザインパターンだけで
ベストだということはありません。

UMLはシステム内外の
処理の流れや仕様を把握できますが、
それだけでは足りないケースも割とありますし、

デザインパターンは
あくまでパターンですので、

実装する時には
システムに合わせる必要があります。

レビューで設計品質を高める

あるエンジニアが設計した内容は
そのエンジニアの視点で作成されたものです。

特定のエンジニア視点だけだと
設計ミスが含んでいる可能性が高まりますので、

多くのエンジニアと設計レビューすることで
設計ミスを0に近づけることができます。

レビューは自分以外のエンジニアの
スキルや視点を反映できるチャンスです。

それだけで
設計品質を大きく高めることができますので、

できるだけ設計レビューの機会を
設けることをオススメします。

ここでひとつ注意したいのが...

レビューの形式化

...です。

レビュー回数が多くなりすぎて
レビューそのものが形式化してしまうと、

折角レビューをしたとしても

「うん、まあ大丈夫だろう」

...と、レビューを受ける側も
細かい判断を放棄してしまうことがあります。

これだと意味がありませんので、
レビューする側は淡々とレビューするだけでなく、

時には他のエンジニアに問いかけるような
工夫を織り交ぜながら行うようにしましょう。

チェックシートを活用する

これ、意外ですけど
結構品質を高める効果はあります。

建設業や旅客業など、
一歩間違えれば大事故に繋がる業種では
今でもチェックシートが活用されています。

システムについて
共通的に考慮すべき事項や、

システム固有の特徴から
チェックする必要がある項目をまとめ、
設計内容をチェックしてゆきます。

品質を高めるために行っていることが
正しく行われたかどうかを確認するフェーズですね。

時間的な問題から
十分に行われていない項目があれば
そこにミスの可能性が含まれている訳ですから、

システム開発で行った行動の
どの部分に懸念材料があるのかを把握できます。

その懸念材料に対して
後日にでも対策することで
高い品質を確保することができるのです。

今やシステム障害が発生したら
何億という被害や
社会的な信頼を失いかねない時代です。

このような大事故を防ぐことができるならば
大きな手間ではありません。

基本はエンジニア間のコミュニケーションです

設計ミスを0に近づけるために
設計品質を高めるためにできることは

他にもたくさんありますし、
企業によってさまざまな工夫が施されています。

いろいろ書きましたが、
やはり基本となるのは
開発チーム内のコミュニケーションです。

制度も手法も
レビューもチェックシートも
活用するのはエンジニアという人ですので、

高度な技術を持っているけど
コミュニケーションに問題があったりすると、
メリットを最大限に引き出すことができません。

実際に
設計書もそこそこしかない
小さなソフトハウスだけれども、

設計ミスやシステム障害が
非常に少ないという企業もあります。

そういうところは
エンジニア間のコミュニケーションが
抜群に良いんですよね。

チームとして意思疎通が取れていて、
スキルの共有もできているので、
設計ミスを早期に発見できるのです。

高い品質のシステムを作る!

という目的意識を持ちながら
開発チームでスキルを共有できる...

それが
最善であり基本となる
設計ミスを防ぐ方法なのかも知れません。

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

PS

プロになるためのプログラミングの講座はこちらから

統一モデリング言語-UMLとは?

From: リスキルテクノロジー 高坂

ソフトウェアの
開発現場においては、

さまざまな手法で
設計書が作成されています。

今回は
最も広く普及している
設計書の表現手法である...

「UML」

...についてご紹介しましょう。

設計書の表現はさまざま

言葉というものは
使い方や言い回しひとつで

さまざまな表現を
することができます。

言葉の使い方は
人によってさまざまですので

極端な話をすれば
100人いれば100通りの表現があります。

では、
プログラムの設計書の場合を
考えてみましょう。

設計書も同じく
100人書けば100通りの
設計書が生まれる可能性はあります。

しかし、
プログラムの設計をするのに
100通りの書き方が存在すると、

必ずしも期待通りの
プログラムが書かれるとは限りません。

プログラマーが読み違えて
設計で意図していない
プログラムが生まれる可能性もあります。

そしてこのような現象は
実際に開発現場で起きています。

さまざまな企業の
開発を経験するSIerや、

転職経験のある
エンジニアならご存知かと思いますが、

開発現場や企業によって
実際に設計書の書き方が
大きく違うというケースは多いのです。

このような

「違い」

...をできるだけ無くし、
統一された書き方が生まれました。

それが...

「UML」

...なのです。

表現を統一すれば理解しやすい

UMLとは

Unified Modeling Language

の略称で...

Unified(統一された)
Modeling(モデリング)
Language(言語)

...という意味です。

「統一モデリング言語」

と和訳されていますね。

オブジェクト指向開発における
統一された設計書の表現方法については

1990年代ごろから
さまざまな方法が考案されてきましたが、

検討を重ねて
それらのさまざまな方法を
ベースにして生まれたのがUMLです。

UMLには多くのメリットがあります。

たとえば
表現方法の統一されている点です。

設計書の表現方法が
統一されているので、

UMLの読み方を理解している
エンジニアであれば
設計仕様を正確に読み取りやすくなります。

また、
UMLは文字だけの仕様記述ではなく、

基本的に図(ダイアグラム)で
仕様を表現しているため、
エンジニアにとって理解しやすいですし、

設計変更が起きた場合でも
どのプログラムを変更する必要があるのかが
把握しやすくなります。

UMLのダイアグラム

UMLには用途によって
いくつかのダイアグラムがあります。

システム構造に関するダイアグラム

■1:クラス図

システムを構成している
クラスの関連性を表現したものです。

あるクラスが
どのクラスとどのような関係があるのか、
どのような変数を保持しているのかなどを
視覚的に理解することができます。

■2:パッケージ図

複数のクラスが集まって
ひとつのパッケージが構成されますが、

そのパッケージの関連性を
表現したダイアグラムです。

■3:オブジェクト図

クラス図ではクラス間の
関連性を把握することができますが、

オブジェクト図では
実際にプログラムが動作する際に
どのような状態になるかを表現します。

システムの振る舞いに関するダイアグラム

■4:アクティビティ図

プログラムの処理の流れを
表現するダイアグラムです。

「フローチャートのUML版」と言えば
理解しやすいかも知れません。

■5:ユースケース図

システムの利用者(アクター)が
システムの利用の仕方や、

システムがアクターに対して
提供する機能を表現します。

■6:ステートチャート図

システムがある処理を行う際、
オブジェクトの状態に
どのような変化が起きるのかを表現します。

ステートチャート図は

「状態遷移図」

と呼ばれることもあります。

システム間の相互作用に関するダイアグラム

■7:シーケンス図

オブジェクト間の連携や
動作の流れを表現するダイアグラムです。

イベントが起きた時に
どのような流れで処理が進むかなどを
表現しています。

■8:コミュニケーション図

オブジェクト間での
メッセージやデータのやりとりを
表現したダイアグラムです。

オブジェクト間で
実際にどのようなデータが
受け渡しされるのかを理解できます。

「コラボレーション図」

と呼ばれることもありますが、
これは古い呼び方です。

習得することをオススメします

この他にも
さまざまなダイアグラムがありますが、

主に使用されているのは
ここで紹介したダイアグラムになります。

これから
プログラムを学ぶ方にとって
UMLを学ぶことは大きなメリットがあります。

UMLはシステムの構成や動作を
俯瞰的に見ることができますので、

プログラムだけでなく
システム全体を理解しやすいのです。

しっかりとした
開発スキルを身に着けたいならば
UMLの習得することをオススメします。

UMLは、
あなたが実際に
プログラムを作る時だけでなく、
設計する時にも役立つ手法なのです。

リスキルテクノロジー
高坂

PS

UMLも学べるプログラミングのスクール

Eclipseを日本語化しよう

From: リスキルテクノロジー 高坂
@新宿本校

以前のブログで
IDE(統合開発環境)

「Eclipse」

...をダウンロードしました。

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

Eclipseを起動しよう

以前のブログでは
Eclipseをダウンロードし、

ファイルを展開したとこで
終了したいました。

Eclipseを動かすには
これからインストールや設定が必要!

…という訳ではなく、
展開したファイルを実行するだけで
起動することができます。

それでは
起動してみましょう。

ファイルを展開したフォルダ

/user/eclipse

に移動して、

eclipse

のアイコンをダブルクリックします。

step1

Eclipseが起動しました。

しばらくすると、
スタート画面が表示されます。

step2

英語です。

そう、
Eclipseはデフォルトで
英語で表示されるのです。

英語がわかる方なら
特に問題ありませんが、

あまり馴染みがない方にとっては
開発中ずっと英語というのも
厳しいものがあるでしょう。

という訳で、
Eclipseを日本語化したいと思います。

PleadesでEclipseを日本語化

Eclipseは...

「プラグイン」

...と呼ばれる
拡張モジュールを追加することで
さまざまな機能を追加できることができますが、

Eclipseを日本語化するにも
このプラグインを使用します。

Eclipseを日本語化する
プラグインとしては...

Pleades

が有名ですね。

出典:MergeDoc Project

step3

こちらは
MergeDoc Projectにより
配布されているプラグインで、

本体だけでなく
他のさまざまなプラグインも
日本語化してくれるものです。

それでは
Pleadesプラグインを
Eclipseに追加してみましょう。

その前に、
今回も前回と同様、
管理者権限のユーザでログインしてくださいね。

まずは
プラグインを保存する
フォルダを作ります。

step4

/usr/eclipse/dropins/

のフォルダに...

pleades

という名前のフォルダを作ります。

そして
ホームページの中央付近に...

「Pleadesプラグイン・ダウンロード」

という欄がありますので、
安定版のリンクをクリックし、

pleiades_1.6.0.zip

をダウンロードします。

※2015/8/7時点でのバージョンは1.6.0

ダウンロードしたら
アーカイブマネージャで開きます。

step5

これらのファイルを
先ほど作ったフォルダに展開します。

step6

そして
Eclipseをインストールした
フォルダに移動し...

eclipse.ini

を開いて設定を変更します。

step7

ダブルクリックすると
geditが開きますので、

-Xverify:none
-javaagent:/usr/eclipse/dropins/pleades/plugins/jp.sourceforge.mergedoc.pleiades/pleades.jar

の2行の設定を
一番最後に追加して保存します。

これで準備は整いました。

Eclipseを起動しましょう。

step8

みごとに
日本語化されました。

もし、
うまく日本語にならない場合は、

コンソールか…

/usr/eclipse/eclipse -clean

とコマンドを入力して
起動してみてください。

それでもエラーが出る場合は
eclipse.iniの設定が間違っている場合があります。

設定ファイルの内容をチェックしましょう。

これで
言葉を気にすることなく
Eclipseが使えるようになりました。

次回はEclipseの
基本的な使い方などについてご紹介します。

リスキルテクノロジー
高坂

PS

日本語化しておいて何ですが…
エンジニアにはやはり英語力が必要です。

できるだけ英語に
慣れておくことをオススメします。

リスキルテクノロジーの資料請求はこちらから

Eclipseのインストール方法 -準備編-

From: リスキルテクノロジー 高坂
@新宿本校

システム開発に欠かせないのは...

IDE(統合開発環境)

...です。

優れたIDEを使うことで
開発効率をアップさせることができます。

以前に構築したCentOS7に
IDEのひとつである...

Eclipse

...をインストールしてみましょう。

注)CentOSでのインストールになります。

Eclipseとは?

Eclipse(イクリプス/エクリプス)は
IBM社で開発されたIDEです。

その歴史は
1990年代から始まりますが

2000年代に入り
オープンソース化されるとともに

多くの開発者の支持を得て
今でも様々な開発現場で使われています。

主に使用されるのは
Javaを使った開発ですが、

プラグイン

と呼ばれる
拡張機能を使うことにより

PHPやRubyなど
Java以外の言語で開発できます。

Eclipseとは

「日食」

...という意味です。

宇宙や天体を
イメージさせますが、

Eclipseの
各バージョンにも
天体に関連する名前が付けられています。

たとえば...

バージョン3.2には
木星の衛生「Callisto」という名前で、

バージョン4.4には
月を意味する「Luna」という名前です。

ちなみに、
最新バージョンである4.5には

Mars(火星)

...という名前が付けられています。

管理者としてCentOSにログインしておこう

今回は
CentOSにログインする時に

初めからRoot(管理者)で
ログインしておいてください。

step1

Rootでログインするには
ログイン画面が表示された時に

「アカウントが見つかりませんか?」

というリンクをクリックします。

次に表示される画面で
管理者のユーザー名とパスワードを入力します。

これで、
管理者としてGUIでログインできます。

ただし、
ひとつだけ注意があります。

管理者でログインする時は
システムで必要なファイルやフォルダを
誤って消したりしないように気を付けましょう。

場合によっては
システムが起動しなってしまいますので。

Eclipseをダウンロードしよう

まずは公式サイトから
Eclipseの最新版である...

Eclipse Mars

...をダウンロードしましょう。

出典:Eclipse

step2

32bit版と
64bit版があるので
環境にあわせてダウンロードしてください。

Step3

32bitか64bitかを選択すると
ダウンロード元のサイト情報が表示されます。

Downloadをクリックしましょう。

step4

ダウンロードが終わると
どのように開くかを聞かれます。

プログラムで開く-アーカイブマネージャ

を選択しましょう。

ダウンロードされたファイルは
アーカイブされたままです。

アーカイブとは
複数のファイルをまとめて
1つのファイルにしたものです。

また、
容量を減らすために
データを圧縮されています。

そういった
アーカイブを管理するソフトが
アーカイブマネージャなのです。

ダウンロードが終わると
アーカイブマネージャが開きます。

step5

eclipse-jee-mars-R-linux-gtk-x86_64.tar.gz

という
アーカイブの中に...

eclipse

というフォルダがあります。

フォルダを選択して

「展開」

...をクリックしましょう。

step6

展開画面が表示されます。

ログインユーザーの
ホームフォルダが表示されます。

一般的にプログラムは...

usrフォルダ
(/usr)

...に置くことが多いので、
usrフォルダに移動して展開します。

step7

展開が終わると

「eclipse」

というフォルダが作成されます。

Eclipseのダウンロードは
これで終了です。

次回は
Eclipseの起動と日本語化をご紹介します。

リスキルテクノロジー
高坂

PS

最初に管理者で
CentOSにログインしたのは

管理者以外のユーザーでは
usrフォルダに
ファイルを作成できない場合があるためです。

ファイルが作成できる、できないというのは

「権限」

…で管理されますが、
それについてはまた別の機会にご紹介します。

Javaプログラマーを目指すならこちらから

エンジニアのためのビジネス用語講座3

From: リスキルテクノロジー木村

エンジニアが
ビジネスシーンで使う
使いすぎ注意のビジネス用語を

これまで2回にわたって
ご紹介してきましたが...

今回もまた
エンジニアのためのビジネス用語講座を
開講したいと思います。

カタカナ語のビジネス用語って
本当に多いです。

問い

さて、
今回はビジネス用語の
問題から始めたいと思います。

それでは、
次の文の意味を答えてください。

・例題1

社員の情報リテラシーを深め、
シナジーを高めながら活動しましょう。

・例題2

今回の開発スキームにおいて
テスト工程におけるマイルストーンでは、
エビデンスをユーザに提示して
オーサライズしてもらう必要があります。

...意味がわかるようで
はっきりとわかりにくいですよね。

これらは過去のブログで
ご紹介した用語になります。

それでは
解答を見てみましょう。

・例題1の解答

社員の情報に対する理解度を深め、
社員同士の相乗効果を高めながら活動しましょう。

・例題2の解答

今回の開発計画において
テスト工程におけるそれぞれの節目では、
テスト結果となる成果物をお客様に提示して
承認してもらう必要があります。

だいたい
こんな感じの意味になります。

解答できましたでしょうか?

カタカナ語だと
意味が伝わりにくいですが、

日本語でも
やや固い言い方になりますね。

そのあたりも
カタカナ語が使われる
理由のひとつと言えるでしょう。

エンジニアのためのビジネス用語集3

それではさっそく
紹介してゆきたいと思います。

■1:インスコ(?)

・使用例
「プログラムをインスコしといて」

・意味
「インストール」

これは和製英語のようなもので、

「インストール(install)」

...のことを言います。

「インストール」

「インスト」

「インスコ」

...と、
標準語から地方の方言に変わるように
表現が変わってゆきました。

インストール作業が多い
IT業界でよく使われています。

■2:ネゴ(nego)

・使用例
「その件は部長にネゴってください」

・意味
「交渉」「協定」

こちらも和製英語のようなもので、

「ネゴシエーション(negotiation)」

...が短くなった言葉です。

上司やユーザーなど、
相手との交渉が必要なときに使われます。

■3:ブラッシュアップ(brushup)

・使用例
「その企画をもう少しブラッシュアップしましょう」

・意味
「磨き上げる」「質を高める」

ものごとを磨きあげることで
質を高めることを意味します。

ある程度の
レベルに到達したけれど
もっと質を高めたい時に使われますね。

■4:ペンディング(pending)

・使用例
「その件についてはペンディングとします」

・意味
「保留」「未定」

諸事情により
ものごとがうまく進まず、
保留状態になっていることを意味します。

「pend」

という言葉は

「ぶら下がる」

...という意味ですので、

「ものごとがぶら下がったまま」

...という意味で使われています。

■5:ボトルネック(bottleneck)

・使用例
「何がボトルネックになって遅れているのですか」

・意味
「詰まる」「(速度が)落ちる」

システム用語では
設計上の制約や速度が低下する処理などを
意味しますが、

一般的なビジネス用語としても
ものごとが進まない原因を指す言葉として
使われています。

ボトルネックとは
瓶の細くなっている首の部分のことで、

液体がそこを通る時に
流れが遅くなることが語源になっています。

■6:ミッションクリティカル(mission critical)

・使用例
「ミッションクリティカルなシステム」

・意味
「常に稼働する必要があるシステム」

電気などのライフラインや
交通系・金融系システムなど、

24時間365日の稼働が必要で
停止することができないシステムを意味します。

■7:リスクヘッジ(risk hedge)

・使用例
「問題が発生した時のリスクヘッジを教えてください」

・意味
「危険回避」「損失回避」

もともとは
金融や経済用語として使われていましたが、

計画の立案などにおいて
問題が発生した場合の回避策を表す言葉として
使われています。

システム開発でも
開発計画を立てるときに使われますね。

■8:リスケ(resche)

・使用例
「そのスケジュールをリスケしてください」

・意味
「再計画」

リスケとは…

「リスケジュール(reschedule)」

...の意味で、
もう一度計画しなおすことを言います。

システム開発では
開発に遅れが発生した場合、

当初の計画を
修正するケースがありますが、
そのことをリスケと言います。

海外では通じない用語もあります

エンジニアが使う
ビジネス用語はたくさんありますが、

今回ご紹介したように
和製英語のように使われているものもあります。

海外のエンジニアなどには
意味が通じないケースもありますので
注意してくださいね。

さて、
これまで3回にわたって...

「エンジニアのためのビジネス用語講座」

...を開講しましたが
いかがでしたでしょうか?

まだまだご紹介できる
用語はたくさんあるのですが…

またの機会に
改めてご紹介してゆきたいと思います。

PS

エンジニアになるためのスクールならこちら

Linuxコマンドを習得しよう2

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

以前のブログで
Linuxコマンドの基礎的なものを
いくつかご紹介しました。

今回も引き続き
Linuxコマンドをご紹介してゆきます。

前回のおさらい

前回のおさらいです。

pwd

現在のフォルダを表示する。

cd [フォルダ名]

指定したフォルダに移動する。

ls [オプション] [フォルダ名]

(指定した)フォルダの
ファイルやフォルダ一覧を表示する。

...ですね。

とりあえずこれで、
コンソールを使って
フォルダ移動できるようになったはずです。

今回は
ファイルやフォルダ操作の
コマンドをご紹介しましょう。

ファイル操作系のコマンド

それでは始めましょう。

mkdir

フォルダを作成するコマンドです。

今回のご紹介のために
ひとつフォルダを作ってみましょう。

mkdir [フォルダ名]

...と入力して、
フォルダ名を指定して作成します。

現在のフォルダは

/usr/etc

...です。

lsコマンドで確認すると
ひとつもファイルやフォルダがありません。

mkdir linuxac

と入力して...

「linuxac」

...というフォルダを作成しました。

lsコマンドで確認すると
ちゃんとフォルダができていますね。

step1

touch

新しいファイルを
作成するコマンドです。

本来はファイルやフォルダの
タイムスタンプを
設定するコマンドですが、

新規ファイル作成に
使われますので覚えておきましょう。

touch [ファイル名]

...でファイルを作成します。

step2

cdコマンドで
先ほど作成したフォルダに移動し、

「linuxcmd.ini」

...というフォルダを作成します。

touch linuxcmd.ini

...と入力して、
lsコマンドで確認すると
ちゃんと作成されているのが確認できました。

cp

ファイルやフォルダを
コピーするコマンドです。

cp [オプション] [コピー元] [コピー先]

...と入力して
ファイルやフォルダをコピーします。

cp ./linuxcmd.ini ./linuxcmd2.ini

...と入力して
先ほど作ったファイルを

「linuxcmd2.ini」

という名前でコピーしましょう。

step3

コマンド実行後、
lsコマンドで確認すると
コピーされたことが確認できます。

もう一度コピーしようとすると
既にファイルがあるので
確認メッセージが表示されましたね。

確認メッセージを出さずに
強制的に上書きしようとするには

オプションに

「-f」

を指定するのですが、
CentOSの場合は初期設定で...

必ず上書き確認する

「-i」

オプションを指定した状態で
cpコマンドが実行されます。

もちろん初期設定を
解除することもできますが、
今回はそこまではしないでおきます。

CentOSの特徴として
覚えておいてください。

mv

ファイルやフォルダを
移動するコマンドです。

mv [移動元] [移動先]

...と入力して
ファイルやフォルダをコピーします。

step4

ひとつ上のフォルダに
先ほどコピーしたファイルを
移動してみましょう。

mv ./linuxcmd2.ini ../

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

lsコマンドで
現在のフォルダを見てみると
ファイルが移動されていますね。

lsコマンドで
ひとつ上のフォルダを見てみると
先ほど移動したファイルが表示されました。

rm

ファイルやフォルダを
削除するコマンドです。

rm [オプション] [ファイルやフォルダ名]

...と入力して
ファイルやフォルダを削除します。

フォルダを削除する時には
オプションに

「-rf」

...を指定します。

それでは実行してみましょう。

step5

まずは
ひとつ上のフォルダに移動してから

rm ../linuxcmd2.ini

...と入力して
先ほど移動したファイルを削除します。

lsコマドで
削除されていることがわかりますね。

つづいて...

rm -rf linuxac

...と入力して
今回作成したフォルダを削除しましょう。

lsコマンドで
削除されたことがわかりますね。

ちなみに、
フォルダを削除する場合...

「-r」

オプションでも削除はできますが...

フォルダや
そのフォルダに含まれるファイルの、

ひとつひとつに対して
削除確認メッセージが出てしまいます。

結構手間がかかるので

「-rf」

...オプションを指定しましょう。

操作しながら覚えましょう

Linuxコマンドは
実際に操作しながら覚えるのが
習得効率が高いです。

このブログの過去ログにも
CentOS環境の作り方を紹介していますので

実際に環境を準備して
操作しながら学んで行きましょう。

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

PS

Linuxの講座はこちら

Linuxコマンドを習得しよう その1

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

今回は
Linuxコマンドの使い方を
実例をつけて紹介しましょう。

基礎の基礎なので、
知っている人は他のページへどうぞ。

CUI

今でこそLinuxは
画面を見ながらマウスで
簡単に操作できますが...

基本的には
コマンドを入力して
システムの操作を行います。

CUI(command line interface)と
呼ばれます。

Linuxをいじるのは、
基本的にこちらです。

コマンドで命令を
実行した方が早いですしね。

ファイル管理系のコマンド

それでは
Linuxのコマンドを
いくつかご紹介してゆきましょう。

コマンドの数は
非常に多くありますので、
よく使うものに絞って

何回かに分けて
紹介してゆきますね。

pwd

現在のフォルダを知るコマンドです。

コンソールで
いろいろと操作していると

自分が今どこにいるのか
わからなくなる時がありますが...

pwd

step1

…と入力すれば
自分がいるフォルダを知ることができます。

この例では

/usr/bin

にいることが分かりますね。

これはよく使いますので
覚えておいてください。

cd

フォルダ移動のコマンドです。

マウス操作だと
フォルダを開くだけで
場所を移動できますが...

コマンドでは
どのフォルダに移動するかを
指定しなければいけません。

cd [フォルダ名]

...で
指定したフォルダに移動します。

例を見てみましょう。

cd etc

…と入力して、

/usr/etc

に移動することができます。

cd ..

...で、
ひとつ上の
フォルダに移動します。

etcのひとつ上にある

/usr

フォルダに移動しました。

cd

...のように
何も指定せずに実行すると

ユーザーの
ルートフォルダに移動します。

今回はrootでログインしているので

/root

に移動しましたね。

ls

ファイルやフォルダの
情報を表示するコマンドです。

マウス操作の場合は
フォルダを開くだけで

ファイルやフォルダの
一覧が表示されますが...

コンソール操作の場合は
このコマンドで情報を表示します。

現在いるフォルダは

/usr/eclipse

...ですね。

ここでコマンドを実行します。

ls [オプション] [フォルダ]

...と入力すると
ファイルとフォルダ一覧が
表示されます。

ls

とだけ入力すると
横並びに一覧表示されます。

ls -l

...と、
「-l」オプションを指定すると

今度は縦に並んで
詳細な情報が表示されます。

ls -a

...と
「-a」オプションを指定すると

隠しファイルを含めた
全てのファイルが表示されます。

隠しファイルとは...

「.」(ドット)

で始まるファイルのことです。

また、
フォルダ名を指定することで
別フォルダの一覧を表示できます。

この例だと

ls ../

...というように、
ひとつ上のフォルダの情報を
表示しています。

基礎の基礎なので、何度も叩いて記憶を!

今回ご紹介できるのは
少ないですが...

今後もいくつかよく使うコマンドを
ご紹介してゆきます。

マウス操作に
慣れた方にとって、

コマンド入力は
馴染みにくいかも知れませんが...

慣れてしまえば
コマンドの方が使いやすい

...というエンジニアも
たくさんいらっしゃいます。

Linux環境のある方は
ぜひコマンドを叩いてみてください。

環境のない方は...

以前のブログで
CentOSのインストール方法を
ご紹介していますので、

この機会に
ぜひ作ってやってみてください。

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

PS

Linuxのスクールはこちらから

IoTの普及でLinuxのシェアが急成長

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

以前ブログでも紹介した

「IoT」(Internet of Things)

...について覚えているでしょうか。

「モノのインターネット」

と呼ばれ、
近年特に注目されている技術ですが...

IoTの普及には
Linuxが大きく影響しているのです。

急成長する組み込みLinuxのシェア

Linux.comによると、
アメリカの調査会社である
VDC Research Groupの調査結果から、

IoTの普及にともなって
オープンソースLinuxのシェアが
成長していると報じられています。

出典:Linux.com

linux_com

組み込み機器には
Linux系OSが広く採用されていましたが、

それでも
Linux以外のOSやリアルタイムOSは
まだまだ使用されていました。

ところが、
IoTが普及してゆくにつれて

2012年では
56.2%の組み込み機器に
採用されていたオープンソースLinuxは

2017年には
64.7%にまで広がるだろうと
予想されています。

年平均の成長率は
およそ16.7%にまでのぼり
普及は加速度を増しているのです。

なぜLinuxの普及が広がるのか

オープンソースならではの
開発のしやすさが挙げられます。

商用OSなどでは
利用するにあたり
決して少なくない開発費用がかかりますが、
オープンソースでは費用がかかりません。

また、
それぞれの
オープンソースコミュニティに
支援されているプラットフォームですので、

「試作品の制作と開発の助けになる」

...という開発者の声が挙げられています。

そして、
Raspberry Pi(ラズベリーパイ)

BeagleBone(ビーグルボーン)
など、

オープンソースLinuxに対応した
小型のシングルボードコンピュータは

IoT対応製品の一部として開発されるケースも多く
Linuxの採用を広めているのです。

また、
Linuxは複数のOSを組み合わせた
ハイブリッドなIoTでも採用されています。

たとえば、
グラフィック関連の処理と
通信機能をLinuxで処理し...

それ以外の部分を
リアルタイムOSで処理するなど、

目的に応じて使われるケースも
増えてきているのです。

そして新しいIoTにも

Linuxは
新しいIoTの通信技術の開発にも
採用されています。

出典:Linux Light Bulbs: Enabling Internet Protocol Connectivity for Light Bulb Networks

vlc

Disneyの研究者が開発している

「Linux電球」
(Linux Light Bulb)

というプロトコルは
光の点滅によって通信できるプロトコルです。

これは...

「可視光通信」
(Visible Light Communication)

と呼ばれている方式で
Wi-Fiなどの通信設備がない場所でも

LEDライトさえあれば
通信することができるという技術で、

さまざまな家電製品、
ウェアラブル端末からおもちゃまで

それぞれの機器が
光で通信することができるのです。

可視光通信を
制御するドライバには
Linuxデストリビューションが採用されています。

このような
今までの通信の概念を変える

全く新しい技術にも
Linuxが使われているのです。

時代の流れ

これから
エンジニアを目指す方にとって
IoTの普及は大きなチャンスだと言えます。

これほどITが社会に普及しても
Linuxエンジニアは常に不足しています。

エンジニアになりたい方は、
インフラエンジニアの選択もあることを、
知っておくと良いのではないでしょうか?

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

PS

Linuxを学ぶリスキルテクノロジーはこちら

エンジニアのためのビジネス用語講座2

From: リスキルテクノロジー 木村

以前のブログで
エンジニアがビジネスシーンで使う、

カタカナ語のビジネス用語について
お話ししましたが...

まだまだありますので
もう少しご紹介してゆきます。

使いすぎる方はたくさんいます

カタカナ語の
ビジネス用語を使う方は

結構たくさん
いらっしゃるようです。

企業の朝礼でのスピーチや
社長の訓示などが...

「カタカナ語だらけで理解できない…」

といった話も
耳にすることがあります。

使いすぎると
意味が通じなくなりますからね(笑)

使いすぎないまでも
言いたいことが理解できるように、

今回もいくつか
エンジニアが使うビジネス用語を
ご紹介しましょう。

エンジニアのためのビジネス用語集2

今回も用語の使用例をつけて
ご紹介してゆきます。

1:アジェンダ(agenda)

・使用例
「アジェンダを明確にして進行してください」

・意味
「議題」「議事日程」

会議や打ち合わせなどで
検討する課題や議題のことを言います。

国際会議の場などでも使われますが、
IT系企業でも使われていますね。

2:カットオーバー(cutover)

・使用例
「システムのカットオーバーはいつですか?」

・意味
「利用開始」「稼働開始」

システム開発において
全ての開発工程を終了し、
実際に運用が始まることを言います。

「リリース」

「サービスイン」

と言われることもあります。

3:サーベイ(survey)

・使用例
「十分なサーベイを行っております」

・意味
「調査」「測量」

主に建築業界で使われますが、
IT企業などを含め

ビジネス用語として
広がりつつある用語です。

資料などを調査することで、
調査対象を把握することを意味します。

4:シナジー(synergy)

・使用例
「チーム内のシナジー効果を高めよう」

・意味
「相乗効果」「共同効果」

単体ではなく
複数が集まることで
効果や機能を高めるという意味です。

人に対して
使われることもありますが、

企業同士の協業など
組織に対しても使われます。

ちなみに反対の用語は...

「アナジー(anergy)」

と言います。

5:バッファ(buffer)

・使用例
「スケジュールにバッファは含まれていますか」

・意味
「領域」「余裕」

もともとは
システムで使用するデータを
保存しておく記憶領域のことですが、

容量や期間などの
余裕という意味でも使われています。

開発期間が短いと
トラブルが発生した場合に
遅れが発生しますが...

あらかじめ、
数日の余裕(バッファ)を設定しておくと
対応が可能になります。

6:フィックス(fix)

・使用例
「このバグはフィックス済ですか」

・意味
「修正」「調整」

問題が発生した場合、
問題を解決することを意味します。

プログラムで不具合が発生し、
修正することを...

「バグフィックス」

と言います。

プログラムだけでなく
取引先との調整に対しても
使われることがあります。

7:リテラシー(literacy)

・使用例
「社員のITリテラシーを高める」

・意味
「理解」「解釈」

対象に対する
適切な認識と理解を深めることを
意味しますが...

理解を深めた上で
応用力を身に付けるという意味でも
使われています。

「情報リテラシー」
「ITリテラシー」
「医療リテラシー」

...など、
この言葉は何にでも使われています。

8:ワンストップ(onestop)

・使用例
「ワンストップのサービスを提供します」

・意味
「1つの手続きで作業が完了すること」

こちらも数年前から
よく耳にする言葉ですね。

役所などを想像すると
理解しやすいのですが、

複数の部署を
行ったり来たりして
手続きが必要となることを

1回の手続きで
処理が完了することを意味します。

何となく使うのはやめましょう

ビジネス用語以外にも
カタカナ語は多くあふれており、

国立国語研究所では
このような外来語に対して
言い換えの提案を行っています。

たとえば
ワンストップの場合は...

「窓口一元化」

...などですね。

ですが、
日本語で言いかえるよりも

カタカナ語で言う方が
知的な感じを持つ方が多いことと、

言いかえるにしても
明確な言い換えができないなど

いろんな事情で
カタカナ語がつかわれています。

このような用語を使う場合は
用語の説明ができるようになってから
使うようにしましょう。

「それってどういう意味ですか?」

と聞かれて
答えられないと気まずいですものね。

PS

プログラミング研修の資料請求はこちらから

エンジニアのためのビジネス用語講座

From: リスキルテクノロジー 木村

日常生活には
さまざまな横文字が
あふれていますが...

ビジネスの世界にも
多くの横文字があふれています。

今回は
エンジニアが
ビジネスシーンで使う、

使い過ぎ注意の
ビジネス用語についてお話します。

何を言っているかわからない

毎年毎年
新しい言葉が生まれていますが、

ビジネスの世界も同じく
新しい言葉が次々と生まれています。

そのほとんどは
外国語をベースにした
カタカナ英語なのですが、

最新の
ビジネス書や技術書には
カタカナ英語が多く使われますので、

読んでいる方も
ついつい使いたくなる方もおられます。

しかし、
あまり多用すると
何を言っているのか分かりません。

たとえば...

開発スキームにおいては
明確なマイルストーンを設け、
ユーザにコミットする必要がある

...と言われても
普通の人は意味分からないですよね。

それらの中から
エンジニアがビジネスシーンでよく使う用語を
解説付きでご紹介しましょう。

エンジニアのためのビジネス用語集

それでは
用語の使用例をつけてご紹介します。

1:アラート(alert)

・使用例
「遅れそうなら早めにアラートあげてください」

・意味
「警戒」「注意」

作業に問題が発生しそうな時に
周囲の人に通知する時に使われます。

さまざまなシステムで
警告メッセージを出す時に
アラートを出すと言われますが...

それがそのまま
日常業務でも使われています。

2:エビデンス(evidence)

・使用例
「どうしてエビデンスを残さないの?」

・意味
「証拠」「根拠」

医療用語でよく使われますが
IT業界では主にテスト結果に対する
裏付けとなる資料を指すことが多いですね。

テスト工程で単純に...

「テストOK」

...とドキュメントに残すより、

画面キャプチャなどを残して
テストOKとなる根拠を残します。

3:オーソライズ(authorize)

・使用例
「その件は先方にオーソライズされているの?」

・意味
「(正当と)認める」「公認」

セキュリティにおける
「認証」と言う意味でも使われますが、

決定権のある立場の人や機関から
正式に認められている状態で使われます。

4:コミット(commit)

・使用例
「コミットできるよう頑張りましょう」

・意味
「関わる」「完遂する」

最近はCMでも有名な単語ですね。

システム開発では
データベースを更新する際に
使われている用語ですが、

ビジネスにおいても
目標に対して結果を出すという意味で
使われています。

5:スキーム(scheme)

・使用例
「アプリの課金スキームを提示します」

・意味
「計画」「体系」

システム開発では
データベース構造のことを意味しますが、

ビジネス用語としては
スケジュールと似た意味で
計画のことを意味します。

ちなみにこの言葉は
イギリス英語では「計画」の意味ですが

アメリカ英語では...

「たくらみ」「陰謀」

...と取られてしまうケースもあります。

注意しておきましょう。

6:マイルストーン(milestone)

・使用例
「その件は次のマイルストーンまでに対応します」

・意味
「標識」「里程標」

システム開発は
長期間にわたることが多いですが、

設計完了や製造完了など、
各工程の節目のことを呼びます。

マイルストーンの時点で
納品や出荷、品質チェックなどを
行うのが一般的ですね。

7:マター(matter)

・使用例
「何マターで発生した不具合ですか?」

・意味
「問題」「要素」

トラブルなどが発生した際、
何が原因なのかを表す時に使われます。

「○○マター」

という使われ方が多く、
○○には人名、企業名などが入ります。

8:ユーザ、サーバ

・使用例
「ユーザID」「サーバ構築」

これは他の言葉とちょっと違っていて
書き方の問題です。

エンジニアは...

ユーザーのことを「ユーザ」
サーバーのことを「サーバ」

...と書く方が多いですね。

間違ってはいないのですが、
日本工業規格 JIS(JIS Z 8301)によると...

「言葉が2音以下の場合には、語尾に長音符号をつける」

という指針がありますので、
どちらかと言えば...

「ユーザー」
「サーバー」

...と書くのが正しいようです。

「ユーザ」

とマニュアルに書いていたのを
ユーザーに指摘されて

「ユーザー」

...に訂正したという例もありますので、
気をつけるようにしましょう。

(私も「サーバ」「ユーザ」の方が好きなので、
 こちらで言いますが)

意味はおさえておきましょう

カタカナ語だけでなく
専門用語もそうですが...

使いすぎると
相手に正しく意味が伝わりません。

確実に相手に何かを伝えたい場合は、
できるだけわかりやすい表現で伝えましょう。

ですが、
いざ言葉が出た時のために
意味はおさえておきましょうね。

この他にも
エンジニアがビジネスで使うカタカナ語は
たくさんあります。

機会があれば
また次回以降にご紹介します。

PS

エンジニアになるためのIT研修

開発効率を高めるIDEとは?

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

プログラミングするために
必要なツールは何でしょうか。

OS標準の
テキストエディタがあれば
書けないこともないですが...

それだとかなり不便ですね。

今日は
プログラミングを
効率よくするためのツール...

「IDE」

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

IDEとは?

IDEとは

Integrated Development Environment

...の略で、

「統合開発環境」

...という意味です。

簡単に言えば、
システム開発に必要な機能を

1つに盛り込んで
効率的な開発を提供するツールです。

システム開発には
数多くのプログラムソースが必要で、

それら1つ1つを
何もない状態から作るのは
非常に手間と時間がかかりますし、

テキストエディタで作る場合は
プログラムの記述ミスなどが頻発しますが...

IDEを使って
プログラミングすることにより、

開発者の負担を
出来る限り減らすことができるのです。

実際の
システム開発の現場では

まず間違いなく
何らかのIDEを使って
プログラミングが行われています。

IDEの主な機能

効率的な
プログラミングするための

一般的なIDEが
持っている機能をご紹介しましょう。

1:プログラムの管理

1つのシステムは
数多くのプログラムソースで構成されています。

これを人の手で
管理することは至難の業です。

多くのIDEでは
システムで必要なプログラムソースを

「プロジェクト」
「ソリューション」

としてグループ化して
管理しており、

システムを実行するために
必要なプログラムをまとめています。

他にも、
システムの実行に必要な
外部ファイルなども管理することができます。

2:GUIの提供

GUIとは...

Graphical User Interface
(グラフィカルユーザインターフェース)

...の略語で、

開発者が視覚的に
画面のデザインを設定できる機能です。

たとえば、
ある画面にボタンを付けるとしましょう。

GUIの機能がなければ、
ボタンの大きさや色・配置場所など

ひとつひとつ
ソースで記述しなければなりませんが、

GUI機能があれば、
絵を描くようにボタンを配置できて、

自動的に
ソースを作ってくれるのです。

3:コード補完

プログラムを書いていて

「あの命令文は何だったっけ?」

と思うことはたびたびありますが、

コード補完機能があれば、
命令文の候補を自動で表示してくれます。

Web検索しているとき、
検索ワードを入力すれば、

次に入力する内容を
自動的に表示してくれますよね。

あの機能とよく似ていますね。

4:コンパイル機能

作ったソースをまとめて
1つのプログラムとして実行するためには

「コンパイル」

という処理を実行し、
1つのシステムとしてまとめる必要があります。

プログラムソースが
多数ある場合は、

それぞれの
プログラムファイルを指定して
コンパイルしなければいけませんが、

IDEを使うことで、
ボタン1つで複数ファイルを
コンパイルすることができます。

5:デバッグ機能

プログラミングで
必ず発生するのは...

「デバッグ」

という作業です。

デバッグとは
プログラムのバグ修正のことで、

IDEを使うことにより、
プログラムがどの行の処理をしていて、

どの命令文に問題があるのかを
明確に知らせてくれます。

代表的なIDE

では、
代表的なIDEをご紹介しましょう。

Javaによる開発で
主に使われているIDEをピックアップしました。

Eclipse

IDEの中でも
多くの開発者に愛用されている
オープンソースのIDEです。

「プラグイン」

と呼ばれる
拡張機能を追加することで

さまざまな要件の
システム開発をすることができます。

Javaだけでなく
PHPなど他の言語の開発でも使われます。

NetBeans

Eclipseと同様
オープンソースのIDEで、
こちらも多くの開発者に使われています。

プラグインによる
機能拡張はもちろんのこと、

Eclipseと比べて
使うための設定などが少なく、
初心者にもオススメのIDEだと言えます。

IntelliJ IDEA

IDEとしての歴史は古く
Eclipseと同じ時期に開発されたIDEです。

有償版であることから
Eclipseの影に隠れてしまい、

日本での知名度は
あまり高いとは言えませんでしたが、

無償版もリリースされて
徐々にユーザーが増えてきています。

私の周りでも使っている人間は
多いですね。

まずはEclipseから

IDEはこれ以外にも
さまざまな種類がありますが、

どのIDEが一番良いの?

...というと、
結局はプログラマー次第ですね。

しかし、
これからプログラマーを目指すのなら...

まずは
Eclipseの基本操作を
知っておいた方がいいでしょう。

Eclipseは
多くの企業の
開発現場で使われているIDEです。

初心者には
すこし使いにくいかも知れませんが、

知っておくに
越したことはありません。

ひととおり
プログラマーとして
活躍できるようになったら、

あるいは、
ノマドやフリーランスなど、

自分の好きな
開発環境を選べるようになったら

あなたに最適な
IDEを使うのが良いでしょう。

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

PS

実践的なJava開発手法を習得するならこちらから

営業になったエンジニア

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

エンジニアと言うと...

「PCに向かって開発業務をする」

というイメージが強いですが、
必ずしもそうであるとは限りません。

とある中小企業の
システム部に所属するエンジニアの話です。

いきなり営業になったエンジニア

彼は、
ある時上司に呼び出され、

「営業に行ってほしい」

...と突然言われました。

関連会社があるパッケージソフトを開発。

彼の企業はそのソフトの代理店となりました。

そのため、システムに詳しいエンジニアも
営業にまわすことになったとのことでした。

もちろん、
そのエンジニアには
営業経験なんてありません。

戸惑いながらも
営業活動をすることになったのですが、

もちろん
いきなりソフトが売れるはずもありません。

営業だけでなく
通常の社内システムの
開発業務も兼務していたため、

残業時間は膨れ上がり、
ほとんど寝る時間がなかったそうです。

開発ばかりしているとは限らない

エンジニアの仕事と言えば...

ハードウェアや
ソフトウェアの設計をしたり

プログラムを組んだり
するイメージが強いですが、

このエンジニアのように
別の業務と掛け持ちしつつ
システム開発を行うケースもあります。

人数も多く、
部署が明確に分かれている企業だと
あまりこのような例は見られませんが...

人数の少ない
中小企業の場合は
こういったケースはよくあります。

中小企業は
どうしても人数が少ないので

少ない人材で
売上に繋がる活動をする必要があります。

このエンジニアのように
営業を兼務するだけではなく、

会社の事務をしながら
システム開発を行うエンジニアもいます。

もちろん、
所属する企業の方針や体制にもよりますが...

エンジニアと言っても
いつも開発だけをしているとは限らないのです。

冒頭で紹介した
営業兼務となったエンジニアの方は、

社交的な性格ではなかったので、
見知らぬ人と接するのが苦痛だったそうです。

開発は好きだけど
営業が辛いという思いが強まり、

一時は退職も考えたそうですが、
続けているうちに考えが変わったようです。

電話営業や
飛び込み営業、
セミナーや展示会の開催に参加して

「ものを売る」

という行為に接するうちに...

自分はものを売ることについて
何も知らずにものづくりをしていた

...という事を
思い知ったと気づいたと話していました。

ものづくりには
必ずものを売るという行為が発生します。

今までは
ものを作ることに専念してきたが、

これからは
ものを売るということも知る必要があると
営業活動にも積極的に取り組み...

「総合的なものづくり」

...を習得しようとしているそうです。

ビジネスパーソンとして成長するために

エンジニア一筋で
仕事をしてきた方の中には、

このような
仕事内容の変化に
ついていけずに退職する方もいます。

しかし、
これまでやったことのない
活動を行うということは...

「新しい視野を広める」

...ということに繋がります。

もちろん、
専門分野に特化することも
エンジニアとして大切なことです。

ですが、
新しい業務に携わることは、
新しい視野を得られるチャンスでもあります。

まずは何でも
あなたがやれることを
やってみるようにしましょう。

そうすることによって
必ず何かを得ることができます。

その経験は、
エンジニアとしてだけではなく、

1人のビジネスパーソンとして、
あなたを大きくしてくれることでしょう。

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

PS

ビジネスで通用するエンジニアになるにはこちらから

万一の時にも安心のUPSとは?

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

ハードウェアを稼働させるのに
根本的に必要なものがあります。

おわかりですね、それは...

「電気」

...です。

今回はハードウェアに
電気の安定供給を行う装置である

「UPS」

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

突然のデータ消失に備えるために

スマホでメールを書いていて
もう少しで完成という時に

バッテリーが切れて
システムダウンしてしまった...

なんてことありませんか?

せっかく書いた
力作メールも消えてしまい
最初から書き直さなければいけませんよね。

私たちが普段使っている
パソコンも同じです。

ノートパソコンの場合は
バッテリー切れもありますが、

デスクトップパソコンだと
電源コードを足でひっかけてしまい

プラグが外れて
システムがダウンするなんてこともあります。

何時間もかけて作った
設計書やプログラムが消えてしまうと

明日も頑張って生きて行こうという
気力さえ萎えてしまうことにもなりかねません。

ええ、実際に私も経験あります(笑)。

そんな時、
あって助かる装置が...

UPS (Uninterruptible Power Supply)

...です。

万一の時にも電源を供給

UPSは日本語で

「無停電電源装置」

と言い、
突然の電源切断や停電時にも
安定して電力を供給する装置です。

パソコンなどの
ハードウェアの電源コードを
UPSと接続しておけば

万一の電源切断の時に
UPSから電力が供給される仕組みです。

電力が供給されるのは
機器にもよりますが数十分程です。

数十分もあれば
作りかけのファイルを保存して
システムを正常終了させる時間は十分ありますね。

停電なんて滅多にないから
UPSってあまり必要ないのでは?

という声もありそうですが、
停電がなくてもブレーカーが落ちるケースは
結構頻繁にあります。

小さな企業でも
パソコンを何台も使っている場合は
UPSが重宝されています。

UPSは一般企業だけでなく
データセンターなどでも使用されています。

データセンターでは
規模が大きいUPSが使用されますが、

非常時の際には
UPSだけでなく自家発電装置を使って
電療を供給しています。

実は電力は安定していません

私たちが
普段使っている電力ですが、

安定して供給されているようで
実際には少し不安定なのです。

どこが不安定かと言うと
供給される電圧が低下する現象が時々あります。

それは...

「瞬間電圧低下」(瞬低)

...という現象です。

瞬低とは、
電力の送電ルートの切り替えなどにより
0.1秒程度電圧が低下する現象です。

日常生活ではあまり意識しませんが、
常に電源を必要とするシステムにとって、

瞬低が発生すると
ネットワーク切断などのトラブルが発生します。

停電は少なくても
瞬低は年間に約10回程度発生していますので、
瞬低対策にもUPSが必要になります。

UPSには
電圧を安定供給するために...

CVCF (Constant Voltage Constant Frequency)

という機能を持っています。

CVCFとは...

「定電圧定周波数」

...の意味で、
安定した電圧を供給する機能です。

CVCF機能があれば
瞬低による電圧低下を検知した際、

安定した電圧を
ハードウェアに供給することができるのです。

あってよかったUPS

日々作られるデータは
個人や企業の資産だと言えます。

その資産を
万一のトラブルから守るために
UPSは必要なのです。

生命保険や医療保険に
ちょっと似ているかも知れませんね。

万一の時でも
データを守れる体制を作ること。

ソフトウェアエンジニアでも
インフラエンジニアでも

そのことを忘れないようにしましょう。

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

PS

万一のトラブルにも動じないエンジニアを目指すならこちらから

実はみんなが使っているNFCとは?

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

ICカードは誕生以来、
私たちの社会にすっかり定着しています。

このICカードには

NFC

という技術が使われています。

今回はこの、
NFCについてお話ししましょう。

NFCって何ですか?

NFCとは

Near Field Communication

の略で、

近距離無線通信と言われています。

特定の周波数で
ICカードや通信機器と
無線でデータのやりとりする技術です。

2001年にICタグを使った
交通機関の乗車券が導入されはじめ、

2年後の2003年に
国際標準規格として定められました。

当初は
SuiCaやICOCAなど
交通系ICカードの利用が主流でしたが、

今ではスマホや家電など
さまざまな機器で使われている技術です。

NFCの3つのモード

NFCの特徴としては
3つのモードがあげられます。

それぞれのモードを
活用例とあわせてご紹介しましょう。

1:リーダ/ライタモード

これが一番
一般的な使われ方で、
ICカードの読み書きするモードです。

ICカードリーダーに
カードをかざすことで、
データの読み書きを行います。

SuicaやICOCAなどの
交通系IC乗車券での活用や、

企業内の入退室を管理する
社員証などにも活用されていますね。

交通系ICカードで言えば...

・どの路線のどの駅で入出場したか
・入出場した日時
・チャージしている金額

...などが記録されています。

2:エミュレーションモード

NFC機能が
搭載されている機器を

ICカードのようにして
使うことができるモードです。

一番馴染みがあるのは
おサイフケータイでしょう。

携帯やスマホが
ICカードのように振る舞って、

カードリーダー/ライターに
機器をかざして使うことができます。

おサイフケータイのように
クレジットカードとして使うだけでなく

モバイルSuicaのように
交通系ICカードとしても使われていますね。

3:P2Pモード

P2Pというのは...

ピア・ツー・ピア

という意味で、
端末間通信機能のことです。

Androidでは…

Android Beam

と呼ばれている技術ですね。

この機能を使って、
他の端末にデータ送信します。

スマホ同士を近づけて
メールアドレス交換できるのも
この機能を使っています。

NFCはひとつだけではありません

NFCは
国際標準規格ではありますが、

実際には
さまざまな規格に分かれています。

どういうことかと言うと...

・SuiCaやICOCA、Edyなど
・taspo(成人識別カード)
・IC運転免許証や住人基本台帳カード

これらは全て
NFCという事ができますが、
細かく言えば別の規格なのです。

SuiCaやEdyなどのICカードは

NFC-F

という規格で、
SONY社が開発したFeliCaカードにあたります。

taspoには

NFC-A

という規格で、
NXP社が開発したMIFAREカードにあたります。

IC運転免許証などは

NFC-B

という規格で、
モトローラ社が開発したカードの規格です。

このように
それぞれ規格が分かれているので、

カードリーダーが
あるからと言って、

全てのカードの
読み書きができる訳ではないのです。

使う方にとっては
非常にややこしい話ですよね。

最近では別々の規格でも
読み書きできる機器が増えてきましたので、
もし必要ならそういった機器を選ぶようにしましょう。

技術を活かすための視野の広さ

NFCの技術は
公共交通機関や
クレジットなどの利用が主流でしたが、

最近では
ショッピングモールの
スタンプラリーやクーポン券、

博物館での展示品紹介など、
さまざまなシーンで活用されています。

広く社会に
浸透しているものだからこそ、

その技術を使用した
アプリケーションの開発案件も増えています。

ひとつの技術から
さまざまな活用シーンを提案する...

このような視野の広さも
これからのエンジニアにとって必要なのでしょう。

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

PS

ネットワークの講座ならこちら

Apache Webサーバーを作ってみよう!

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

インターネットを
楽しむために必要なサーバーは

Webサーバー

...です。

そもそも、
このWebサーバーがないと

ホームページを
見ることができません。

このWebサーバーを
今ここで作ってみましょう。

Apacheを使ってやりますが、
立てるだけであればすぐにできます。

Webサーバーの役割って?

ニュースサイトや
ショッピングサイト、

そして
今あなたが見ているこのブログも

Webサーバーに
よって見ることができます。

Webサーバーとは
あなたのPCで動いている

Webブラウザから
送られるリクエストを処理して

要求されたページを
Webブラウザに送っています。

たとえば、
Webブラウザで...

http://www.linuxacademy.ne.jp/

...とURLを入力すると、

そのURLのファイルを表示してほしい!

...というリクエストが送信されます。

Webサーバーは
目的のファイルを探しだして、

Webブラウザに
要求されたWebページを表示するのです。

多くのWebページは
HTML言語で書かれています。

HTMLとは...

Hyper Text Markup Language

...の略称で、
Webブラウザで
ページを表示するために開発された言語です。

定められたルールで
HTMLを書くことによって、

ページの構成や
画像の位置などが決められます。

もっとも今では...

CSS(Cascading Style Sheets)

...と言う
ページのデザインを設定する言語で
レイアウトなどがデザインされることが多いですね。

それ以外にもWebサーバーでは、
動的なWebページを実現するための

CGI(Common Gateway Interface)

...などの言語をWebサーバーで処理しています。

Webサーバーの役割を
簡単にまとめると...

  • リクエストを処理して結果をWebブラウザに表示する
  • Webページの表示や動作に関する全般的なサービスを提供する

...ということが言えます。

Apacheをインストールしてみよう!

Webサーバーを作るのに
必要なアプリケーションはさまざまですが、

Linuxでは...

Apache(アパッチ)

というアプリケーションが主に使われます。

出典:Apache 

apache

アメリカの政府機関である

NCSA(米国立スーパーコンピュータ応用研究所)

で開発された
Webサーバーをベースとして開発され、

今では
世界中のWebサーバーで使用されています。

このApacheを
CentOS7にインストールして
Webサーバーを構築する手順をご紹介します。

まずは
CentOSのデスクトップ左上にある…

「アプリケーション」

から…

「端末」

を選んでコンソールを表示します。

rootでログインしていない場合は…

…と、
管理者に切り替えるコマンドを入力し、
続けてパスワードも入力して管理者に変更します。

Apacheをインストールするには
次のようにyumコマンドを使用します。

step1

「httpd」
とはWebサービスのことで
LinuxではApacheにあたります。

step2

コマンドを実行すると
インストールが開始され...

「完了しました!」

と表示されたらインストールは終了です。

  • いよいよApache Webサーバーを起動!

それでは、
Webサーバーを起動してみましょう。

起動するには
systemctlコマンドを実行します。

systemctlコマンドは
CentOS7から使われているコマンドです。

それ以前のバージョンでは
コマンドが異なりますので注意してください。

と入力して実行すると
Webサービスが起動します。

では、
本当に起動したかを見てみましょう。

psコマンドという
実行中のアプリケーションを確認する
コマンドを実行します。

step3

Apacheが起動しているのが確認できました。

それでは、
Webブラウザで表示させる
HTMLファイルを作りましょう。

コンソールに...

と入力して
geditというエディタを起動します。

step4

簡単ですが、

LinuxAcademy

とだけ書いたファイルを作ります。

step5

このファイルを

/var/www/html/

の場所に

test.html

という名前で保存します。

次に、
CentOSのIPアドレスを調べます。

step6

というコマンドを実行すると
CentOSのIPアドレスがわかります。

inetと書かれている欄ですね。

この例だと
「10.0.2.15」がIPアドレスです。

IPアドレスは
環境によって変わるので
使っている環境のIPアドレスを調べましょう。

最後に
左上のアプリケーションから
Firefoxウェブ・ブラウザを起動し、

URL欄に...

http://10.0.2.15/text.html

と入力すると、
先ほど作ったファイルが表示されます。

step7

Webブラウザから
Webサーバーにリクエストが送られ、

Webサーバーから
test.htmlが送られてきたのです。

Webサーバーができました!

実際には、

今回は
簡単な構築法でしたが、

実際には
CGIやPHPなど
Web系言語が動作する設定や

Apacheの設定ファイルを変更して
より詳細に構築する必要があります。

実践的な構築法については
今後しっかりと覚えてゆけばいいでしょう。

まずは...

一度構築してみてください。

そうすれば、チューニングなどは、
自然と頭に入って聞きます。

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

PS

サーバーが構築できるようになる講座

便利なシングルサインオンとは?

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

システムの
セキュリティ性を高めるうえで

最低限必要なのは
IDやパスワードです。

しかし
利用するシステムが増えるにつれて

IDやパスワードの管理が
大変になってしまいます。

今日はそのような問題を解決する

「シングルサインオン」

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

あれ?ここのログインIDは何だっけ?

手元にキーホルダーがあれば
少し手に取ってみてください。

自宅の鍵や
車やバイクの鍵など、

普段使用する
数本の鍵が掛かっていると思います。

では、
手元のキーホルダーに

今付いている鍵の
10倍の鍵がかかっているとしましょう。

自宅に帰って
鍵を取り出そうとしても

鍵が多すぎて
どの鍵が自宅の鍵か
わかりにくくなってしまいますよね。

これはシステムでも同じことです。

世の中には
ビジネスであれホビーであれ

さまざまなシステムが
あふれています。

セキュリティ性を高めるために
システムごとに
ユーザーIDやパスワードを設定しますが、

使うシステムが
増えれば増えるほど...

「あれ?IDは何だっけ?」
「パスワードってこれじゃないの?」

...という事態になりやすいです。

さまざまなパスワードを設けると
確かにセキュリティは高くなりますが...

使うシステムが増えると
混乱してしまうこともありますし、

何度も何度も
IDとパスワードを入力することになります。

このような
問題を解決する1つの方法として...

シングルサインオン(Single Sign-On)

...があるのです。

シングルサインオンとは?

シングルサインオン(SSO)とは
複数のIDやパスワードをひとつにまとめ

1回のログインだけで
複数のシステムを利用することができる仕組みです。

企業などでは
多くのシステムを使用するため、

何度もIDやパスワードを
入力しなければなりませんでしたが、

SSOを導入することで
何度も入力する手間を省くことができ、

システムを利用する際の
利便性を向上させることができます。

また、
SSOを導入していない場合、
システムへのアクセス記録は
それぞれのシステムで記録されますが、

SSOを導入すると
SSOの認証サーバーで記録されますので、

システム管理者の
管理作業の負担も軽減することができます。

この他にも、
システムの利用者権限を変更する場合、

複数のシステム設定を変える必要がなく、
SSOの設定のみ変更することで対応できるなど、

システムの利用者だけでなく
管理者にも多くのメリットがあります。

「○○アカウントでログイン」とどう違うの?

それって、
ネットによくある...

「Facebookアカウントでログインする」

...って機能と同じじゃないの?

と、間の良い方は気付くかもしれません。

Facebookと関係のない
別のサイトを利用するにあたって

FacebookのIDとパスワードで
利用できるサイトもあります。

Google+や
Yahoo!IDとかもありますよね。

確かにとてもよく似ていますが、
両者は別のものです。

Facebookなどの
アカウントで利用できるのは...

「Open ID」

...という仕組みで、
基本的にはウェブ上での利用に
限られた使い方になります。

これに対して
SSOではウェブサイトに限定されず

サーバーへのログインや
異なるネットワークへの接続などにも
使うことができるのです。

SSOでは

「トラストサークル(信頼関係)」

...という概念があり、
あらかじめサーバー同士が

「このサーバーは接続できますよ」

...という
相互認証可能なグループが
構築されることで成り立ちます。

OpenIDは
認証サーバーへの問い合わせ
(アカウントが適切かなど)

による認証であり、
トラストサークルという概念はありませんので、

セキュリティ性の高さ言えば
SSOの方が高いと言えるでしょう。

ニーズの高いSSOを理解しておこう

SSOとOpenIDの
どちが良いかというのは

用途や使用目的が分かれますので
何とも言えませんが、

両者のような...

認証回数を減らし、
かつ、
セキュリティ性を高める!

...といったサービスに対する
ニーズが高まっているのは間違いありません。

クラウド環境に
SSOのシステムを構築することで、

利用するシステムのそばに
SSO認証サーバーを置く必要なく
SSOを実現することもできますので、

SSOの利用は
確実に今後も広がってゆきます。

インフラエンジニアだけでなく
アプリケーション開発者にとっても

今後ますます
馴染み深くなってゆきますので
基本的な仕組みを理解しておいてください。

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

PS
ネットワーク・サーバー構築の講座はこちらから

Java開発環境を作ろう-JDK切替え&プログラミング編-

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

以前の記事では
JDKをダウンロードしましたね。

ところが
最初からインストールされていた

openJDKとJDKが
共存するかたちになり...

openJDKが
アクティブな状態でした。

今回は
openJDKとJDKを切り替える方法

そして
Javaプログラムの作成と
コンパイル方法をご紹介します。

Javaの実行環境を切替えるには?

少しおさらいです。

yumコマンドで確認すると...

step1

JDKは
インストールされましたが...

javaコマンドで確認すると...

step2

アクティブJavaは
openJDKになっていますね。

では
JDKは使えないのでしょうか?

いえいえ、大丈夫です。

openJDKとJDKの
どちらをアクティブにするかは
切り替えることができます。

まあ、
openJDKでも
全然問題ないのですが...

切り替えを行うには...

alternatives

というコマンドを実行します。

これは
標準で使うコマンドを

どの環境で使用するか
設定できるコマンドです。

たとえば...

同じプログラムでも
旧バージョンと新バージョンを
インストールしている場合などは、

このコマンドを使って
新旧どちらのバージョンでも

好きなタイミングで切り替えて
使うことができるのです。

このコマンドを使うには
管理者権限が必要です。

suコマンドで
管理者に切り替えましょう。

と入力して、
パスワードを入力します。

管理者ログインできたら、
早速JDKを切り替えてみましょう

step3

javaで使用される
プログラムの一覧が表示されました。

2つのプログラム...

openJDKとJDKが
表示されています。

現在は1のopenJDKが
アクティブ(+マーク)になっています。

2を入力して
Oracle版のJDKに設定しましょう。

ここでもう一度
javaコマンドで確認します。

step4

Oracle版のJDKが
アクティブになりましたね。

openJDKに
また戻したい場合は、

alternativesコマンドで
選択しなおせば大丈夫です。

alternativesコマンドが
正しく発行できたら

普通のログインユーザーに
切り替えておきましょう。

Linuxという
ユーザーに切り替えるなら

…と入力します。

Javaプログラムを作ろう!

それでは
簡単なJavaプログラムを書いてみましょう。

プログラムを保存する
専用フォルダがあった方が便利ですので

まずは
専用フォルダを
ホームディレクトリに作成しましょう。

ホームディレクトリに

javastudy

...というフォルダが作成されました。

step5

(ログインユーザー名)の部分は
ログインしているユーザー名によって変わります。

環境に応じて設定してください。

それでは
Javaソースコードを書いてゆきましょう。

[アプリケーション]-[アクセサリ]-[gedit]

...でエディタを開きます。

step6

次に、
以下のJavaプログラムを書きます。

画面に

Hello World!!

...と表示されるものです。

これを
先ほど作ったフォルダに保存します。

ファイル名は

HelloWorld.java

…としてください。

「.java」

という拡張子が
Javaプログラムという意味になります。

そして、
プログラムのファイル名ですが、

Javaのファイル名は
プログラムのクラス名と
同じでなければいけないというルールがあります。

この場合は...

public class HelloWorld

...の部分ですね。

classに続く文字が
クラス名になります。

これで
プログラムの準備ができました。

それでは
プログラムを実行してみましょう。

Javaプログラムは
そのままでは実行できません。

コンパイルすることで
始めて実行することができます。

HelloWorld.javaを
コンパイルしてみましょう。

端末を開いて...

javac

...という
Javaコンパイル用プログラムを実行します。

上のコマンドで
先ほど作ったjavastudyフォルダに移動して、
javacコマンドを実行します。

これで
コンパイルが終了しました。

エラーがあれば
この時にエラー内容が表示されます。

javastudyフォルダを見ると...

HelloWorld.class

...というファイルが作成されていますね。

step9

これは...

クラスファイル

...といい、
Javaプログラムの
実行ファイルになります。

それでは、
クラスファイルを実行してみましょう。

プログラム通りに...

Hello World!!

という文字が表示されました。

step10

まとめ

Javaプログラムの
作成からコンパイル、
そして実行までご紹介しました。

ここでは
端末から実行していますが、

EclipseなどのIDEで
プログラミングされることが多いです。

ですが、
Javaがどういう手順で

プログラムをコンパイルして
実行しているのか?

...ということを理解するには

Javaコマンドを
ひとつずつ実行するのが良いですね。

たくさんの
プログラムを作って
Javaを習得していってください。

ここがあなたの第一歩です。

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

PS

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

エンジニアのための「意外と知らないプログラムに使う記号の読み方」

プログラムのための記号の読み方

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

OSの操作や
プログラムを組んでいると

さまざまな
記号を使うことが多いです。

今回は

さまざまな記号と
システムにおける記号の使われ方

についてご紹介しましょう。

この記号は何という名前?

プログラムを扱っていると
記号に接する機会は多くなります。

他の人に
システムの仕様を伝える時

あれ?

この記号って

何ていう名前なんだろう?

…と思ったことはないでしょうか。

例えば

「?」

このマークの
正式名称がわからないので

「はてなマーク」

という方も多いでしょうね。

「?」はまだ優しいですが

「~」

とか

「|」

とかは何と言うのでしょうか。

記号の読み方と使われ方

それでは、
記号の読み方と
システムでの使われ方について
簡単にご紹介しましょう。

1: ? マーク

「はてなマーク」ですね。

正しい読みは

「クエスチョンマーク」

...です。

この読みは
ご存知の方も多いでしょう。

システムでは
ワイルドカード(任意の文字)や
条件文で使われます。

Javaの条件文の例だと...

条件式 ? 条件式が真の時の処理 : 条件式が偽の時の処理

...のように使われます。

ただ、
多用すると読みにくくなるので
使わないほうがいいとも言われています。

私は割と使ってしまいますが。

2: ! マーク

通称「びっくりマーク」です。

正しい読みは

「エクスクラメーションマーク」

...です。

不均等記号として
多くの言語で使用されます。

値A != 値B

の例では、
値Aと値Bが一致しない
という意味になります。

3: ' マーク

こちらは

「シングルクォーテーション」

...です。

英語で使用する
アポストロフィとも似ていますが、
両者は別ものです。

'文字列'

...のように、
記号で文字括って
文字列を表すことが多いです。

4: " マーク

こちらは

「ダブルクォーテーション」

...です。

シングルクォーテーションと同じく
文字を括って
文字列を表します。

5: % マーク

「パーセント」です。

これはさすがにお分かりでしょうね。

一般的には
比率を表しますが、

javaなどでは…

乗余算(余り)

…の算出に使われます。

例えば...

値A % 値B

だと、

値A÷値Bの余りを求めます。

6: ` マーク

こちらは

「バッククウォート」

...です。

Linuxで使用される
シェルスクリプトでは

この記号で括った文字を
コマンドとして扱います。

7: * マーク

通称「コメマーク」です。

正しくは

「アスタリスク」

...と読みます。

全項目にマッチする
ワイルドカードとして使われており、

SQL文では
データを読み込む時に

テーブルに含まれる
全ての項目を表す文字として
使われています。

8: ~ マーク

通称「にょろマーク」です。

正しくは

「チルダ」

...と読みます。

Linuxでは
ホームディレクトリを意味します。

9: ^ マーク

チルダと似ていますが
こちらは...

「ハット」

...と言います。

Javaなど多くの言語の

XOR演算(排他的論理和)

...で使われています。

10: < マーク

「小なり」です。

値の比較で
使われる記号ですね。

11: > マーク

「大なり」です。

同じく値の比較で
使われる記号です。

大なりと小なり、
どっちがどっちか忘れる方も多いので
ご紹介しました。

12: / マーク

「スラッシュ」です。

WebではURLの
階層を表す記号として使われますね。

また、
多くのプログラムでも
除算(割り算)を意味する記号として
使われています。

13: \ または \ マーク

「バックスラッシュ」ですが、

環境によっては...

「円マーク」で表示されます。

Linuxなど
多くのシステム上では、
文字を明確に表すために...

「エスケープ文字記号」

として使用されます。

14: | マーク

「パイプライン」です。

Linuxでは
パイプ処理を行う時に使用します。

例えば、
フォルダ内のファイルを表示する

「lsコマンド」

と、

標準出力の内容を
ファイルに書き出すことができる

「teeコマンド」を
以下のように組み合わせます。

ls | tee list.txt

そうすると、
標準出力に表示されると同時に、
list.txtというファイルにも書き込まれます。

誰でも理解できる伝え方がポイント

実際に、他の人に
記号を説明するには

正式名称で伝えるよりも
分かりやすい言葉で伝える方がいいでしょう。

「パイプライン2つ」

と言うよりも...

「縦棒2本」

と言う方が伝わりやすいですものね。

記号も大切ですが、
大切なのは伝わりやすさです。

例えばプログラミングでは
記号を多く使うと読みにくくなりますので、

分かりやすい書き方で
誰でも理解できるということも大切ポイントです。

とはいえ、後輩に聞かれたときなど、
答えられるようにはしておきたいですね。

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

PS
本格派プログラミングの研修

ハッカソン・アイデアソンとは?

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

IT関連の
ニュースなどを見ていると...

「ハッカソン」

「アイデアソン」

という言葉を
頻繁に目にするようになりました。

特にエンジニアであれば、
週に一度はどこかで目に入ってくる
言葉ではないでしょうか?

ハッカソンとは?

ハッカソン(Hackathon)

とは...

ハック(Hack)

マラソン(Marathon)

...を組み合わせた造語です。

さまざまな
IT系の職業の方が集まり、

アイデアを出し合って
新しいシステムやアプリなどを作ります。

「ハック」

と言うと
システムに不正侵入する

「ハッカー(Hacker)」

「ハッキング(Hacking)」

...を
イメージする方も多いでしょう。

ハッカソンでは
エンジニアが集まって
何やらよからぬ計画を練っている...

などということはありません(笑)。

Hack

...という言葉は

「(物事を)切り刻む」

「うまく進める」

...といった意味もあります。

ハッカソンとは
新しい事業を創出したり、
サービス向上のための活動であったりと、

非常に前向きかつ
生産的なワーキングなのです。

ほとんどのハッカソンは
開催時にテーマが設けられます。

エンジニアたちが集まり
1日~1週間程度の短期間、
集中的に作業を行うため、

生産性と効率が良く
テーマに沿った作業を行えるのです。

アイデアソンとは?

アイデアソン(Ideathon)

とは...

アイデア(Idea)

マラソン(Marathon)

...を組み合わせた造語です。

こちらは主に
ハッカソン開催前の
事前準備として行われます。

ハッカソンに参加する
チームやメンバーが集まり、

ハッカソンで決められた
テーマに対するアイデアを出しあいます。

ハッカソンに参加するための
各メンバーのブレインストーミングや

アイデアを
ブラッシュアップしてゆき、

ハッカソンで作り上げるものの
方向性を定めてゆきます。

その他にも
メンバー間の交流を深めるという効果もあります。

ハッカソンが
1日から数日で行われるのに対し、

アイデアソンは
ハッカソンの開催前に
数時間程度で行われるケースが多いですね。

アイデアソンを行うことで
ハッカソンで良いものが生まれる可能性が高まり、

活気あふれる有意義な
ハッカソンにすることができるのです。

多くの企業や団体が注目しています

ハッカソンの有効性について、
多くの企業や団体が気付き始めています。

大企業などでは

「社内ハッカソン」

を開催して
新規アプリやサービスの
開発を行うケースも見られます。

また、
社内のエンジニアだけでなく
社外のエンジニアを招いて

自社の概念だけに
とらわれないようにして
ハッカソンを開催するケースもあります。

Facebookは
創業当初から
ハッカソンを大切にしており、

「いいね!」

「タイムライン」

といった機能は
Facebookで頻繁に行われる
ハッカソンから生まれています。

こういった事例は
新製品や新たな発想を生み出す

ハッカソンの有効性を
十分に認識していると言えるでしょう。

ぜひ参加してみてください

ハッカソンは
IT業界だけで行われるわけではありません。

近頃では
地域の町おこしのために
地方自治体が開催するハッカソンや、

起業家育成のための
ハッカソンなども行われています。

内容的にはITを活用して
新しい何かを創造するものが多いですが、

地域や団体が抱えている
課題の解決を行うためのアクションとしても
ハッカソンが活用されています。

ハッカソンというアクションは
IT業界だけにとどまらず
今後も社会に大きく広がってゆきます。

何かいいアイデアはない?

といきなり言われても
なかなかアイデアは生まれませんが、

それぞれの分野の人が集まれば
新しいアイデアも生まれやすいですし、
新しいものを作ることもできます。

ハッカソンという
新しいものづくりのアクションには
エンジニアが活躍できるフィールドが広がっています。

ハッカソンに参加できる機会があれば
ぜひ参加してみてください。

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

PS

アイデアを形にできるプログラミング研修

サーチ(探索):アルゴリズムの基本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アプリケーションを開発するプログラミングの講座

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

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

IT講師に応募する