KENスクールブログ-パソコンスクール パソコン教室 KENスクール

プログラム

HTMLを始めよう! その4

前回は、HTML5の「section要素」についてお話しました。
今回は、「article要素」についてお話しましょう。

article要素はsection要素より、さらに使い方が明確です。

article要素の使い方
サイト内で自己完結しており、それ自体で独立したコンテンツとして成り立っている必要があり、article要素の内容だけ抜き出して違和感がないもの。

まずは、見出しと段落のみで構造を記述してみましょう。

srticle1

 

続いては、HTML5のルールでより明確なマークアップをしましょう。

srticle2

見出しと段落をsection要素で囲みました。
section要素で囲むことで、見出し1に対しての段落までの内容が、文章の「節」の意味となります。

ここに「article要素」を加えます。

srticle3

見出し1と3つのセクションをarticle要素で囲むことで、1つの内容となり、独立した自己完結コンテンツと定義されます。

section要素とarticle要素の違いは難しいですが、記事が自己完結しているかどうかを判断しましょう。

次回は、article要素とarticle要素の組合せ方をご説明します。


カテゴリー: Dreamweaver Web プログラム

HTMLを始めよう! その3

前回は、HTML5の「コンテンツ・モデル」についてお話しました。
今回は、要素についてお話します。

HTML5から新しい要素が加わり、より明確なマークアップが可能となりました。
その中でも「セクショニング・コンテンツ」の使い方が難しいですね。

以前までは、<div>を使用することで、構造のアウトライン化が可能でしたが、HTML5では新しいセクショニング要素(<article>、<section>、<nav>、<aside>)が導入されることで<div>でない明確な構造化を実現します。

<section要素の使い方>

・section要素はh要素と一緒に定義
 section要素は文書のアウトラインを定義する要素なのでsection要素の直下にはh要素を使います。

sectionの使い方その1

 

・入り子として使用可能
 section要素の中にsection要素を入り子として使用可能です。

sectionの使い方その2

 

sectionを入り子で使用する時は、h要素も階層に合わせて使用することが推奨されていますので注意しましょう。

今回は、section要素についてご紹介しましたが、次回はその他の要素をご紹介します。

 

この記事に関連する講座

HTML5をしっかり理解してコーディングのスペシャリストになろう

詳しくはこちら


カテゴリー: Web スマートフォン プログラム

[Java]try-with-resources文

Java SE6まではファイル入出力やデータベースへのアクセスをするとき、そのためのリソース(プログラムでの使用が終わったら閉じられなければいけないオブジェクト)を解放するために、例外処理のfinally句などでclose処理を記述していました。ですが、アクセスがある度にclose処理を書くのが面倒、書き忘れるとメモリリークの原因になる等少々手間のかかるものでした。

そこで、Java SE7から追加されたtry-with-resources文を使うとこれらの問題が解決できるというわけで、今回はその機能紹介とサンプルコードをご紹介したいと思います。

try-with-resources文

はじめに、try-with-resources文を使用するにはjava.lang.AutoCloseableかjava.io.Closeableインターフェースを実装するクラスである必要があります。このインターフェースにはclose()メソッドのみ定義されており、ファイル入出力のjava.ioやデータベースアクセスのjava.sqlパッケージなどのリソース関連クラスは、これらのインターフェースを実装しているため、暗黙的に解放することができます。

使用方法としては、まず例外処理try(){}ブロックの()内にリソースを書き込みます。すると、この()内に書かれたリソースプログラムはコードブロックの終わりで各リソースが確実に閉じられるという仕様になっているのです。

では実際にSE6までのサンプルとSE7のサンプルを見比べてみましょう。

SE6までのサンプル
※サンプルはjava.ioパッケージを使ったファイル入出力例文

SE6以前ではfinallyブロック内にストリームのクローズ処理を書いていたが、SE7ではそれをtry-with-resources文で行う事が可能です。

SE7以降のサンプル

これでclose処理から解放されますね!是非使ってみて下さい!!

この記事に関連する講座

プログラミング言語のスタンダードを身につけよう!!

詳しくはこちら


カテゴリー: Java プログラム

[iPhoneアプリ開発] リソース(文字列)の多言語対応

swiftでの多言語対応に関する記事です。

環境(以下の環境で動作確認をしています)

  • OSX Yosemite 10.10.5
  • Xcode7.2.1

目次

  1. リソースとは
  2. 多言語対応とは
  3. 多言語設定の手順

リソースとは

リソースとは資源という意味で、アプリケーション開発においては、アプリケーションが利用するデータのことを意味し、画像ファイル、音声ファイル、文字列データなど様々な形式のデータを指します。

多言語対応とは

iOSには、異なる言語における表示をサポートするための機能が用意されており、文字列データをユーザの端末の言語情報にあわせて切りかえる事ができます。

多言語設定の手順

1. Project に Localization の設定

「Project」->「info」->「Localizations」と選択してから、「+」を押してロケール情報を追加します。日本語を登録するのであれば、Japanese(ja)を選びます。
localization1

2. Localizable.strings ファイルの作成

アプリ画面に対応するローカライズには Localizable.strings ファイルを新たに作成する必要があります。Fileメニューから新規作成を選び、「iOS」->「Resource」->「Strings File」で Localizable.strings の名前のファイルを作り、プロジェクトに追加します。
localization2

localization3

作成した Localizable.strings ファイルを選択して「file inspector」を見ると「Localization」の項目があるので、「Localize」ボタンを押し、「Japanese」を選択します。
localization4

localization5

続いて、「file inspector」で「English」と「Japanese」にチェックを入れると Localization.strings ファイルに新たに2つのファイルが自動で作成されます。
localization6

localization7

作成された Localizable.strings ファイルを開いて、それぞれに「”key名” = “値”;」の形式で key と value を設定します。

Localizable.strings(English) のファイル
“test” = “English”;

Localizable.strings(Japanese) のファイル
“test” = “日本語”;

3. プログラムで文字列を取得

プログラムから、「strings」ファイルの値を取得する NSLocalizedString(key, comment)メソッドを呼び出します。

実機または、シミュレータで「設定」「一般」「言語環境」で English を選択し、その設定でアプリを起動すると以下のように表示されます。
localization8
図 Localizable 英語

同様に言語情報を日本語に変えて起動すると以下のように表示されます。
localization9
図 Localizable 日本語

この記事に関連する講座

未経験からスマホエンジニアへ!

詳しくはこちら


カテゴリー: Swift スマートフォン プログラム

JavaScriptとJSON

JSONとは

以前にも増してJavaScript界隈で聞くことが多くなったデータの表現形式に「JSON」というものがあります。正式には「JavaScript Object Notation」といいます。名前に含まれている通り、JavaScriptのために作られた表記法です。

XML同様、テキストファイルとして作ることもでき、人間が読み書きしやすいようなデータ形式となっています。また、階層を追って目的のデータを探しに行くXMLより、JavaScriptからのデータアクセスがしやすい構造になっているため、データの解析がXMLよりも速いというメリットがあります。

AjaxとJSON

Ajaxも、現在は利用が当たり前のようになってきているJavaScriptを利用した技術です。「Asynchronous JavaScript + XML」の略称で、JavaScriptからWebサーバーにリクエストを送り、サーバーからXML形式で取得したデータをもとにして、JavaScriptで動的にブラウザのコンテンツを書きかえる技術です。「非同期通信」という仕組みを使っています。このとき取得するデータを、XMLではなくJSONデータにすることも増えています。

JSONの基本書式

このように、1つ1つのデータを管理する項目名(名前)と、具体的なデータ(値)のセットをカンマで区切ってリストアップしていくような構造になっています。

名前と値の1セットを、JSONではまとめて「メンバー」と呼びます。

JSON 表記例1

配列や連想配列、マップに似た構造となっていますね。この例では、5つのメンバーを含んでいることになります。

JSONの型

JSONは、XMLと違い「型」というものが値に対して存在します。「型」というのはデータのタイプ(種類)のことです。

● string型(文字列)
“KEN” や “プログラム” など、文字をダブルクオートで囲んだもの。プログラムではよく「文字列」と言います。
● number型(数値)
100や3.14など、ダブルクオートなどで囲まず、数値をそのまま書いたもの。
● boolean(真偽値)
true、falseの2つ。if文やwhile文では、条件の判定結果として使われますが、JSONでは「はい/いいえ」「ON/OFF」的な要素として使われることが多いです。
● null(ヌル値)
空文字や、0とは違う「値が何もない」という状態を表すもの。
● array(配列値)
複数の値を[ ]でまとめて管理する形式。
例)
JSON 表記例2

このような構造にすることで、簡易的なデータベースのように扱うこともできます。

イメージ

id name tel
1001 さいとう 070-0000-0000
1002 すぎやま 080-0000-0000
1003 よねやま 090-0000-0000

JavaScript以外でもJSONをデータの形式として利用することは増えていますので、是非学習してみてください。

この記事に関連する講座

ライブラリの利用にとどまらない技術をマスター

詳しくはこちら


カテゴリー: JavaScript Web プログラム

Webプログラミングの基礎[PHP 変数編]

8種類の基本型

プログラムは必ずデータを保存するための入れ物=変数が必要となります。
変数には保存するデータの種類によって様々な”型”というものが存在します。
ここではPHPにおける8種類の基本形について見ていきます。

※PHPタグ

  • PHP はファイルを解析して開始タグと終了タグ (<?php と ?>) を探します。 タグが見つかると、PHP は開始タグ~終了タグの範囲内でコードを実行します。
  • 上記により、PHP を他のあらゆる形式のドキュメント中に埋め込むことができます。
  • 開始タグと終了タグで囲まれている 箇所以外のすべての部分は、PHP パーサ(構文解析エンジン)に無視されます。

4種類のスカラー(単純)型

1-1.論理値(boolean)

TRUE  // 真
FALSE // 偽

 

1-2.整数(integer)

<?php

$a = 1234;    // 10進整数
$a = -123;    // 負の数
$a = 0123;    // 8進数 (10進数の83と等価)
$a = 0x1A;    // 16進数 (10進数の26と等価)
$a = 0b11111111; // 2進数 (10進数の255と等価)

?>

 

1-3.浮動小数点(float, double)

<?php

