Xcode開発環境をインストールしてみる (Mac)

iMacを購入してから2ヶ月ほど経つが、いろいろ忙しくて*1ほとんど触れられていない。 合間をみて少しずつ使ってみてはいるが、Windowsで普段意識せずにショートカットを多用しているせいか非常に使いづらい。Linux系のデスクトップのほうが数倍マシな感じがする。 いつになったらまともにMacを使いこなせるのやら …

とりあえず合間をみて開発環境を作っていこうと、Haskellの環境をつくることに。 MacHaskell PlatformをインストールするにはXcodeがまず必要だそうなので今回はXcodeのインストールだけしてみる。

Xcodeのインストール

まずはAppStoreからXcodeを探す。

f:id:FlyingHighAgain:20150214152941p:plain

入手ボタンを押す。

f:id:FlyingHighAgain:20150214152959p:plain

Apple IDでサインイン。

f:id:FlyingHighAgain:20150214153018p:plain

Xcodeが起動し初期メニューが表示される。

f:id:FlyingHighAgain:20150214153035p:plain

今回は以上。ほとんど中身のない記事ですみません。

*1:仕事やらPTAやら青少年育成やら…各種会議や行事がありやらなければいけないことが多くて気が休まらない状況が続いてまして。

Macパソコンを購入

長い間ブログの方が放置プレイ状態であったにも関わらず月間PVが1000を越えて何だか申し訳ない気持ちではあったのだが、昨日注文していたMacパソコンがようやく届いたので記念カキコ。

購入したのはiMac Retina 5Kディスプレイモデル

本当はMac Proが欲しかったのだが(あのかっこいい筺体とスパコン扱いとなる性能はめっちゃ魅力的)、フルスペックで購入すると100万を越えてくるのでMac初心者がいきなり購入するのは無謀かと思い留まり今回は断念。

もともとMacが欲しいなあと思ったキッカケは最近ネット上の開発技術系の記事や動画みてたらMac使用率が非常に高い(海外も含め)のに気づき、なんとなく開発とか快適そうだなあと思ってから。(実際は開発ツールXcodeを除けばWindows/Linuxで十分なんだろうけど。)

iMacでも十分良さそうだったので発売されたばかりのiMac Retina 5Kモデルで決断。

注文したはいいが、普段使ってないクレジットカードの決裁が上手くいかなかったようで(設定の上限金額で引っかかってた)、Apple Storeさんのほうからキャンセルをくらってしまい、再注文する羽目になったので当初より10日ほど遅れ昨日ようやく届いた。

さっそく使ってみる

届いた梱包から巨大な本体一体型のディスプレイとコンパクトなワイヤレスキーボードとマウスを取り出しスイッチオン!慣れない入力に戸惑いながらも初期設定を済ませるとiPhone5Sを巨大化したようなYosemiteの画面。少しいろいろアプリを起動して使い心地を確認。

最近ディスプレイの文字がかすみ目で見づらくて困っていたがのだが、さすがRetina。文字が綺麗で非常に見やすい。

Magic Mouseも画面スクロールやページの戻る・進むのやり方がわかると、これは便利。

1TBのフュージョンドライブ(SSD+HDD)なのだがハードディスク特有のカリカリという音はまだ聞いてない。ハードディスク領域を使い出したら音がするのだろうか?

基本的な操作方法がわからなくて戸惑うのは、LinuxAndroidiOSを初めて触った時も一緒だからそのうち慣れるだろう。

f:id:FlyingHighAgain:20141222000413p:plain

Windowsのインストール

やっぱりWindowsも使えないと不便かなと思い、予めWindows8.1とParallels DesktopというMacの定番らしい仮想マシンのソフトを用意しておいたのでインストールしてみた。

Bootcampを使っての直接起動とParallels DesktopにとるMac上からの起動を考えていたのだが、事前調査が甘くBootcampの使用にUSBメモリが必要なことが判明。外付けCD/DVDドライブでも大丈夫かな?と思ってためしてみたが、途中のWindows起動ディスクがうまく起動できず。ネットで調べてみたがAppleのページにはこういう状況が発生した場合USBメモリにISOイメージを取りましょう書いてある。手持ちのUSBメモリは4GBまでしかないし…こんな真夜中にUSBメモリを売っているお店なんて近くにないし…と考えているうちに

