2月の備忘録

 

書き始めも日を跨ぎ、3月になってしまっているが、

2月最後の2日間に自分にとって、大事にすべき考えや思いに改めて気付くことができたので、そのメモであり、雑記。

 

大きく3つある。

一つはそばを食べたこと。

上司から1週間ほど、自分なりには開発には集中していたつもりだったが元気がなく、モチベーションが下がっているように見られていた。

もちろん自分ではそんなつもりではないにしろ、なにぶん心の変動が、表情や態度に出やすいのでとても気を使わせてしまったようである。

これから気をつけていきたいことは、

  • 仕事を楽しむこと
  • 周りとのコミュニケーションを明るくとること
  • 成果を出すために一瞬の恥を偲び、時間を大切にすぐに疑問を解消すること

に尽きる気がする。

一生、とは言うつもりはないが、どこまでもついていきたいと思える上司で本当に良かった。

 

二つ目は友人の境遇を聞き、相談に乗ったこと。

いかに自分が恵まれていてラッキー、で数ある選択肢の中から自分にとってのみ都合の良いことだけを考えているのかを悟った気がする。

いつまでたっても自己中心的な性格は治らなくて、一つのことだけを考えると周りがみえなくなってしまう。

切磋琢磨できる友人を持っていることに感謝しつつ、改めて、覚悟を持って取り組み、目的を達成するためにただ一心不乱に脇目も振らず走り続けるのみ。

 

最後は、某エンジニアの記事を読んだこと。

medium.com

この文章にある一節を引用します。

プログラミングはソフトウェアの設計、すなわちデザインすることだ。デザインとは見た目を定義することだけを指していない。期待通りにソフトウェアが動くようにプログラミングすることもデザインだ。それは決して単純労働や、ルーチンワークでもない。

 

 僕がなぜ、エンジニアを目指しているのか、最近は正直わからずにいて、日々漫然として過ごしタスクに追われるだけでした。

 

 僕はもともと何かやりたいことがあった人間ではないが、様々な人や環境に巡り会う中で、エンジニアリングに興味を持って、一流のエンジニアを目指すようになった。しかし、エンジニアが何をするのかということを本質的に考えていただろうか。

 ただ単純にコードを書いてリリースして、自分の技術力をあげて、独り立ち出来るようんいなりたい、なんてなんとなっく与えられ、、なんとなく選んだ道を歩いていくようでしたが、なぜかこの文章に救われた思いがあり、自分を正当化してくれたような、少し、認めてもらえたような気にもなった。

 「デザイン」その言葉が、春風のように、心の窓から爽やかに通り抜けていくようなその感情は僕がそれを心のどこかで求めていたからだろう。もの、こと、サービス、目に見えるもの、見えないもの、人が作り出すものも、自然に出来上がったものも、何かしら、誰かしらの意図や思惑が入り乱れて、誰かの意思によって作り出され、人知れず出来上がっていて、この世の全てに理由があるように、僕らエンジニアが作るものの些細で目に見えない部分でも事細かに設計を行うのは、まるで自然の摂理に則るかのように、大自然の中で大きな法則に則り生き過ごしていくようなものである。

 

意味不明な文章になってしまった。

 

これら以上のことを、自分は哲学として、教義として、自覚が足りていなかったように思う。

忘れてはいけないし、忘れたくない。常に心がけて行動していたい。

 

まとまりのない文章だけれども、後日、もしくは数年後にこのブログが残っていて、読み返す日が来た時に、この日があったからここまでこれた、と言えますように。

SwiftのenumとFailable Initializers

基本的なenumの作り方は以下。

enum CoffeeShop {
  case starbucks
  case doutor
  case tullys
}

let shop1 = CoffeeShop.starbucks
//  starbucks

何かのデータから数字をもらって、値を返すようなことがしたければ、 これにIniitializerをつけて以下のようにできる。

enum CoffeeShop {
  case starbucks
  case doutor
  case tullys

  init(id: Int) {
    switch id {
    case 0: self = .starbucks
    case 1: self = .doutor
    case 2: self = .tullys
    default: self = .starbucks
    }
  }
}

let shop2 = CoffeeShop(id: 1)
// doudor

この場合switch文は考慮されうる範囲(idに0, 1, 2以外のものが来た場合)を全て許容しなければならないのでdefaultが必要になる。

let shop2 = CoffeeShop(id: 10)
// starbucks

しかし、基本的にdefaultをstarbucksとしておくことは、イレギュラーだと考えられるので、Failable Initializersというものをつかう。

enum CoffeeShop {
  case starbucks
  case doutor
  case tullys

  init?(id: Int) {
    switch id {
    case 0: self = .starbucks
    case 1: self = .doutor
    case 2: self = .tullys
    default: return nil
    }
  }
}

let shop2 = CoffeeShop(id: 100)
// nil

これは、初期化に失敗できるイニシャライザで失敗した時、今回の場合だと想定していない数字が来た時に return nilnilを返すことで結果がないことを明示できる。

意外と便利で今後活用していく予定です。