$a = 1.234;
$b = 1.2e3;                       // 1.2×10の3乗
$c = 7E-10;           // 7×1/10の10乗

?>

 

1-4.文字列(string)

$name = “Yamamoto” // 文字列

 

複合型

2-1.配列(Array)

配列の各データには「インデックス」という番号が付きます。
特定のデータが必要な場合はそのインデックスで呼び出します。

$week = array(“日曜”,”月曜”,”火曜”,”水曜”,”木曜”,”金曜”,”土曜”);

echo $week[3];                  // “水曜日”が表示される

 

2-2.想配配列

特定の数のカンマで区切られた “キー=>値”の組を引数とします。

$data = array(“id”=>”ALC001”, “name”=>”プレミアビール”, “price”=>200);
echo $data[“name”];          // “プレミアビール”が表示される

 

3種類の特別な型

3-1.リソース(resource)

リソースは、特別な関数により作成され、使用されます。

 

3-2.ヌル(NULL)

ある変数が値を持たないことを表します。

 

3-3.Callable

関数の引数に渡すことができるcallback型を表します。

 

この記事に関連する講座

Webアプリの開発手法を知る

詳しくはこちら


カテゴリー: Web プログラム

Javaの基礎【コメント】

コメントとは、コンピュータがプログラム実行時に無視する文字列のことです。
プログラムの実行時には、無視されるため、実行時には意味を持ちません。

複数人でシステムを開発していた場合、作成したソースコードを別の人が読んだとき、
また、同じ人であっても時間をおいてから読んだりした場合には、その意図を読み取ることが困難なことがあります。
その為に、コードの意図をコメントとしてソースコードに挿入することが役立ちます。 

Javaのコメントは行コメント、ブロックコメント、ドキュメントコメントの3種類があります。

行コメント

行コメントは「//」を使用します。プログラム中に「//」が現れた場合「//」から行末までをコメントとして扱います。

行コメントは主に変数の説明、メソッド内の処理の説明で使用します。

ブロックコメント

「/* */」を使用します。プログラム中に「/*」が現れた場合、次に「*/」が現れるまでの部分を全てコメントとして扱います。

ブロックコメントは処理の説明や問題のありそうな場所を一旦無効にして実行したいとき等に使用します。

ドキュメントコメント

「/** */」を使用します。プログラム中に「/**」が現れた場合、次に「*/」が現れるまでの部分を全てコメントとして扱います。

ドキュメントコメントは主にクラス、フィールド、メソッドの説明に使用します。コメントの範囲はブロックコメントと同じですが、決められたルールに従って記述すればクラスのAPI(クラスの使用方法、説明が記述されたドキュメント)が自動生成することができます。

また、クラスの説明やメソッドのコメントには「@」から始まるアノテーションを使用することになりなります。どのアノテーションを使用するかは、開発のプロジェクト毎に決めていることもあり、開発前に決めていたほうが望ましいでしょう。

上記サンプルで使用しているアノテーション

  • @author クラスの作成者を記述する
  • @param メソッドの引数の説明を記述する
  • @return メソッドの戻り値の説明を記述する

 

この記事に関連する講座

エンジニア業務に必要な開発現場のリアルを身につけます。

詳しくはこちら


カテゴリー: Java プログラム

Androidアプリ開発をAndroid Studioで!

2014年12月より正式バージョンがリリースされたAndroid Studioですが、すでに今まででもEclipse等の統合開発環境(IDE : Integrated Development Environment)でAndroidアプリを開発された方もいらっしゃると思います。

 Android Studioはまだリリースされてからの期間が短く、現状ではEclipseでの書籍やインターネットでの情報は多いと思われますが、今後はAndroid StudioがAndroidアプリ開発の主流になると思われます。

 ではEclipseとAndroid Studio、この二つのIDEはどのようなものかを、簡単にご説明したいと思います。 

pic-20160531_01

まず初めにこの二つの開発ツールはどちらも無料で揃えられるものになっています。

Eclipseの提供元はIBM社。Android Studioの提供元はGoogle社が行っております。

これまでGoogle社は、EclipseのAndroidのアプリ開発を助けるプラグインであるADT (Android Development Tools) プラグインの開発とサポートを行ってきましたが、2015年末でサポートを終了しました。
よってこれからはAndroidアプリの統合開発環境に関しては、EclipseからAndroid Studioへの移行が推奨されています。

 

当然ながらGoogle社がスマートフォンやタブレットなどに提供しているAndroidアプリはサポート体制や新機能の追加などを鑑みてもAndroid Studioが主流になると言っても良いでしょう。

 使い心地は私見ですが、現段階ではEclipseよりも若干動作は重く感じます。

また普段からEclipseを使用している方などはショートカットやメニューの配置や、ディレクトリ構成の違いに違和感が生じるところがあるかと思われます。

 ですが、ビューの見易さやAndroid仮想デバイス(AVD、Android Virtual Device)の種類などは今までのEclipseでの開発環境では得られないものとなっています。

 動作環境はWindows、Macintosh、LinuxなどEclipseと同じ動作環境で動くものになっており、導入もそこまで敷居の高いものではありません。

まだAndroid Studioに移行していない方はぜひこの機会に。またAndroidアプリの開発をしてみたい方もAndroid Studioを導入してみましょう。

 

KENスクールではこのAndroid Studioを使ったAndroidアプリ開発講座を開講しております。興味のある方は是非ご検討下さい。

この記事に関連する講座

IT業界で今最も熱い!Androidアプリ開発を習得

詳しくはこちら


カテゴリー: スマートフォン プログラム

AndroidStudioインストール(Windows)

Android Studioのインストール方法を紹介します。

●手順1

01

http://developer.android.com/intl/ja/sdk/index.html」にアクセスして【DOWNLOAD】をクリックします。

●手順2

02

「上記の利用規約を読み、同意します。」にチェックを入れ【DOWNLOAD】をクリックします。

●手順3

03

ダウンロードされたインストーラを実行します。
【Next】を選択します。

●手順4

04

必要な項目にチェックをして、【NEXT】を選択します。
・Android SDK:Android SDKがインストールされる。必ずチェックしてください。
・Android Virtual Device:エミュレータを使用する場合はチェックしてください。
・Performance (Intel R HAXM):エミュレータの高速化をします。

●手順5

05

【I Agree】を選択します。

●手順6

06

Android Studio Installation Location: Android Studioのインストール先を指定
Android SDK Installation Location: Android SDKのインストール先を指定
デフォルトで問題なければそのまま【NEXT】を選択します。

●手順7

07

エミュレータが使用するメモリサイズを設定します。
【NEXT】を選択します。

●手順8

08

【Install】を選択します。

●手順9

09

【NEXT】を選択します。

●手順10

10

【Start Android Studio】にチェックを入れるとインストール完了後に自動的に
Android Studioが起動します。
【Finish】を選択します。

以上でAndroid Studioのインストールが完了です。


カテゴリー: プログラム

【 Access VBA 】マクロからVBAへの変換方法

startup-593324_640

AccessにはExcelと同様に「マクロ」があります。
マクロを使用すると、さまざまな作業を自動化することができます。

操作方法は以下のとおりです。

① 「作成」タブを選択し、「マクロ」ボタンをクリックします。

img01

② マクロのアクションを選択する画面が表示されます。

img02

③ ドロップダウンリストをクリックすると、アクションの一覧が表示されます。

img03

④ 例えば「データベースを閉じる」を選択し、マクロを保存します。

マクロ名は「練習」とします。
img04

ナビゲーションウィンドウに保存したマクロが表示されます。

Excelのマクロは、記録をした後にVisual Basic Editorを開くと、記録内容をVBAに変換したコードをすぐに確認することができます。しかし、Accessのマクロは、記録をしただけではVBAに変換したコードを確認することができません。VBAに変換したコードを確認するためには、続けて以下の操作を行います。

⑤ 「デザイン」タブを選択し、「マクロをVisual Basicに変換」ボタンをクリックします。

img05

⑥ 下記ダイアログボックスが表示されたら、「変換」ボタンをクリックします。

img06

※「エラー処理コードを追加する」と「コメントを含める」については後述します。

変換が成功するとVisual Basic Editorが自動的に立ち上がり、プロジェクトエクスプローラー内に「変換するマクロ:練習」が作成されます。ダブルクリックをするとVBAに変換した内容を確認することができます。

img07

上図の赤線で囲まれている箇所は「コメント」です。VBAではシングルクォーテーションの後ろに書いた1行分がコメントになります。コメント部分は緑色で表示され、プログラム実行時に無視されます。プログラムの説明などをコメントとして残しておくと、処理内容を把握しやすくなります。

また、青線で囲まれている箇所は「エラー処理」です。プログラム実行時に何らかの理由でエラーが発生すると異常終了となりますが、エラー処理を記述することにより正常終了させることができます。マクロではエラー処理を行うことができませんが、「エラー処理コードを追加する」にチェックを入れるとプログラム内にエラー処理を含むことができます。

「DoCmd.RunCommand acCmdCloseDatabase」の部分が、今回記録した「データベースを閉じる」処理にあたります。マクロで行うことができる処理は、VBAでは「DoCmdオブジェクト」を使うことでほとんど実行できます。

DoCmdオブジェクトには「データベースを閉じる」以外にも多くのメソッドが用意されています。VBAで記述したいマクロのアクションがありましたら、ここまでの手順を行うことで、VBAではどのように記述されるのかを確認することができます。


カテゴリー: Access VBA プログラム

【Unity】庭を歩く

binoculars-100590_640

Unityで箱庭を作る(1)(2)で創ったフィールドを自由に散歩してみたいと思います。
今回もUnityが内蔵しているAssetsだけで作ることが可能です。上部メニューのAssets>ImportPackage>Charactersをクリックします。

01

ImportUnityPackage Charactersが出ますので左下のAllをクリック後Importします。

07

Project内のAssets>StandardAssets>Characters>FirstPersonCharacter>Prefabsをクリックすると

02

03

このように2つのPrefabが出来上がっています。

FPSControllerをScene内のフィールドの上にドラッグ&ドロップします。

04

Hierarchy内にFPSControllerが追加されます。

次にMainCameraを選択しInspector内のチェックを外します。

05

今回はMainCameraと同じ位置にFPSControllerを置いてみました。

06