「そもそも、今まで何度もマルチブートにしてきたが、結局気に入った1つ以外使ってこなかったなあ」と考え直しBootcampを使った直接起動はやめることにした。

で、結局Windowsは仮想上にのみインストール。

ちょっとだけ使ってみたが、仮想上でも速さは全くもって問題なし。というか激速起動でクルクル回るアニメーションが1周するかしないうちに起動もログインもしてしまう。 (最初のうちだけなのかもしれなが)

f:id:FlyingHighAgain:20141222002222p:plain

ついでにUbuntuなども仮想上に入れてみた。

ちゃんと評価した訳ではないが、ちょっと使ってみた感じではParallels DesktopVirtual PCVMware Playerに比べるとホストOSとゲストOSの連携機能が強いような印象である。Virtual Boxなんかは使ったことがない。

f:id:FlyingHighAgain:20141222005237p:plain

まとめ

まだあと2、3ヶ月は仕事が忙しいので難しいかもしれないが はやくこのMacパソコンをメインPCにできるよう早く慣れなくちゃ。 あとは開発評価用のPCとしていろいろインストールしていかなくては。 とりあえず次回はXcodeをいれたりSwiftをつかってみたりという記事が書ければよいかな。

Markdown記法に移行してみる

最近は、世界的にいろいろな投稿サイト(ここのはてなブログも)で記事を投稿するのにMarkdownという記法が採用されてきてるのようで、そろそろ身につけたいなあと。

あと、普段テキストエディタでメモしたりすることが多いので、Markdown記法で書いておけば後で見栄えよく印刷できていいなあと思ってみたり。

で、なにかよいエディタかビューアがないか探してみたところ、下記の記事を見つけた。

Windows, Mac, Linuxで使えるMarkdownエディタ、HarooPadを使う(Qiita)

自宅ではWindowsマシンとLinuxマシンを併用しているし、そろそろMacのパソコン欲しいなあと思っていたので、ちょうどよさそう。

HarooPadを試してみる

下記サイトからダウンロード http://pad.haroopress.com/user.html

LinuxのほうはDebian PackageをダウンロードしファイルをクリックしあっさりインストールOK。最初から日本語化されておりフォントも問題なし。

Windowsのほうもインストーラを実行すればインストールOK。同じく最初から日本語化されているが、フォントが汚いので上記の記事を参考にフォントを変更した。

画面はそれぞれこんな感じ。

f:id:FlyingHighAgain:20140716020338p:plain

f:id:FlyingHighAgain:20140716020024p:plain

感想・まとめ

HarooPad自体は非常に快適で使いやすく外観も古臭くなくて良い感じ。左のサイドバーにリファレンスが表示できるのも初心者にありがたい。とりあえずしばらく使ってみることにしよう。(ただ、これって韓国のアプリなのね)

また、普段のメモはテキストファイルではなくMDファイルに変えていこうと思う。

いろいろなプログラミング言語でラムダ式

最近いろいろ言語を触っていたら混乱してきたのでラムダ式だけにフォーカスして比較してみる。(随時更新)

やりたいことは次のようなラムダ式
(\lambda x.x+2)3

ソースコードはこちらからもご覧いただけます。
https://github.com/FlyingHighAgain/Lambda

C#

// Lambda.cs

using System;

class Lambda
{
    static void Main (string[] args)
    {
        Console.WriteLine (
                ((Func<int, int>)(x => x + 2)) (3)
              );
    }
}

C++

// Lambda.cpp

#include <iostream>

using namespace std;

int main()
{
    cout <<  ( [] (int x) { return x + 2; } )(3)  << endl;
}

CoffeeScript

# Lambda.coffee

console.log(
    ((x) -> x + 2) 3
  )

Haskell

-- Lambda.hs

main = print $ (\x -> x + 2) 3

Java

// Lambda.java

import java.util.function.Function;

class Lambda {
    
    public static void main(String[] args) {
        
        System.out.println(
            ((Function<Integer,Integer>)(x -> x + 2)).apply(3)
          );
        
    }
}

Scala

// Lambda.scala

object Lambda {
  def main(args: Array[String]) {

    println(
        ((x: Int) => x + 2)(3)
      )

  }
}

Scheme

; Lambda.scm

(display ((lambda (x) (+ x 2)) 3))
(newline)

いろいろなプログラミング言語でHello World(コンソール編)

いろいろなプログラミング言語に触れてみる。(随時更新)

