パターン一覧

ダメなエンジニアを見分ける簡単な方法

エンジニアと会話する際には、新しい用語を積極的に使ってみましょう。
「うちは今、”ふぃんてっく” 系の事業を模索しているんだよね」とか。

勿論、相手が知らないとしても、それはいいんです。IT用語は日々増えていると言っても過言ではありません、偶々知らなかったという事はよくあります。問題なのはリアクションですから。

リアクションの想定ケースは以下の4ケース

1.「ああ FinTech ですか、うちもプランニングには入っています」という感じで既知のパターン

2.「ああ”ふぃんてっく”ですか、それはいいですね」と調子は合わせるけど、知ったか振りのパターン

3.「”ふぃんてっく”って?。。。なんだ、それならそう言えばいいのに」と、新語を受け入れないパターン

4.「”ふぃんてっく”って?。。。なるほど、そういう言葉があるのですね」と、新語を素直に受け入れるパターン

既知の場合は勿論良いとして、ケース4の未知の新語を取り込もうとするエンジニアなら将来性があります。

問題なのは残った2ケース。知ったか振りと新語を拒否するエンジニアはNG。将来性ありません。IT業界は、かなり発達してきたとはいえ、私はまだまだ入口に入っただけで、これからも発達し進化すると思っています。今後も次々に新たなコンピュータ言語も登場するでしょう。

そのような業界に身を置いているのに、知識欲が無いエンジニアは現状が成長の限界点という事です。

あなたがもし、新語を拒否するエンジニアと会った際は、そういうレベルのエンジニアなんだと思ってください。この見分け方はほぼ的中しています。

ちなみに FinTech とは、 Financial Technology を略したもので、金融を絡めたIT技術という意味で使われます。IT用語は「クラウド」もそうですが、往々にして定義が緩いので、なんとなくそういう系という程度で絡めても間違いではありません。


Swift 3 基本言語仕様

今まで Objective-C で iOSアプリを開発していましたが、Apple社の方針的にも、そろそろ Swift へ移行する時期かも。
ということで、Swift 言語仕様のメモをここに綴ります。

文字列中に変数を展開する

// シンプルなパターン
let foo = "新幹線"
let bar = "東海道\(foo)"
print(bar) // 東海道新幹線

// 書式を使うパターン
let foo = 1
let bar = String(format: "番号=%03d", foo)
print(bar) // 番号=001

現在の時刻を取得する

// ローカル日時
let date = Date()
let cal = Calendar.current
let year = cal.component(.year, from: date)
let month = cal.component(.month, from: date)
let day = cal.component(.day, from: date)
let hour = cal.component(.hour, from: date)
let min = cal.component(.minute, from: date)
let sec = cal.component(.second, from: date)
let nanosec = cal.component(.nanosecond, from: date)
let wday = cal.component(.weekday, from: date) // 1=日曜日
print(String(format: "%d/%02d/%02d %02d:%02d:%02d.%d %d", year, month, day, hour, min, sec, nanosec, wday))
// 2017/01/27 21:13:48.241433024 6

// Unix epoch time (UTCでの1970年1月1日午前零時からの秒数)
let nowsec = time(nil)
print(nowsec) // 1485518007

関数コール

//
// _ を付加するとコール時の引数名を省略できる
//
func foo(_ bar: Int){
    print(bar)
}

foo(50) // bar の記述は不要

//
// 複数の戻り値(タプル)
//
func foo() -> (apple: Int, banana: Int) {
 let apple = 10
 let banana = 20
 return (apple, banana)
}

var ret = foo()
print(ret.apple, ret.banana) // 10 20

クラス

//
// イニシャライザ(コンストラクタ)
//
class Foo {
 var apple = 0
 var banana = ""
 init(apple: Int, banana: String) {
   self.apple = apple
   self.banana = banana
 }
}

let foo = Foo(apple: 10, banana: "XYZ")
print(foo.apple, foo.banana) // 10 XYZ