08

上部にある再生ボタンを押してみましょう。マウスで周囲を見渡し、矢印キーで自由に歩くことが出来ます。

09


カテゴリー: Unity プログラム

iPhoneアプリ開発 デバッグ機能の使い方(Xcode)

bugs-718753_640
Xcodeに備わっているデバッグに関する記事です。

環境(以下の環境で動作確認をしています)

  • OSX Yosemite
  • Xcode6.1

目次

  • デバッガとは
  • デバッグで使用するボタン
  • 変数ビュー
  • コンソール画面

デバッガとは

開発ソフトに含まれることが多い、プログラムを修正(デバッグ)するための支援をしてくれる便利なツールやソフトのことをデバッガと呼びます。Xcodeでは、確認したい命令の行番号をクリックするとブレークポイントと呼ばれる、プログラムを停止するためポイントを貼ることができ、その後各種デバッグ機能を利用することができます。
ブレークポイントを貼ったら、通常通りアプリケーションを実行すると、下記のようにブレークポイントが貼られた行で命令が一時停止します。

debug_1
【図:1 17行目にブレークポイントを貼った実行結果】

緑色の網掛けが掛かっている命令で停止していることを表しています。(実行はされていません)

デバッグで使用するボタン

デバッグで使用する主なボタンは下図の通りで、Xcodeの左下に表示されています。

debug_2
【図:2デバッグで使用するボタン】

各種機能は以下の通りです。

  • 実行継続 実行を再開して次のブレークポイントで止まるまで、または、ブレークポイントが無ければ最後まで実行する
  • ステップオーバー 1行ずつプログラムを実行する
  • ステップイン 現在の停止位置がメソッドである場合、そのメソッドの中に入る
  • ステップオーバー 現在の定位置がメソッドの中である場合、そのメソッドから外へ出る

この中でよく利用するのが、ステップオーバーです。1行ずつ実行することで変数の値や計算式やメソッドの戻り値の代入などの値が確認できます。

変数ビュー

Xcode左下の画面には、変数の中身を確認できる画面が表示され、変数の中身を確認することができます。以下は、ステップオーバーで1行命令を進めたあとの状態です。

debug_3_2
【図:3変数ビュー】

変数strにはabcという文字列が代入されていることがわかります。複雑なプログラムでは、予期せぬ値が代入され、プログラムが正常に動作しないこともありますが、変数ビューで中身を確認することで原因を特定することもできます。

コンソール画面

Xcode右下の画面をコンソール画面と呼びます。コンソールとは、入出力装置や入出力画面のことです。この画面では、プログラム実行時のエラーメッセージが出力されたり、開発者がキーボードを使用してコマンドを入力することができます。

デバッグコマンド

デバッグ中にコンソール画面に入力しデバッグを手助けするpoコマンドを紹介します。
poコマンドはprint objectの略でオブジェクトや変数の値を表示することができます。

debug_4
【図:4コンソール画面】

上記のように変数strの中身を確認することができます。また、コンソール画面では、「str.isEmpty」のようにメソッドの呼び出し結果を確認することも可能です。

デバッグ機能を有効に使うと、目視だけでは確認漏れしかねないことも検証できます。是非開発時に利用してください。


カテゴリー: スマートフォン プログラム

Unityで箱庭を作る(2)

rocce-del-manco-183996_640

前回に引き続き、Unityを使って簡単なフィールドを作る方法を紹介します。

Unityの特徴の一つに豊富なASSETSがあります。
今回はUnityが提供しているASSETSを使って行きたいと思います。
上部メニューバーのAssets>Import Package>Environmentをクリックすると
10

Importing packageが開きます。
Allを押してImportを押します。
するとAssets Progressが表示され青いバーが現れるのでしばらく待ちます。

11

Inspector内Terrainの筆アイコンを押します。
12

Edit Texturesを押し
Add Textureをクリックします。
13

Add Terrain Textureが開くのでSmoothness(A)のSelectを押します。
Select Texture2Dが開くので上部検索窓にgrassと入力すると候補が表示されるので
GrassHillAlbedo(Texture2D)を選択すると、Add Terrain Textureに画像が追加されているかと思います。
Addを押します。
14

15

Terrainが一面緑のテクスチャで覆われて一気に地面っぽくなりました。

Hierarchyの中からMainCameraを選択してキーボードのWキーを押します。
すると赤と緑と青の矢印が出てきたかと思います。

16

上向きの緑の矢印をドラッグすると上方向に自由に動かせます。
するとGameビューの中の映像がカメラ位置に合わせて変化しているかと思います。
このようにして、カメラを移動させることによってGameビューに映したい映像を映すことが可能になります。

次にMainCameraを選択したままキーボードのEを押してみましょうScene内のカメラアイコンの周りに円が現れたかと思います。
これはオブジェクトの角度を調整することが可能な状態です。
17

試しに動かしてみましょう。
カメラアイコンを囲っている線をドラッグします。
カメラの角度に合わせてGameビューが変化しているのがわかると思います。
Gameビューはカメラが写している範囲が、Sceneはそのフィールド全体をカメラに関係なく映しています。

ではもう少し世界を作りこみたいので、木を生やしてみたいと思います。

Terrainを選択したらInspector内のTerrain内の7つのアイコンの右から3番目を押します。
18
Treesに「Edit Trees」ボタンがあるので押します。
Add Treeを選択します。

Tree Prefab窓が出てくるのでTreePrefab横の◎を押します。
Select GameObjectが出てくるので木のアイコンをダブルクリックします。
19
Addを押します。

するとInspector内のTreesに木のアイコンが出てきていると思います。

木のアイコンを選択しBrushSizeやTreeDensity、TreeHeightを変えてみてScene内をクリックしてみましょう。
20

木が出現しましたね。

次にInspector内Terrainの7つのアイコンの右から2番目
を押します。
EditDetailsを押し、AddGrassTextureを押します。
21
AddGrassTexture窓が開きます。
DetailTextureがNoneになっているので右側の◎を押します。
SelectTexture2Dまどが開きますので検索欄に「grass」と入力するとGrassFrond01が出てくるので
ダブルクリックします。
するとAddGrassTextureのDetailTextureにGrassFrond01 AlbedAlphaが追加されているのでAddボタンを押します。
22

BrushSizeを調節して思うようにTerrain上をドラッグしてみましょう。
草原が出来たと思います。

23

さて、かなり緑あふれる大地が形成できたと思いますので動かしてみましょう。
ちょうどHierarchyの真上あたりに▶ボタンがあります。
24
これがScene再生ボタンです。これを押すとSceneの再生が始まります。
風に揺れてる草をみれるかと思います。

このようにUnityが提供してくれているAssetsだけで簡単に3Dフィールドを形成することが出来ます。

25


カテゴリー: Unity プログラム

Unityで箱庭を作る(1)

55dc0112f61d9e373a76209636bc4ec7_s

話題のゲームエンジン「Unity」
今回はそのUnityを使って簡単なフィールドを作ってみたいと思います。

まずはNEW PROJECTから新しいプロジェクトを作りましょう。
Project nameは任意の名前を、Locationには保存先を指定します。

Unityの画面が表示されましたね?
ここから思い通りの大地を作っていきたいと思います。

画面上部のツールバーからGameObject>3D Object>Terrainをクリックして見てください

何もなかった空間に白い板が出現しました。

1

これが地面になる基礎部分です。この上に山を作り池を作り、緑をつくり、風を吹かせてみたいと思います。

Terrainの大きさを小さくして編集しやすくします。
InspectorのTerrainには7つのアイコンが並んでいます。この中の一番右、歯車を押すとSetting画面になります。
その中の下部にある

Terrain Width 50
Terrain Length 50
に設定します。 
2
Inspector上部のTransformのPositionの
X -25
Z -25

3

すると世界の中心にTerrainが来るはずです

まずは山から作っていきたいと思います。InspectorのTerrain内部にある7つのアイコンの一番左、山に上矢印が付いている
アイコンを押しましょう。

4

Brushesが表示されていると思います。

5

上図のように一番左上を選択し、SettingsをBrush Size 37、Opactiyを30に設定します。

Terrainの上をドラッグしてみましょう。
白い土台が盛り上がって、あっという間に山になりました。
Shiftを押しながらドラッグすると掘り下げる

6

次にInspectorのTerrain内にある7つのアイコンの左から二番目を押します。

BurushSizeとOpacity、Heightを設定して、Terrainの上でドラッグしてみましょう。
今度はある一定の高さで山の形成が止まったともいます。
自身の思うようにBurushSize(範囲)とOpacity(強さ)、Height(高さ)を設定して、いろいろな地形を作ってみましょう。

7

仕上げに7つのアイコンの左から三番目を押します。
これは創りだした凹凸をなだらかにします。

8

Brush SizeとOpacityを設定して試してみましょう。

9
(画像は一例です。必ずしもこの状態にしなくてはならないものではありません)
いかがでしょうか。
真っ白な板だったTerrainに高低差が生まれて山のように見えてきませんか?

次回は、草木が生い茂る状態にする手順をご紹介します。


カテゴリー: Unity プログラム

使える!簡単でお洒落なjQueryのスクロール

autumn-194834_640
iphoneを起動させてから左にスライドし、パスコードを入力する画面に切り替わる際、
背景が徐々にボケるのご存知でしょうか?

Webサイトでも、ページをスクロールする際に前の画像がボケて切り替わると
お洒落だと思いませんか?

実はjQueryを利用する事で、Webページにこのような機能を簡単に実装できるのです。

(サンプル表示)

準備も簡単です。
『通常表示させたい画像』と『ぼかした画像』の2種類を用意するだけです。

では、手順に沿って実装してみましょう。

(1)jQuery公式サイトより、jQuery本体をダウンロードします。
 http://jquery.com/download/
01

(2)Crossfade.jsをダウンロードして解凍します。
 https://github.com/mikefowler/crossfade.js
02

(3)(1)と(2)でダウンロードしたjsファイルをscript要素で読み込みます。
 (今回のサンプルはHTMLと同じ階層に配置しています)

 <script src="jquery-1.11.3.min.js"></script>
 <script src="crossfade.jquery.js"></script>

必要なjQueryの読み込みは以上です。
次は使い方を見ていきましょう。