ソースコードはこちらからもご覧いただけます。
https://github.com/FlyingHighAgain/HelloWorld

Ada

ソース(hello.adb)

-- hello.adb

with Ada.Text_IO; use Ada.Text_IO;
procedure Hello is
begin
	Put_Line("Hello, World!");
end Hello;

コンパイルと実行結果

$ gnatls -v

GNATLS 4.6
Copyright (C) 1997-2010, Free Software Foundation, Inc.

$ gcc -c hello.adb
$ gnatbind hello
$ gnatlink hello

$ ./hello
Hello, World!

Assembler(x86)

ソース(hello.asm)

; hello.asm

section	.text
	global	_start

_start:				; entry point
	mov	edx,len
	mov	ecx,msg
	mov	ebx,1		; file descriptor(stdout)
	mov	eax,4		; system call number (sys_write)
	int	0x80;		; system call

	mov	eax,1		; system call number (sys_exit)
	int	0x80		; system call

section	.data

msg	db	'Hello, World!',0xa
len	equ	$ - msg

コンパイルと実行結果

$ nasm -v
NASM version 2.09.10 compiled on Oct 17 2011

$ nasm -f elf hello.asm
$ ld -s -o hello hello.o

$ ./hello
Hello, World!

C

ソース(hello.c)

/* hello.c */

#include <stdio.h>

int main()
{
	printf("Hello, World\n");
	return 0;
}

コンパイルと実行結果

$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gcc -o hello hello.c

$ ./hello
Hello, World

C#

ソース(hello.cs)

// hello.cs

using System;

class HelloWorld
{
	[STAThread]
	static void Main(string[] args)
	{
		Console.WriteLine("Hello, World!");
	}
}

コンパイルと実行結果

$ mcs --version
Mono C# compiler version 2.10.8.1
$ mono --version
Mono JIT compiler version 2.10.8.1 (Debian 2.10.8.1-1ubuntu2.2)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com

$ mcs hello.cs

$ mono hello.exe
Hello, World!

C++

ソース(hello.cpp)

// hello.cpp

#include <iostream>

int main()
{
	std::cout << "Hello, World!" << std::endl;
	return 0;
}

コンパイルと実行結果

$ g++ --version
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ g++ hello.cpp -o hello

$ ./hello
Hello, World!

COBOL

ソース(hello.cob)

123456*8901234567890123456789012345678901234567890
      * hello.cob
       IDENTIFICATION  DIVISION.
       PROGRAM-ID.     HELLO.
       PROCEDURE       DIVISION.
           DISPLAY "Hello, World!".
           STOP   RUN.

コンパイルと実行結果

$ cobc -version
cobc (OpenCOBOL) 1.0.0
Copyright (C) 2001-2007 Keisuke Nishida
Copyright (C) 2007 Roger While

$ cobc -x hello.cob

$ ./hello
Hello, World!

CoffeeScript

ソース(hello.coffee)

# hello.coffee

hello = ->
	console.log("Hello, World!")

hello()

コンパイルと実行結果

$ coffee -version
CoffeeScript version 1.2.0

$ coffee -c hello.coffee

$ node hello.js
Hello, World!

D

ソース(hello.d)

// hello.d

private import std.stdio;

void main()
{
	writeln("Hello, World!");
}

コンパイルと実行結果

$dmd
DMD32 D Compiler v2.060
Copyright (c) 1999-2012 by Digital Mars written by Walter Bright
Documentation: http://www.dlang.org/index.html
...

$ dmd hello.d

$ ./hello
Hello, World!

Erlang

ソース(hello.erl)

%% hello.erl

-module(hello).
-export([start/0]).
start() -> io:fwrite("Hello, World!\n").

コンパイルと実行結果

$ erl -version
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 5.8.5

$ erlc hello.erl

$ erl -noshell -s hello start -s init stop
Hello, World!

Fortran

ソース(hello.f90)

! hello.f90

PROGRAM HELLO
	PRINT *, 'Hello, World!'
END PROGRAM

コンパイルと実行結果