(4)ぼかしを適用させたい要素をセレクターで指定し、crossfade()メソッドを呼び出します。
 下記は「.cf」というクラスで指定しています。

 <script>
 	$(function(){
 		$('.cf').crossfade();
 	});
 </script>

(5)画像に効果を適用させたい箇所をdiv要素で囲み、クラス「.cf」を追加します。

 <div class="cf"></div>

(6)『通常表示させたい画像』の画像のパスを「data-crossfade-start」に、
 『ぼかした画像』の画像のパスを「data-crossfade-end」にそれぞれ指定します。

 <div class="crossfade" data-crossfade-start="通常表示させたい画像のパス" data-crossfade-end="ぼかした画像のパス"></div>

(7)CSSは、画像を表示する要素にpositionプロパティのrelativeを指定します。

 .div要素に指定するクラス名 {
    position: relative;
 }

以上です。
これだけでスクロールすると徐々にボケる効果が実装できてしまうのです。
簡単ですよね!

基本的な動作以外にも色々なオプションが用意されておりますので、
試してみてくださいね。

また、MITライセンスですので、著作権表示は削除しないようにしましょうね。


カテゴリー: JavaScript Web プログラム

Swiftにおけるメソッド定義の特徴(他言語との違い)

mobile-616012_640

プログラムを制作する上で欠かせないといっても過言ではないメソッド。

Swiftにおけるメソッドも、他のプログラム言語と同様に「引数」も「戻り値」が存在していますが、引数の数によってメソッドを呼ぶ形式が少し変わったり、「ラベル」という見出しを付けた引数を定義したりすることもできます。

今回はそういった、Java、Cなどのよく使われる言語でのメソッドと、Swiftのメソッドの異なる箇所を解説します。

メソッド定義の基本形

まずは基本的なメソッドの定義方法から見ていきましょう。

img01

特徴1.引数が複数ある場合のメソッドの呼び出し方

引数が複数ある場合、引数同士の間を「,(カンマ)」で区切るという部分は他の言語と変わりありません。
ただし、呼び出しの記述は引数が一つのみの場合と少し異なります。

img02

特徴2.ラベルつき引数

メソッドに引き渡す値が何のためのものかがわかりやすいよう、引数に対して呼び出しの際に利用できる項目名を定義することができます。これを「ラベル」といいます。

img03

特徴1の「引数名:値」の渡し方と似ていますが、ラベルの場合は引数が何個あったとしても、必ず「ラベル名:値」にしなければいけない、つまり引数が一つの場合であったとしてもラベル名が必要になるところが違います。また、ラベルをつけた場合、ラベル名の指定を省略した呼び出しはできません。

例えば四角形の面積を計算するareaというメソッドがあったとします。
高さと幅を引数で渡す場合に、widthとheightというラベルを引数に定義してみましょう。

例)areaメソッドを定義する
func area(width val1:Int , height val2:Int ) -> Int {

var ans:Int = val1 * val2
return ans

}

※IntはSwiftにおける整数の型です。

val1は第一引数を受け取る変数名(引数名)で、widthはそのラベルです。
val2は第二引数を受け取る変数名(引数名)で、heightはそのラベルです。
ansという変数にval1とval2の計算結果を代入し、returnで戻り値として戻します。

例)areaメソッドの呼び出し
var data = area(width:100, height:50)

width、heightといったラベルを指定して引数を渡しています。
このようにラベルを使うことで、第一引数が幅、第二引数が高さというのがわかりやすくなりました。

Swiftは今までiPhoneアプリの開発に使われてきたObjective-Cよりも、他のプログラム言語をベースにした理解がしやすい言語仕様となってはいますが、今回ご紹介したメソッドの特徴以外にも、Swift独自の記述方法はいくつかあります。
言語の違いを比較するのもよい学習になりますので、是非調べてみてください。


カテゴリー: スマートフォン プログラム

Swift オプショナル変数の使い方

mobile-791164_640

オプショナル変数の特徴や使い方を紹介した記事です。

環境(以下の環境で動作確認をしています)

  • OSX Yosemite
  • Xcode6.1

変数の種類

Swiftで扱える変数の種類はいくつかありますが、通常のデータ型を決めて変数を宣言する方法を確認していきます。

例)

var price:Int

・特徴として、nil(何もない)を代入することができません

次にオプショナル変数を宣言する方法です。

例)

var price:Int?

・変数の宣言時に、データ型の後ろに「?」をつけるとオプショナル変数となります。
・特徴として、変数の型がもつ通常の値に加えて、nil(何もない)を代入することが可能です。

オプショナル変数の使用方法

オプショナル変数に代入した値を使用する際には、変数名の後ろに「!」をつけて使用します。これをアンラップと呼びます。

例)

var price:Int? = 100 
println(price! * 1.08)

・中身が何もない(nil)の場合、実行時エラーが発生するので注意が必要です。

例)

var price:Int? = nil 
println(price! * 1.08)   //例外発生

オプショナルバインディング

・「値がnilではないという判定と、アンラップして別変数への代入を同時に行うこと」ができます。これを、オプショナルバインディングと呼び、オプショナル変数を扱う際に、実行時例外を起こすことなく安全に使用することができます。

例)

var price:Int? = 100
if var unwrapped= price {
//priceがnilでない時に、実行される
	println(unwrapped * 1.08)
    }else{
	//priceがnilの時に、実行される
println(“数値を入力して下さい”)
}	

オプショナル変数を使用する基準

・いつ使用するべきなのか、慣れるまで判断し難い所がありますが、ポイントとして、Swiftで予め用意されている、クラスのメソッドを使用する際に、戻り値のデータ型に「?」が付いている場合はオプショナル変数を使用してください。
たとえば、ユーザーが画面に入力した値を計算の値として利用したい場合下記のようなプログラムとなります。

例)

var str:String = [画面に入力された値]
var num:Int? = str.toInt()//toInt()メソッドは文字列を数値型に変換する、また戻り値はInt?型
//オプショナルバインディングでチェック
if var unwrapped= num {
	println(unwrapped * 1.08)
     }else{
println(“数値を入力して下さい”)
}	

・toInt()メソッドは数値型に変換できなかった場合にnilを戻します。ユーザーが間違って数値に変換できない値を入力した時は、nilが戻るため、nilを代入できるオプショナル変数を使う必要があります。

オプショナル変数を使用する際は、予期せぬエラーが出ることを防ぐ為にも、適切にオプショナルバインディングを使用してプログラムを組み立てて下さい。今回は基本的な扱いを紹介しましたが、より実践的な使用方法に関しては、iPhone講座の内容で説明しています。


カテゴリー: スマートフォン プログラム

変数の適用範囲

laptop-340721_640

Excel VBAでの変数の適用範囲について記載します。
変数は、宣言した場所によって利用できる適用範囲が決まっています。

① プロシージャ内だけで使用できる変数

プロシージャ内で作成された変数は他のプロシージャでは使用ができません。
サンプルで確認しましょう。
img1

sample1プロシージャでmessage変数が使用できています。
img2

sample2プロシージャを実行するとエラーになります。
img3
sample1プロシージャ内で宣言したmessage変数をsample2プロシージャで使用しているのでエラーになります。

② モジュール内の全てのプロシージャ内で使用できる変数

モジュールの宣言セクションでPrivate宣言された変数はモジュール内の全てのプロシージャで使用できます。
サンプルで確認しましょう。
img4

sample1プロシージャ、sample2プロシージャでmessage変数が使用できています。
img5

img6

③ 全てのモジュール内で使用できる変数

モジュールの宣言セクションでPublic宣言された変数は全てのモジュール内で使用できます。
サンプルで確認しましょう。
img7

sample1プロシージャ、sample2プロシージャ、sample3プロシージャで変数が使用できています。
img8

img9

img10

変数の適用範囲と宣言する場所をまとめた表になります。

変数宣言 宣言する場所 適用範囲
Dim 変数名 As 変数の型 プロシージャ内 プロシージャ内
Private 変数名 As 変数の型 宣言セクション モジュール内の全てのプロシージャ
Public 変数名 As 変数の型 宣言セクション 全てのモジュール内

今回ご紹介した内容はExcel VBA Standard試験対策の範囲となります。


カテゴリー: Excel VBA プログラム

C++の紹介2【中級者向け】

https---www.pakutaso.com-assets_c-2015-06-LISA78_MBAsawaru20141018102912-thumb-1000xauto-17983

一般的に難しいといわれているC++を紹介した記事です。
基本文法や変数、オブジェクトの概念を習得済みの中級者向けの記事です。

前回は、C++でのオブジェクトの取り扱いについて紹介しました。Javaとは異なり、代入は実体のコピーであるという内容です。
今回は、その代入(データのコピー)についてもう少し詳しく見て行きます。

#include<stdio.h>
using namespace std;

class Myclass{
    int value;	
public: 
    void setValue(int val) { value = val; };
int getValue() { return value; };
    void printValue(){ printf("%d\n",value); };
};

前回同様、上記のクラスを使って話を進めて行きます。

int main(void){
    Myclass m1;
    m1.setValue(100);
    Myclass m2 = m1;
    m2.printValue();
}

このプログラムの実行結果は、画面に100と表示されます。イコール演算子による代入でm1の内容がm2にコピーされたからです。
それでは今回の本題ですが、イコール演算子を使用しない場合でも代入が行われる(代入と同じくオブジェクトがコピーされる)場合があります。それはどのような時でしょうか。

それは、関数(メソッド)を使ってデータをやり取りした場合です。

オブジェクトを使わない、単純なデータ型でのサンプルコードで見て行きましょう。

int func(int arg){
arg += 100;	// arg = arg + 100;と同義
    int ret = arg;
    return ret;
}
int main(void){
int val = 10;
int ans = func(val);
}

func()関数はint型を受け取り、int型を返す関数です。関数内で変数argに100を加算していますが、変数valには影響しません。
このとき、変数valから変数argへ、変数retから変数ansへ、関数内では変数argから変数retへ、データが受け渡されています。特に意識していなかった人も居るかもしれませんが、この引数および戻り値のやり取りもデータのコピーが行われているのです。

それでは、オブジェクトを使った関数の例を見て行きましょう。

Myclass func(Myclassarg){
    arg.setValue( arg.getValue() + 100 );
    Myclass ret = arg;
    return ret;
}
int main(void){
Myclass val;
    val.setValue(10);
Myclass ans = func(val);
    ans.printValue();
}

このときも、変数valから変数argへ、変数retから変数ansへ、関数内では変数argから変数retへ、データが受け渡されており、それぞれの場所でデータのコピーが行われています。

今回、Myclassはサンプルとしてのクラスなので、int型変数を一つと、それに関する関数を三つ持っているだけですが、実際には多くの変数や関数を含むクラスになります。
そのときに、関数に渡すたびにコピーをしていてはメモリの無駄ですし、コピーをする処理の時間も無駄です。

Javaではこのような書き方をしたとき、オブジェクトの参照情報のコピーを渡すので、実際にオブジェクトに含まれるデータのコピーは作成されません。C++ではデータのコピーを作らず、そのデータの場所の情報を受け渡すときはポインタを使います。(参照渡しというのもありますが、それは別の機会に。)

下記のサンプルはデータのコピーを作らない、ポインタでのデータのやり取りです。

Myclass *func(Myclass*arg){
    arg->setValue( arg->getValue() + 100 );
    Myclass *ret = arg;
    return ret;
}
int main(void){
Myclass val;
    val.setValue(10);
Myclass *ans = func(&val);
    ans->printValue();
}

表示結果は一つ前のサンプルと同じですが、データをコピーしていない点で異なります。
main()関数の最後の行を val.printValue(); としても同様の結果になります。

Javaではオブジェクトの受け渡しは参照型のみで行われますが、C++では標準的には実体のコピーで行われ、ポインタを使うことでJavaの参照情報のやりとりと同様のことができるようになります。


カテゴリー: C++ プログラム

Androidで設定用画面を作成する方法

android-604356_640

PreferenceActivityの使い方について記載します。
アプリケーションで設定情報などをユーザーがカスタマイズ出来るように設定用画面を設けることがありますが、PreferenceActivityクラスを利用すると簡単に実装ですることができます。

1. 設定用画面のxml作成

通常のActivityクラスで利用する画面のレイアウト用のXMLと違いPreferenceScreen要素が必要になります。
xmlファイルはresフォルダ配下にxmlフォルダを作成し保存します。

img1

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">
    <CheckBoxPreference
            android:title="設定1"
            android:key="CheckBox1" />
    <EditTextPreference
            android:title="設定2"
            android:key="EditTextPreference1" />
    </PreferenceScreen>

CheckBoxPreference(4行目)
チェックボックスでon/offを選択するような設定項目に利用します。

img3

android:title(5行目)は設定画面に表示される文字です。
設定情報はキーと値で保存されますが、6行目のandroid:key(6行目)で指定した値がキーになります。

EditTextPreference(7行目)
自由に文字列を入力可能な設定項目に利用します。

img4

8,9行目に関する設定はCheckBoxPreferenceと同じです。

2. 1.で作成したxmlをクラスに読み込む

addPreferencesFromResourceメソッドで先ほど作成したxmlを読み込むことができます。

package jp.co.ken;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class PreferenceActivitySample extends PreferenceActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pre);
    }
}

入力した情報やチェックした情報は自動的に保存されます。

img6

保存された情報は以下の場所にxmlファイルとして作成されます。
「data/data/パッケージ名/shared_prefs」

img7

今回はEditTextPreferenceとCheckBoxPreferenceを利用しましたが、他にもリストで選択項目を選べるものもあるので試してみてください。


カテゴリー: スマートフォン プログラム

Javaでの正規表現(中級者向け)

letters-718846_640

Javaにおいて、ある文字列と文字列の一致を確かめるには、Stringクラスに定義されているequals()メソッドを使います。
しかし、それは文字列同士の完全一致の判定しか行う事ができません。

では文字列の部分一致、例えば ”h” から始まる文字列を調べるには、どのようにしたらよいでしょうか。
一言で ”h” から始まる文字列といっても “hello”, ”happy”, ”hot”, ”honey”, ”hawaii” …のように数多く存在します。

その条件、今回でいうところの『 ”h” から始まる文字列』を一つのパターンとし、それを表現する方法が正規表現です。

正規表現の使用方法

正規表現で『 ”h” から始まる文字列』を表すと、 ”h.*” のようになります。
ここで使用されている ”.” や ”*” はメタ文字と呼ばれるもので、プログラムの中で特別な意味を持った文字のことです。

例えば ”.” は、任意の一文字を表しています。アルファベットや数字、ひらがな漢字カタカナなど何らかの文字という表現になります。
そして続く ”*” は、直前の表現の0回以上の繰り返しを表します。こちらは ”*” の前に書かれたもの、今回で言うところの ”.” の繰り返しが0回以上続く、つまり ”h.*” という表現では、 ”h” の後に何らかの文字が0回以上続く文字を表しています。

これにより ”h.*” は ”hello” や ”happy”、極端にいえば ”h” 一文字だけという文字列も表現する事ができるのです。

この正規表現を使って文字の部分一致を判定する事を、「文字列のパターンに一致する」「パターンにマッチする」等と言います。

では、先程の例文字列 ”h.*” 一致するコードに表してみましょう。

String str = "hello";
String regex = "h.*";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);

if (matcher.find()){
   System.out.println("パターンにマッチしました");
   System.out.println(matcher.group());
}else{
   System.out.println("パターンにマッチしませんでした");
}

コードの解説です。
まず1行目で、文字列 ”hello” を変数strに格納しています。Patternオブジェクトのcompile()メソッドの引数に、正規表現を表す文字列パターンregexを渡して、正規表現を保持するPatternクラスのオブジェクトを生成しています。

4行目にPatternオブジェクトのmatcher()メソッドの引数に、判定対象となる文字列strを渡してマッチングしています。ここで引数に渡された文字列が正規表現パターンとマッチしていたら、Matcherオブジェクトとして取得されます。

6行目のif文の条件でMatcherオブジェクトのfind()メソッドが呼び出されています。
find()メソッドは、マッチした文字列があればtrueを、マッチした文字列が無ければfalseを返します。

8行目では、マッチした文字列の取得を行っています。

このように正規表現をJavaプログラム内で使用できる形式に変換するPatternクラス、指定されたパターンを使ってターゲットの文字列に対して様々な操作を行うMatcherクラスのメソッドを使い、特定の文字の正規表現を行う事が出来ます。
これらを使い名前の一致やURL、E-mailアドレスのパターンを表現し、文字列検索や文字の置き換えなどを行っていく事が可能になるのです。

その他の代表的なメタ文字例

直前の表現1回以上の繰り返しにマッチする。
直前の表現0回か1回にマッチする。
行頭にマッチする。
[ ]の中で使用した場合には、「以外」という意味になる。
行末にマッチする。
orの意味になり、この文字の左か右の文字にマッチする。
{ } 直前の表現の繰り返し回数を表す。{n}はn回、{n,}はn回以上、{n,m}はn回以上m回以下の繰り返しにマッチする。
[ ] [ ]内の1文字にマッチする。
( ) 表現内でのグループを作る。また、マッチした値を順番に取り出すことができる。
\ メタ文字を単なる普通の文字とし検索したい場合、メタ文字の前にこの記号を前に付けることで、メタ文字としての機能を打ち消し、表示不可能な文字や特定の意味を持った文字の集合にマッチする。
例:”\+”,”\?” など

また、Javaでは “\” をエスケープ(特殊な記号の前に記述して後に続く文字を認識させるための記号)として利用することがあります。 “\” を用いた正規表現での特殊文字についても確認しておきましょう。

\c{x} CTRL-“x”に該当するコントロール文字にマッチします。
xは大文字のXでも構いません。
\f フォームフィードにマッチします。
\n ラインフィード(改行コード)にマッチします。
\r キャリッジリターン(改行コード)にマッチします。
\s ホワイトスペース(空白・ラインフィード・キャリッジリターン・タブ・垂直タブなど)にマッチします。(”[\f\n\r\t\v]”とした場合と同じです。)
\S ホワイトスペース以外の文字にマッチします。(”[^\f\n\r\t\v]”とした場合と同じです)
\t タブにマッチします。
\v 垂直タブにマッチします。
\x{n} 文字コード”n”で表される文字1文字にマッチします。(”\x20”はスペースになります。)

なお、ここでご紹介したものはほんの一部です。
気になったパターンがあったら”正規表現 パターン”等で検索をかけてみましょう。


カテゴリー: Java プログラム

Swiftにおける変数・定数の扱いについて

f91fad8e08b2e43f5d7fe7e698afc8d6_s

変数・定数とは?

「変数」「定数」とは、プログラムの中で利用する値(データ)を保管するためのもので、イメージとしては値を格納するための「箱」です。
何度も利用する値や、状況によって変動する値は、この「箱」を使って管理します。

img1

Java・C言語・PHP・JavaScriptなど、様々なプログラム言語がありますが、どのプログラム言語にも変数は存在しています。

変数と定数の違い

値の上書きが可能な箱のことを「変数」といいます。「変わる数値」ですね。
例)クイズの正解数、通行人の計測数、日直の名前

一度入れた値の上書きが出来ず、固定の値を入れる箱のことを「定数」といいます。「定まった数値」ですね。
例)円周率、消費税率、都道府県の名称

数学の授業では、値を文字に置き換えて計算する「代入」をやりました。

例) X = 3    ※Xに3を代入
   Y = 5    ※Yに5を代入

この代入の後では、Xは3として、Yは5として使っていくことができます。
「X × Y × X – X」の式は「3 × 5 × 3 - 3」として計算されますよね。

img2

変数はこの「X」や「Y」のようなものです。変数に値を格納することも同じく「代入」といいます。

Swiftでの変数・定数の作り方

では、Swiftでこの箱を作るための書き方をみていきましょう。

変数
  var 変数名:型
定数
  let 定数名:型

「var」は「変数を作ります!」という宣言文です。
「let」は「定数を作ります!」という宣言文です。

「変数名」「定数名」にはそれぞれ「箱の名前」が入ります。

「型」は英語に直すとtypeです。つまり、値の種類(データのタイプ)のことを表しています。「箱がどんな値を格納するのか」を設定するための情報です。

格納したい値が整数ならば「Int」、小数ならば「Double」、文字ならば「String」という型を使います。型は他にもさまざまな型が存在しています。