$ gfortran --version
GNU Fortran (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.

GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Fortran
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING

$ gfortran -o hello hello.f90

$ ./hello
 Hello, World!

Go

ソース(hello.go)

// hello.go

package main

import "fmt"

func main() {
	fmt.Print("Hello, World!\n")
}

コンパイルと実行結果

$ go version
go version go1

$ go build hello.go

$ ./hello
Hello, World!

Haskell

ソース(hello.hs)

-- hello.hs

main=putStrLn "Hello, World!"

コンパイルと実行結果

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.4.1

$ ghc -o hello hello.hs
[1 of 1] Compiling Main             ( hello.hs, hello.o )
Linking hello ...

$ ./hello
Hello, World!

Io

ソース(hello.io)

// hello.io

"Hello, World" println

実行結果

$ io_static --version
Io Programming Language, v. 20110905

$ io_static hello.io
Hello, World

Java

ソース(Hello.java)

// Hello.java

public class Hello {
	public static void main(String[] args) {
		System.out.println("Hello, World!");
	}
}

コンパイルと実行

$ javac -version
javac 1.8.0

$ javac Hello.java

$ java Hello
Hello, World!

JavaScript

ソース(hello.js)

// hello.js

hello = function() {

  if (typeof console === "object") {
    console.log("Hello, World!");
  } else {
    print("Hello, World!");
  }

};

hello();

実行結果

$ rhino hello.js
Hello, World!

$ node hello.js
Hello, World!

OCaml

ソース(hello.ml)

(* hello.ml *)

print_string "Hello, World\n"

コンパイルと実行結果

$ ocamlc -v
The Objective Caml compiler, version 3.12.1
Standard library directory: /usr/lib/ocaml

$ ocamlc -o hello hello.ml

$ ./hello
Hello, World

Pascal

ソース(hello.pas)

{ hello.pas }

program hello;

begin
	WriteLn('Hello, World!');
end.

コンパイルと実行結果

$ fpc hello.pas
Free Pascal Compiler version 2.4.4-3.1 [2012/01/04] for i386
Copyright (c) 1993-2010 by Florian Klaempfl
Target OS: Linux for i386
Compiling hello.pas
Linking hello
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
7 lines compiled, 0.0 sec 

$ ./hello
Hello, World!

Prolog

ソース(hello.pl)

/* hello.pl */

:- initialization(main).
main :- write('Hello, World!'), nl, halt.

コンパイルと実行結果

$ gplc --version
Prolog compiler (GNU Prolog) 1.3.0
By Daniel Diaz
Copyright (C) 1999-2007 Daniel Diaz
GNU Prolog comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Prolog
under the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING.

$ gplc hello.pl

$ ./hello
Hello, World!

R

ソース(hello.r)

# hello.r

print("Hello, World!")

実行結果

$ R --version
R version 2.14.1 (2011-12-22)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: i686-pc-linux-gnu (32-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License version 2.
For more information about these matters see
http://www.gnu.org/licenses/.

$ R -q -f hello.r
> # hello.r
> 
> print("Hello, World!")
[1] "Hello, World!"
> 
> 

Ruby

ソース(hello.rb)

# hello.rb

puts "Hello, World!"

実行結果

$ ruby --version
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]
$ ruby hello.rb
Hello, World!

Scala

ソース(hello.scala)

// hello.scala

object HelloWorld {
	def main(args: Array[String]) {
		println("Hello, World!")
	}
}

コンパイルと実行結果

$ scalac -version
Scala compiler version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL

$ scalac hello.scala

$ scala HelloWorld
Hello, World!

Scheme

ソース(hello.scm)

;hello.scm

(display "Hello, World!")
(newline)

実行結果

$ gosh -V
Gauche scheme shell, version 0.9.1 [utf-8,pthreads], i686-pc-linux-gnu
$ gosh hello.scm
Hello, World!

Smalltalk

ソース(hello.st)

"hello.st"

Transcript show: 'Hello, World!'; cr

実行結果

$ gst --versionGNU Smalltalk version 3.2.4
Copyright 2009 Free Software Foundation, Inc.
Written by Steve Byrne (sbb@gnu.org) and Paolo Bonzini (bonzini@gnu.org)

GNU Smalltalk comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Smalltalk under the terms of the
GNU General Public License.  For more information, see the file named
COPYING.

Using default kernel path: /usr/share/gnu-smalltalk/kernel
Using default image path: /usr/lib/gnu-smalltalk

$ gst hello.st
Hello, World!

Visual Basic.net

ソース(hello.vb)

' hello.vb

Imports System

Module HelloWorld
	Sub Main()
		Console.WriteLine("Hello, World!")
	End Sub
End Module

コンパイルと実行結果

$ vbnc hello.vb
Visual Basic.Net Compiler version 0.0.0.5943
Copyright (C) 2004-2010 Rolf Bjarne Kvinge. All rights reserved.

Assembly 'hello, Version=0.0, Culture=neutral, PublicKeyToken=null' saved successfully to '/HelloWorld/VisualBasic.NET/hello.exe'.
Compilation successful
Compilation took 00:00:01.0953170
$ mono hello.exe
Hello, World!

いろいろなプログラミング言語でFizz Buzz

いろいろなプログラミング言語FizzBuzzを書いてみる。(随時更新 比較的慣れた言語から)
言語的な比較をするだけなので凝ったコードは書きません。

ソースコードはこちらからもご覧いただけます。
https://github.com/FlyingHighAgain/FizzBuzz

C

/* fizzbuzz.c */

#include <stdio.h>

int main()
{
  int i;
  for (i = 1; i <= 100; i++) {
    if (i % 3 == 0 && i % 5 == 0) {
      printf("%s\n", "FizzBuzz");
    } else if (i % 3 == 0) {
      printf("%s\n", "Fizz");
    } else if (i % 5 == 0) {
      printf("%s\n", "Buzz");
    } else {
      printf("%d\n", i);
    }
  }

  return 0;
}

C#

// FizzBuzz.cs

using System;

class FizzBuzz
{
  static void Main(string[] args)
  {
    for (int i = 1; i <= 100; i++)
    {
      if (i % 3 == 0 && i % 5 == 0)
      {
        Console.WriteLine("FizzBuzz");
      }
      else if (i % 3 == 0)
      {
        Console.WriteLine("Fizz");
      }
      else if (i % 5 == 0)
      {
        Console.WriteLine("Buzz");
      }
      else
      {
        Console.WriteLine(i);
      }
    }
  }
}

Linq

// FizzBuzz2.cs

using System;
using System.Linq;

class FizzBuzz2
{
  static void Main(string[] args)
  {
    var fizzbuzz = Enumerable.Range(1, 100)
      .Select(num =>
      {
        if (num % 3 == 0 && num % 5 == 0)
        {
          return "FizzBuzz";
        }
        else if (num % 3 == 0)
        {
          return "Fizz";
        }
        else if (num % 5 == 0)
        {
          return "Buzz";
        }
        else
        {
          return num.ToString();
        }
      });

    fizzbuzz.ToList().ForEach(Console.WriteLine);
  }
}

CoffeeScript

# fizzbuzz.coffee

console.log(
  if i % 3 is 0 and i % 5 is 0 then "FizzBuzz"
  else if i % 3 is 0 then "Fizz"
  else if i % 5 is 0 then "Buzz"
  else i)  for i in [1..100]

Haskell

-- fizzbuzz.hs

fizzbuzz n = 
  map (\x -> 
    if       x `mod` 3 == 0 && x `mod` 5 == 0 then "FizzBuzz"
    else if x `mod`  3 == 0 then "Fizz"
    else if x `mod`  5 == 0 then "Buzz"
    else                          (show x))
  [1..n]
                     
main = print $ fizzbuzz 100

Java

// FizzBuzz.java

public class FizzBuzz {

  public static void main(String[] args) {

    for (int i = 1; i <= 100; i++) {
      if (i % 3 == 0 && i % 5 == 0) {
        System.out.println("FizzBuzz");
      } else if (i % 3 == 0) {
        System.out.println("Fizz");
      } else if (i % 5 == 0) {
        System.out.println("Buzz");
      } else {
        System.out.println(i);
      }
    }

  }
}

JavaScript

// fizzbuzz.js

for (i =0; i < 100; i++) {
  console.log(
    function(x) {
      if (x % 3 === 0 && x % 5 ===  0) {
        return "FizzBuss";
      } else if (x % 3 === 0) {
        return "Fizz";
      } else if (x % 5 === 0) {
        return "Buzz";
      } else {
        return x;
      }
  }(i));
}

Ruby

# fizzbuzz.rb

(1..100).each do |num|
  if num % 3 == 0 && num % 5 == 0
    puts "FizzBuzz"
  elsif num % 3 == 0
    puts "Fizz"
  elsif num % 5 == 0
    puts "Buzz"
  else
    puts num
  end
end

Scala

// fizzbuzz.scala

(1 to 100).map(x => (x % 3, x % 5) match {
  case (0, 0) => "FizzBuzz"
  case (0, _) => "Fizz"
  case (_, 0) => "Buzz"
  case _      => x
}).foreach(println)

Scheme

; fizzbuzz.scm

(for-each print
  (map
    (lambda (x)
      (cond
        ((and 
          (= (modulo x 3) 0)
          (= (modulo x 5) 0)) "FizzBuzz")
        ((= (modulo x 3) 0)   "Fizz")
        ((= (modulo x 5) 0)   "Buzz")
        (else x)))
    (iota 100 1)))

AndroidアプリでHello World(Unity編)

クロスプラットフォーム開発でゲームを作る場合、Unityとかいう凄いツールがあるらしい。
デモ動画を見てもとても自分にはできね~と尻込みするレベルなのだが、せっかくフリーで使うことができるし、ほんの触りだけでもチャレンジしてみる。

今回のソースはこちら
https://github.com/FlyingHighAgain/HelloWorld-Unity-Android

Unityのインストール

このあたりからダウンロードする。
http://japan.unity3d.com/unity/download/

f:id:FlyingHighAgain:20140629120638p:plain

インストールして起動するとアクティベーションの画面が表示される。
ここでは真ん中の「Activate the free version of Unity」にチェックを付ける。

f:id:FlyingHighAgain:20140629120815p:plain

Unity用のアカウント作成

f:id:FlyingHighAgain:20140629121324p:plain

あといくつかアンケートに答える。

登録したメールに確認メールが届くのでリンクをクリックすれば登録完了。

f:id:FlyingHighAgain:20140629120838p:plain

Hello Worldプロジェクトの作成

Unityを起動するとプロジェクトを開くか新規作成するか訊かれるので[Create New Project]タブのほうで適当にプロジェクトロケーションを指定。
その下のインポートするパッケージは今回はチェックなし。
3Dにするか2Dにするかは、せっかくなので3Dを選択。
[Create]ボタンを押すとプロジェクトが作成される。

f:id:FlyingHighAgain:20140629121938p:plain

全く使い方なんてわからないながら、適当にメニューの[GameObject]-[Create Other]-[3D Text]を選択。文字は最初から"Hello World"となっているのでそのままで。
Main Cameraを選択するとカメラビューが表示されるのでそれを見ながら、テキスト位置やカメラアングルを少し調整。
保存する。ファイル名はここでは「hello.unity」とする。

f:id:FlyingHighAgain:20140629123246p:plain

メニューの[File]-[Build Settings...]を選択。

[Add Current]ボタンを押し、先ほど作成したhello.unityを追加する。
またPlatformでは「Android」を選択し[Switch Platform]ボタンを押しAndroidに切り替え。

f:id:FlyingHighAgain:20140629124737p:plain

また[Player Settings...]ボタンを押すと、メイン画面のInspectorウィンドウに[Player Settings]というのが表示されるので、[Build Identifier]というところだけは適当なパッケージ名へ変更しておく。

f:id:FlyingHighAgain:20140629124824p:plain

Unityアプリのビルドと実行

さきほどの[Build Setting]画面の[Build]ボタンを押してビルドしてみる。
途中、Android SDKのパスを求められた場合は、そこでSDKをインストールしたパスを指定るす。

と、ここで下記のビルドエラーが発生。

Error building Player: Win32Exception: ApplicationName='C:/android-sdks\tools\zipalign.exe', CommandLine='4 "C:\HelloUnity\Temp/StagingArea/Package_unaligned.apk" "C:\HelloUnity\Temp/StagingArea/Package.apk"', CurrentDirectory='Temp/StagingArea'

zipalign.exeというコマンドが実行に失敗しているらしい。
調べてみるとそもそもメッセージの場所のtoolsフォルダ内にzipalign.exeという実行ファイルがない。
どこにあるのだ?と調べてみるとSDKフォルダのbuild-tools\19.1.0にあった。
ほかに良い方法がありそうだが、ここは迷わずにtoolsフォルダへコピーしてやった。

再度buildをしてみると、無事[Done]と表示され、apkファイルが作成された。

次はいよいよ実行してみる。
実機(Nexus7)をUSBで繋ぎ、先ほどの[Build Setting]画面の[Build And Run]ボタンのほうをクリック。
パッケージの転送・動作は無事成功。

なんとも味気ない画面ではあるが、スクリーンショットはこんな感じ。

f:id:FlyingHighAgain:20140629131641p:plain

今回はここまで。