箱に設定したものと違う型のデータを箱に代入すると基本的にはエラーになるので注意しましょう。

変数の作成例
  var count:Int

※countという名前でInt型の値を入れる箱(変数)を作成

変数へ値の代入
  count = 5

※宣言した変数countに5を代入

定数の作成例
  let name:String

※nameという名前でString型の値を入れる箱(定数)を作成

定数へ値の代入
  name = “斎藤”

※宣言した変数nameに”斎藤”を代入

変数も定数も、宣言と同時に値を入れることができます。このときの値を初期値といいます。

変数の初期化
  var count:Int = 5

定数の初期化
  let name = “斎藤”

img3

型推論

変数や定数は型を指定して宣言する(作成する)と前述しましたが、宣言と同時に値を代入する場合は、型の指定を省略することができます。
これは、代入された値の種類からSwiftが型を推測して、変数の型を自動で設定してくれるためです。これを型推論といいます。

型推論を利用した変数宣言
  var count = 10

※型の指定の記述が省略されているが代入されている値が整数のため型を推測してInt型の変数にしてくれる

型推論は宣言と代入を同時に行う場合のみ行われます。宣言の記述と代入の記述を二行に分けて書く場合は使えませんので注意しましょう。


カテゴリー: Swift スマートフォン プログラム

C++の紹介【中級者向け】

work-731198_640

一般的に難しいといわれているC++を紹介した記事です。
基本文法や変数、オブジェクトの概念を習得済みの中級者向けの記事です。
今回は、特に習得率の高そうなJavaに置き換えながら、C++でのオブジェクトの扱いについて、注意をしなければいけない点について解説します。

クラスの定義

まずはクラスの定義からです。このクラスを使って話を進めて行きます。

#include<stdio.h>	// ①
using namespace std;	// ①

class Myclass{
    int value;		// ②
public:				// ③
    void setValue(int val) { value = val; };		// ④
    void printValue(){ printf("%d\n",value); };		// ④
};

①Javaでのimportとpackageのようなものです。
②C++のクラス内の定義はデフォルトでprivateです。
③この記述以降はpublicになります。
④C++ではこのような書き方でメンバ関数(メソッド)を定義することはあまりしませんが、Javaの表記に近づけるためにこのような書き方をしています。

main関数

次に、main関数です。

int main(void){
    Myclass m1,m2;		// ①
    m1.setValue(10);	// ②
    m2 = m1;			// ③
    m1.printValue();	// ④
    m2.printValue();	// ④

    m1.setValue(30);	// ⑤
    m1.printValue();	// ⑥
    m2.printValue();	// ⑦

    return 0;
}

①C++の場合はこの記述だけでオブジェクトが生成されます。
②オブジェクトm1のメンバ変数に10が代入されます。
③Javaではこのような記述をした場合、参照のコピーになりますが、C++ではオブジェクトの内容のコピーになります。
④③の代入の結果、m1,m2ともに10と表示されます。
⑤②と同じく、オブジェクトm1のメンバ変数に30を代入しています。
⑥m1は⑤の結果、30と表示されますが・・・
⑦m2は10と表示されます。これは、m1とm2が別のオブジェクトだからです。

ポインタ

Javaの参照のコピーのような動きにしたい場合はポインタを利用します。

int main(void){
    Myclass *p1 = new Myclass();	// ①-a
    Myclass *p2 = new Myclass(); 	// ①-b
    p1->setValue(10); 	// ②
    p2 = p1;			 // ③
    p1->printValue();	// ④
    p2->printValue();	// ④

    p1->setValue(30);	// ⑤
    p1->printValue();	// ⑥
    p2->printValue();	// ⑥

    return 0;
}

①C++でのインスタンス化の記述方法はいくつかありますが、Javaに近い形にするならこのような形でしょうか。2つのオブジェクトを生成し、それぞれ、p1,p2で扱おうとしています。
②ポインタ変数からメンバ関数(メソッド)を呼び出す際はアロー演算子(->)を使います。
③ここでp2に代入されるのはp1のアドレス情報です。p2も①-aで生成したオブジェクトを扱えるようになりました。
④p1,p2ともに10と表示されます。
⑤p1から30をセットしています。
⑥p1,p2ともに30が表示されます。

 
これでめでたしめでたし・・・とはいきません。
①-bで生成したオブジェクトはどこへ行ってしまったのでしょうか?
Javaにはメモリの自動開放機能がありますが、C++にはありませんので、メモリ上に残ってしまいます。
今回は短いプログラムで、すぐに終了するので害はありませんが、たとえば24時間動き続けるシステムで、繰り返しこれをやってしまうとどうでしょう。メモリが開放されずにどんどん消費され、システムが停止してしまうかもしれません。

このあたりがC++は難しいと言われている原因の一つだと思います。
他にも、他言語では自動でやってくれることを、C++では自分で書かなければいけないことがあります。しかし、「自分で記述することができる」とも言い換えられます。
細かなメモリ管理をしなければいけないが、細かなメモリ管理をすることができる。C++とはそんな言語なのです。


カテゴリー: C++ プログラム

ADOを使用してAccessデータをExcelに取り込む【中級者向け】

kave-638249_640

今回はADOを使用してAccessのデータをExcelに取り込む方法をご紹介します。
環境は、Access2010とExcel2010。
取り込むAccessのファイル名は「顧客管理.accdb」、保存先はCドライブの直下のAccessフォルダの中です(C:\Access\顧客管理.accdb)。

動作イメージは以下のとおりです。
Accessの「T_顧客リスト」テーブルのデータをExcelに取り込み、「顧客リスト」シートに表示させます。

Accessの「T_顧客リスト」テーブル
image1

Excelブックの「顧客リスト」シートimge2-3

ADO(ActiveX Data Object)とは

Accessだけでなく、Oracle、MySQLなどの様々なデータベースに対して共通の手法で操作が出来る仕組みです。ExcelからADOを使用するためには、参照設定が必要です。
事前準備としてVBEの「ツール」メニュー → 「参照設定」をクリックし、「参照設定」ダイアログボックスを表示し、「Microsoft ActiveX Data Objects X.X Library」にチェックを入れます(X.Xはバージョン)。

サンプルコード

Public Sub Access接続()
    Dim con As New ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim i As Integer
    
    con.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=C:\Access\顧客管理.accdb;"
            
    Set rs = con.Execute("SELECT * FROM T_顧客リスト WHERE 性別 = '女'")
    
    i = 2
    
    Do Until rs.EOF
        With Worksheets("顧客リスト")
            .Cells(i, 1).Value = rs!顧客ID
            .Cells(i, 2).Value = rs!顧客名
            .Cells(i, 3).Value = rs!ふりがな
            .Cells(i, 4).Value = rs!性別
            .Cells(i, 5).Value = rs!生年月日
        End With
        
        i = i + 1
        rs.MoveNext
    Loop
    
    rs.Close: con.Close
    Set rs = Nothing: Set con = Nothing
End Sub

コード解説

1. Accessデータベースに接続します。

Accessデータベースへ接続するには、ConnectionオブジェクトのOpenメソッドを使用します。接続文字列内の「Data Source」には接続するAccessファイルのパスを記述します。

con.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=C:\Access\顧客管理.accdb;"

2. ConnectionオブジェクトのExecuteメソッドを使用して、レコードセットを取得します。

今回は「顧客管理.accdb」の「T_顧客リスト」テーブルに対して、「性別」列の値が「女」の行を取得する問合せを発行しています。

Set rs = con.Execute("SELECT * FROM T_顧客リスト WHERE 性別 = '女'")

3. 問合せの結果をExcelの「顧客リスト」シートに出力します。

今回は2行目から出力します。

i = 2
    
    Do Until rs.EOF
        With Worksheets("顧客リスト")
            .Cells(i, 1).Value = rs!顧客ID
            .Cells(i, 2).Value = rs!顧客名
            .Cells(i, 3).Value = rs!ふりがな
            .Cells(i, 4).Value = rs!性別
            .Cells(i, 5).Value = rs!生年月日
        End With
        
        i = i + 1
        rs.MoveNext
    Loop

4. データベースを切断します。

Closeメソッドを使用し、レコードセットとConnectionオブジェクトを閉じます。
また、それぞれの変数に「Nothing」キーワードを代入し、オブジェクトへの参照を解除します。

rs.Close: con.Close
Set rs = Nothing: Set con = Nothing

以上、今回はADOを使用してAccessのデータをExcelに取り込む方法でした。


カテゴリー: Access VBA プログラム

iPhoneアプリ開発 Auto Layoutの使い方【初心者向け】

iphone-393080_640

Auto Layoutによる簡単なUIパーツの配置の仕方を初心者向けに紹介した記事です。
今回は、Auto Layout機能を使用して画像を画面の中心に配置する方法を紹介します。

環境(以下の環境で動作確認をしています)

  • OSX Yosemite
  • Xcode6.1

Auto Layoutとは

画面サイズや向きの違いにも、柔軟に対応したレイアウトを作成することができる機能のことです。

今回使用する画面レイアウト

dog1

Storyboardのデフォルトの配置位置について

今回の画面レイアウトはStoryboard上で下記のように「Image View」を使って画像を設定しています。
画面右上の画像の配置位置を見ると、x座標「0」 、y座標「0」 、Width(幅)「375」、Height(高さ)「400」で設定しています。Storyboardで設定したデフォルトの配置位置は絶対指定となります。

dog2
つまり、画面サイズが変わっても、横向きにしても同じ配置位置となり、見た目の印象や操作感が変わってしまう可能性があります。(画面サイズによっては、UIパーツが消えてしまうこともあります)

(横向きの例)
dog3
そこで、使用するのがAuto Layoutの機能です。

Auto Layoutの設定方法

今回は画面の中央に画像を配置する設定を行います。まずは、対象であるImage Viewを選択します。
Auto Layoutの設定は、Storyboardの画面右下にあるメニューから選択します。

dog4

色々な設定方法がありますが、今回は一番左にあるAlign(整列)設定を行います。ボタンをクリックすると色々な項目が出てきます。
Horizontal Center in ContainerとVertical Center in Containerの左側にあるボタンをチェックして、有効にします。
Horizontal Center in Containerは、選択したUIパーツとコンテナ(画面)との水平方向の中心位置を揃えます。
Vertical Center in Containerは、選択したUIパーツとコンテナ(画面)との垂直方向の中心位置を揃えます。
設定が終わったら、Add Constraintsのボタンをクリックして確定します。

確定をしても、Storyboard上では、画像が真ん中に配置されず、変わりに赤い点線や黄色い線が付きました。Auto Layoutの設定をしても、Storyboard上では自動で反映されないため手動で更新します。
※この段階でも、実行してアプリを起動すると、真ん中に表示されます。
更新するためには、画面右下にあるメニューの右から2つ目のボタンをクリックします。

dog5

表示された項目の中から、「Update Frames」を選択し、Alignで設定した内容をStoryboard上で反映させます。

赤い点線や黄色の線が消え、青い線だけが残ります。青い線はAuto Layoutの設定を表しています。

dog6
これで、Storyboard上でのレイアウトと、アプリ実行時のレイアウトが同じになります。そのままでも構わないのですが、編集が紛らわしいので忘れずに行いましょう。

最後に動作確認を行いましょう。

動作確認

dog7dog8

今回の設定で画像はどのような画面サイズであっても中心に配置されるようになりましたが、実際のアプリ開発での画面は様々なUIパーツで構成されることになるので、より複雑な設定が必要となります。詳しくは、iPhone講座の内容で説明しています。


カテゴリー: スマートフォン プログラム

JavaScriptで画像を変更する方法【初心者向け】

children-593313_640

今回は、JavaScriptで画像を変更する方法について解説します。
JavaScriptはWebブラウザとテキストエディタがあれば特別な開発環境がなくても開発することができます。

画像とボタンを表示させよう

まずは、画像とボタンを画面に表示しましょう。
画像を変更するimgタグにid属性を指定するところがポイントです。

<p>
    <img src="images/gu.jpg" alt="ジャンケン" id="janken" >
</p>
<p>
    <button type="button">グー</button>
    <button type="button">チョキ</button>
    <button type="button">パー</button>
</p>

グー

画像を変更する書き方

次に、画像を変更する書き方を説明します。
JavaScriptで画像を変更するときは、下記のように書きます。

document.getElementById('imgタグのid属性').src='画像のパス';

下記のようなimgタグの画像を「images/gu.jpg」から「images/choki.jpg」に変更したい場合は、「imgタグのid属性」に「janken」を指定し、「画像のパス」に「images/choki.jpg」を指定します。

<img src="images/gu.jpg" alt="ジャンケン" id="janken" >

document.getElementById('janken').src='images/choki.jpg';

ボタンをクリックした時に画像を変更しよう

JavaScriptでボタンをクリックした時に、画像を変更するなどの処理をさせるためには、下記のように書きます。

<button type="button" onclick="画像を変更するなどの処理">グー</button>

最後に、各ボタンをクリックした時に画像を変更できるように追記しましょう。

<p>
    <img src="images/gu.jpg" alt="ジャンケン" id="janken">
</p>
<p>
    <button type="button" onclick="document.getElementById('janken').src='images/gu.jpg'">グー</button>
    <button type="button" onclick="document.getElementById('janken').src='images/choki.jpg'">チョキ</button>
    <button type="button" onclick="document.getElementById('janken').src='images/pa.jpg'">パー</button>
</p>

入力できたら、各ボタンを押して確認してみましょう。

チョキ

パー

グー

今回は、ボタンをクリックした時に画像を変更する方法を紹介しましが、マウスがボタンの上に重なった時や、離れた時に画像を変更させることもできます。
ご自身で調べて、いろいろ試してみましょう。


カテゴリー: JavaScript プログラム

【プログラミング】Javacsript入門におすすめの本3選

programming-593312_640

Javascriptをwebサイトに活用するとサイトを訪れた時間に合わせて自動で挨拶文を表示してくれたり、プルダウンメニューを表示してサイト自体をコンパクトにしたりといったことができます。HTMLサイトでは静的な情報の表示となるのに対し、JSとも呼ばれるJavascriptを使用したサイトでは動的な情報の表示ができるのがメリットですね。
しかし、JSを使うにはプログラミングが必要になり、習得するのはなかなか大変です。そこで、入門者におすすめの本を3つ紹介します。

初心者にもわかりやすいJavascriptの本は!?

Javascript初心者がまず行うべきことはプログラミングの基礎をしっかりと学んで固めることでしょう。コア部分についてきちんと学んでおくと、専門用語が頻発しても理解しやすくなりますし、実際のプログラミングをスムーズに行う上でも役立ちます。コア部分は表現力が豊かな言語であるにも関わらず、シンプルなので入門書などを熟読して理解できるとすんなりとプログラミングができるようになるでしょう。
初心者の方の場合は、まずは入門書から入ることが大切で、読み進めながら実際にキーボードを入力すると理解が深まるのでは?
また、文字だらけでは理解に苦しむ方もいるかもしれませんので、図解入りの本を読むことで素早く理解できるかもしれませんね。

Javascript初心者向けの本3選

Javascriptをマスターしたい初心者におすすめなのが下記の3つの本です。

3ステップでしっかり学ぶ JavaScript入門 (今すぐ使えるかんたんプラス)

著者:大津 真
価格:2,570円
出版社:技術評論社
最もジャバスクリプト入門にふさわしいとして話題の一冊です。支持されているのは例題が実践活用できるような問題になっていることや、説明が明確になっているからです。まだ知識が無い方が基礎の基礎を学ぶためにはおすすめの一冊です。

JavaScriptの絵本

著者:アンク
価格:1,814円
出版社:翔泳社
初心者にとっては文字だけでは理解が難しいこともあるもの。そこで活用したいのがこの一冊です。図や表が用いられていますので、早く深く理解できる期待があります。基礎から応用までの解説が丁寧にされていますが、だからと言って深い知識を得られないということではありませんのでご安心を。

スタートアップHTML5

著者:笠原 一浩
価格:3,024円
出版社:ソフトバンククリエイティブ
HTMLの5入門書という位置づけですが、HTML5だけでなく、CSSやJavaScriptの解説もされています。JSの知識をある程度身に付けた上でさらに実践的な活用を目指す方に適しており、ステップアップしたい方は必読です。

まとめ

いかがでしたでしょうか。
JavaScriptを学ぶにはこれらの本を活用することが初心者には良いかもしれません。空き時間を有効活用して確実に学んでみましょう。
しかし、時間がない、独学では限界があると考える方もいるでしょう。そんな方におすすめなのがKENスクールです。こちらでは必要なスキルをしっかりと習得できるカリキュラムがあります。初心者もプロにするカリキュラムで話題になっています。
将来的にwebデザイナーとして働くことを考えるのであれば、入学を考えるのが良いかもしれませんね。


カテゴリー: Web プログラム

IT系資格でメジャーな資格まとめ

e99ab327553947b1b44ca71dcec95074_s

急成長という言葉が相応しいIT業界。
近年では優れたアイデアを具体的な形にしてユーザーの利便性の向上を図ることが求められています。世の中にこの業界が広まり始めた当初は、アイデアで勝負できましたが、現在ではそれを形にする技術力がなければチャンスを掴むことも活躍することも難しくなっています。

しかし、技術力を高めるためにはどのようにすれば良いのでしょうか?
その答えは難しいものではありません。より深い知識を得ることと、資格を取得することが第一歩です。
そこでIT分野で活躍するためのメジャーな資格をまとめました。

資格の必要性

IT業界では資格を持つことを重要視している企業が増えていますが、その理由の一つにグローバル化があります。海外に進出する企業もどんどん増えていますし、逆に海外から日本国内へとやってくる外国企業もたくさんあり競争が激化しています。そこで勝ち抜くためには何らかの強みを持つことが必要ですから重要視しているのです。

また、多くのIT企業では人材を採用するにあたり、できるだけ優秀な人材が欲しいと考えます。その際の指標の一つに資格があり、就職が有利に進む可能性が高くなります。
採用となって、いざ働くとなれば何らかの強みを持っている人材は重宝されますので、このような業界に進むためには予め関連するものを取得しておけば就職する際の武器となるでしょう。

IT系資格

IT分野で働きたいという場合に役立つ資格は次のようなものがあります。

Microsoft Office Specialist(マイクロソフト オフィス スペシャリスト)

マイクロソフト社のOffice製品の実務スキルを認定する試験で、別名MOSと呼ばれています。
業務上マイクロソフト社のアプリケーションを使用する頻度は高いです。
より深い知識を持っておくと個人のスキルアップにはもちろん、就職や転職においても有利になります。

シスコ技術者認定

世界共通の資格となっていて、シスコシステムズ社というネットワーク関連機器において世界で最も多くのシェアをされている企業が行う試験です。
この資格は5つの認定レベルと6つの分野で構成されており、その一つのCCNAを取得することはネットワーク技術 (TCP/IP) の基本的な力があることの証明と資格となります。

Sun Java認定資格

人気のプログラミング言語として昨今で多く用いられるのがJavaで、これはサン・マイクロシステムズ社により開発された言語です。その特徴がWindowsやUnixなどのOSが違っても使用できるのがメリットとして活用の場が広がっています。Java認定資格はキャリアアップはもちろんですが、就職や転職にも有利になりますし世界に通用する資格としてちゅうもくされています。

まとめ

IT分野での活躍をしたいと考えるのであれば、これらの資格は是非とも取得をしておきたいものです。いずれの資格も独学でやってやれないことはありませんが、より効率的に、より深く学び、しかも短期間でとなれば、やはり専門のスクールに入学することがおすすめです。
KENスクールであれば、これらの資格を取得するためのサポートを得られますし、しかも個別指導がありますので就職・転職に有利になります。
これからIT業界で働くことを希望するのであれば、まずはホームページを確認してみると良いでしょう。


カテゴリー: ネットワーク パソコン全般 プログラム 資格

システムエンジニアを目指す人必見!初心者向けガイド

keyboard-428326_640

正規雇用が難しい世の中になり、「将来役立つ何かを身につけたい」や「就活を視野に安定した収入が確保できる資格を取りたい」と考えている方も多いのではないでしょうか。人に必要とされる、やりがいのある仕事をしたいと考えている方も多いかもしれません。

さて、IT業界用語の「システムエンジニア」と「プログラマー」という言葉を耳にした事がある方も多いと思いますが、その違いをご存知ですか。

システムを設計し全体を把握管理し設計書を作る人がシステムエンジニアで、システムの設計書からプログラムを作る人がプログラマーと呼んでいます。
建設業で例えると、建築家と大工というイメージではないでしょうか。ここでは初心者向けのガイダンスとしてご活用いただければ幸いです。

システムエンジニアの仕事内容

システムエンジニアは「SE」とも呼ばれ、その仕事内容はシステム開発やソフトウェア開発の企画、設計をはじめ、クライアントとの折衝や制作の進捗管理まで、開発プロジェクト全般を把握し、プログラマーを管理しながら完成形を作り上げるというリーダー的存在です。
一般的に、PCに向かってひたすらお仕事をしている印象がありますが、クライアントのニーズに合わせ最適なシステムを開発する必要があり、まずクライアントの要望や現状の問題点を的確に捉えること、そしてハードウェア、ソフトウェアなどコンピュータ全般の知識やプログラミングのスキル、そして新しい提案をクライアントに説明するプレゼンテーション能力やコミュニケーション力も求められます。

具体的に開発された商品を目にする事は難しいですが、携帯電話の支払いシステム、コンビニのレジや銀行のATM、鉄道や飛行機の運航管理など、あらゆる分野でシステムエンジニアが開発した最新技術は日常生活の中で日々活躍しています。
IT化、情報化が進む現代社会では、どの分野においてもより高度なシステムや製品開発が求められており、システムエンジニアの分野は将来有望な職種と言えるでしょう。

システムエンジニアの必要な知識・スキル

システムエンジニアになる為に必要な資格はありません。
しかしながら、IT機器を駆使する仕事であるので、コンピューター全般に関する幅広い知識や専門的なスキルが必要となってきます。
また、システム開発のリーダーとして、コミュニケーション能力の高さも重要な資質として求められます。
さらには、クライアントへのプレゼンテーションから始まり、必ず発生するといっても過言ではないトラブル対応、問題解決能力が必要になってきます。

問題点をしっかりと見つけ出し、その解決策を見いだせる能力や、相手が求めているものを読みとれる能力が備わっていれば、実務がよりスムーズになり、信頼の厚いシステムエンジニアとして認められるようになります。
必要な知識・スキルは一言では表せませんが、専門的なスキルにとどまらない、社会人としての資質を問われる職業なのです。

とっておきたい資格

システムエンジニアがとっておきたい資格はいくつかあります。
IT系の関連資格として、経済産業省が実施する国家試験やマイクロソフトなどが主催する民間の資格など、様々な種類の資格試験が存在します。
中には、世界共通の資格として認定されていたり、公的な評価基準として定着している資格もあるため、取得しておくと就職や転職に有利になります。
IT系の専門学校や大学では、在学中にこうした資格を取得してから就職に臨むケースが一般的ですが、先にシステム開発会社などに就職し、入社後に資格取得を目指す人、またそれを必須としている企業もあります。

試験の種類や難易度も幅広くあるため、自分が目指したいと感じる目標を決めてチャレンジするとよいと思います。


カテゴリー: パソコン全般 プログラム

IT系エンジニアに求められるコミュニケーション能力とは?

【12-4】IT系エンジニアに求められるコミュニケーション能力とは_画像

技術のプロフェッショナルのエンジニアといえども、やはり仕事ではコミュニケーション能力が求められます。

具体的に言えば、クライアントのシステム開発とそのメンテナンスを請負う場合には、「クライアントの要望や、抱えている問題点を的確に捉え、それに対して、適切なシステム開発や改善をする論理的な対応能力」が必要とされます。また、自らアイデアを出して、クライアントにソリューションを提案する力も必要です。

つまり、エンジニアに必要とされるコミュニケーション能力とは、相手の要望を理解し、適切な対応をする、という社会人に共通して必要とされる能力がベースになっているのです。

そこで、「社会人基礎力」という基礎能力カテゴライズを参考にしながら、エンジニアに求められるコミュニケーション能力を考えてみたいと思います。

「社会人基礎力」とは?

「社会人基礎力」とは、経済産業省が提唱している、「職場や地域社会で多様な人々と仕事をしていくために必要な基礎的な力」のことです。具体的には、「前に踏み出す力」、「考え抜く力」、「チームで働く力」の3つの能力と、各能力を構成する合計12の能力要素から成り立ちます。
【12‐4】社会人基礎力
社会人基礎力とは

IT系エンジニアに求められる基礎力or足りない基礎力とは?

経済産業省が企業の人事部に対して、その職場で求められる「社会人基礎力」についてアンケート調査を行った結果、IT系職種に関して次のような報告があります。

● 3つの能力については、他の職種に比べて「考え抜く力」が高く求められている。一方で不足が見られるのは、「前に踏み出す力」と「チームで働く力」であり、不足の度合いは他職種の平均を上回っている。

● 12の能力要素については、課題発見力、想像力、状況把握力が他の職種よりも高く求められている。また、状況把握力、ストレスコントロール力については、他の職種よりも目立って不足が見られる。

また、社会人基礎力については、現役大学生が17の企業などの人事担当者にインタビューを行った際の様子が、経済産業省の資料「企業の人事のプロに聞く「社会人基礎力」インタビュー」にまとめられています。

このインタビュー中で、エンジニアのコミュニケーション能力に関して、ある大手情報通信企業の人事担当者が次のように述べています。

● システム開発プロジェクトでは、自社以外の様々な企業の人と一緒に、チームでシステムを作り、1年間ほどの時間をかけることも多い。

● プロジェクト開始段階では、クライアントが具体的なビジョンを持っていない場合もある。そのため、コミュニケーションを通して、クライアントが本当に望んでいることを うまく引き出していく能力が必要である。

● あるプロジェクトで、各メンバーが役割を分担し、各自がそのスキルを向上できる仕組みをつくったが、反発があった。しかし、メンバー間で丁寧にコミュニケーションを取るうちに、その仕組みが浸透しプロジェクトがうまくいった。このように、社会人の仕事には「正解」「不正解」はないので、どうやって解決策を見いだしていくか、工夫のしがいがある。

IT系エンジニアに必要な力

このような調査結果やインタビューから、チームで働くことが多く、積極的に解決策を見出していくことが仕事上求められるIT系エンジニアは、不足している「チームで働く力」や「前に踏み出す力」を満たすように、「社会人基礎力」を身に付ける必要があるといえるでしょう。

なお、「企業の人事のプロに聞く「社会人基礎力」インタビュー」は、IT系に限らず、就職活動を控えた方や社会人歴の浅い方には非常に参考になるのではないでしょうか。

 

photo credit: Victor1558 via photopin cc


カテゴリー: ネットワーク プログラム 就職・転職

独学のプログラムから始まった、大人気アプリ「Instagram」誕生ストーリー

【11-5】独学のプログラムから始まった、大人気アプリ「Instagram」誕生ストーリー

月間アクティブユーザー数1億5000万(2013年秋発表)を誇る大人気の写真加工アプリ「Instagram(インスタグラム)」。コダックインスタマチックポラロイドインスタントカメラの双方に敬意を払っているという正方形の画像が特徴的で、Instagramを使ったことがない人でもFacebookやTwitterでその作品は目にしたことがあるのではないでしょうか。そんな人気アプリの始まりが、なんと独学で学んだプログラミングだったことを知っていましたか?

本業の傍らで作られたプロトタイプ

Instagramを興したのは、Kevin SystromとMike Kriegerという二人の若者です。そもそもの発端はSystromが作成した「Burbn」というアプリで、そのプロトタイプの作成当時、Systromの本業はマーケティング業務でした。正式なエンジニアリングのトレーニング経験もなく、昼間の仕事の傍ら、夜間に独学でプログラミングを学んだというSystrom。

そうして作られたBurbnに興味を持った友人や投資家から資金を得た彼は、勤めていた職場を辞め、Burbnの開発に本腰を入れることになります。そしてその頃出会いBurbnに興味を持ったKriegerと共に起業へと踏み出すことになったのです。

ゼロから始める大英断から驚きのスピード公開へ

しかし実際世に出たのは、発端となった「Burbn」ではなく「Instagram」。どこで入れ替わったのでしょう?

「Instagram」といえば、スマートフォンで撮った写真をエフェクトで簡単に洒落た写真へと加工できる手軽さ、その反応をネットで共有できる楽しさが人気のアプリです。一方、当初開発していた「Burbn 」はまったくの別もので、Foursquare(SNSサービス)の要素とMafia Wars(人気のソーシャルゲーム)の要素を組み合わせたものだったといいます。写真をネットにアップロードする機能はあれど、「Instagram」最大の特徴ともいえる写真のエフェクト機能はなかったそうです。

そんなBurbnの開発を続け、iPhoneアプリとして完成させたSystromとKriegerですが、そのまとまりの悪い仕上がりから、「Burbnには余分な機能が多すぎる」と考え直し、一年近くも開発を続けてきたBurbnを諦める決断をします。

「再度ゼロからスタートする決定を下すのは難しいことだった」と後にSystrom自身が語るこの英断により生まれたのがInstagramです。Burbnから、写真を撮ってアップロードする機能、コメントする機能、「いいね!」を付ける機能以外のすべてをそぎ落とし、写真に特化したInstagramの開発に取り組んだのです。Burbn開発のための試行錯誤を経ていたとはいえ、Instagram自体の開発期間は僅か8週間というスピードで公開に漕ぎつけたというのも驚きのエピソードです。

破竹の勢いの快進撃

それからの快進撃は言わずもがな。2010年の10月にAppStoreに公開されたInstagramは、わずか1週間で10万ダウンロードを達成。年内には100万ダウンロードに到達するなどその人気は急速に広まっていきます。2012年4月には、Facebookによる10億ドルとも言われる巨額での買収が発表され、話題を呼びました。

独学で学んだプログラムから始まった、これぞアメリカンドリームなストーリー。普段何気なく使っている身近なアプリの舞台裏は、こんなにもドラマチックだったのです。

 

Photo: Some rights reserved by JD Hancock, flicker
photo credit: JD Hancock via photopin cc


カテゴリー: スマートフォン プログラム