僕がiOSエンジニアという仕事を続ける理由

僕は結構仕事を変わってきましたし、大学卒業から数えて平均すると1年毎に仕事が変わっています。

それだけをみたら結構な変人の部類だと思っています。

でも、それでも仕事でやっていることは「iOSエンジニア」という軸をブレさせたことは一度もありません。

今日は、なんで僕がiOSエンジニアと言う仕事を続けているのか、それについて書きたくなったので勝手に書きます。

システムが好きです

僕は、システムというものが大好きです。

大きなものでいうとプラントを健全に運営し続けるプラントシステムや、Facebookなどの大規模Webサービス、情報から離れた視点でいうと国家ももちろんシステムでしょう。より小さい単位で言い換えるなら家族もシステムでしょうし、恋人同士もある程度システムという側面を持つことは確かなのではないでしょうか。

ここで言うシステムとは、「情報を保持し、情報に基づいた意思決定を行う、もしくは支援、もしくはそれに基づいた現実世界の適切な運営を支援するもの」の総称です。

プラントシステムはプラントの状態を適切に保持し、プラントの適切な運営を支援しています。

Facebookなどのサービスは、個人の感情という情報を保持し、人と人とのコミュニケーションを支援しています。

国家は国民という情報を保持し、国民全体が幸せになれるように頑張っているのかもしれません。
(ジェレミー・ベンサムの唱えた功利主義に親しいものかもしれません。この発言はきちんと考えていません。ちなみにベンサムの功利主義は「快楽をもたらすもの」も善とするので、一般的な理解からは程遠いものかもしれません。閑話休題終わり)

恋人というのはその構成員自体が「情報」であり、「目的」です。
自己完結型かもしれませんね(なぜそう思ったのかはよくわかりません)

僕はこのようなシステム、言い換えるなら「きちんと論理的に物事を思考、もしくは現実世界の事象を適切な意味構造を持つ情報に組み直し、人間を総合的に支援するシステム」が大好きです。愛していると言ってもいいと思います。

で、私はそのシステム全体の中でも最終的な入出力インターフェイスとなる「人間とのつながりを担当している部分」が最高に大事だと思っています。

システムの欠点

私はここでシステムを下記のように定義しました。

「情報を保持し、情報に基づいた意思決定を行う、もしくは支援、もしくはそれに基づいた現実世界の適切な運営を支援するもの」

これを通じて表現したいことの一つに、システムはあくまで支援用、つまり人間のサブ的な役割にとどまるということがあります。

別の言い方にするなら、システムはその運用過程においてあらゆる部分で人間との接触が必要になります。

データを入力する部分もある程度は自動化できるとはいえ、自動化するためには人間によってプログラムを書く必要があります。

システムが管理しているデータを閲覧する際にも、当然ですが人間がシステムに接触する必要があります。

システムを適切に、円滑に運用していくためには、人間と正しく接触し、適切に意思疎通を実施し、人間を正しく支援しなくてはなりません(ここでいう正しいがどのような意味を持つのかについてはまた別途記事を書きます)

つまり、システムが最終的に使われるか、意味のあるものになるかどうか、人間をきちんと支援できるかは、システムと人間との接触が正しく行えたかどうかが全てだと言っても過言ではないと思うのです。

現代のスマートフォンは、システムと人間との最終的な接触の多くを担当している

さて、皆さんの手元にある「スマートフォン」を考えてみましょう。

例えば僕は思いつくだけでも下記のアプリをスマートフォンに入れています。実際はこれ以上にあることでしょう。

  • 電話
  • メール
  • Evernote
  • 各種SNS(Facebook, Twitter・・・)
  • 財布機能(クレジットカード機能、Suica機能)

さて、これらはシステムを構成する要素の中で、システムとの接触を担当するものがほとんどです。

電話、、メールは人との会話を実現することによって人同士の意思決定を支援します。
Evernoteは適切な情報を保持し続けておくことで僕の意思決定を支援します。
SNSは僕の感情や考えという情報を保持して僕のコミュニケーション全般を支援します。
サイフ機能は、僕の金銭的な情報を保持して、僕のお買い物を支援します。

このように、現代のスマートフォンは先程定義した「システム」のユーザーとの接触部分の大部分を担当しています。

そして私は、システムのユーザー接触部分を最高に気持ちいいものにしたいです。

ユーザーが気持ちよくシステムを使うことができ、システムとユーザーの間相互で正しく情報が伝えられ、必要な情報が必要なときに用意されている、そんな「接触」を作っていきたい、正しくデザインしていきたいと思っています。

それを実現するためには

もちろん アプリが作れる だけでは足りません。

アプリはどう頑張ってもシステム全体の「思想」の影響を受けることが避けられないからです。

そのため、ユーザーとの接触を正しくデザインするためには、システム全体のへの理解も当然必要になります。

この仕組みはこのために必要なのだ。この場合ユーザーが欲しい情報はこれなので、これを返す仕組みが必要だ、といったように。

また必要な情報を必要なときに用意するためにはユーザーへの理解も当然必要です。

ユーザーがどのような目的でシステムを使うのが、システムを使う際の状況はどのような状況なのか、ここも正しく理解しないことには適切ではない情報をユーザーに返却してしまうかもしれません。

また、システムを存在し続けることに対しても敏感にならなくてはなりません。

ある一定の期間だけ利用できるシステムが乱立するとユーザーは混乱してしまうからです。

たとえば今年から3年はAを、3年後からはBを、5年後からはCを、といったように利用するシステムがことなるとユーザーは多大な負担を感じます。

それはユーザーが「心地よくシステムを利用できる」とはならないので、あるシステムが可能な限り長く存続できるようにシステムが存在し続けられることに対してもデザインを実施しなくてはいけません。

このように、僕が考える文脈において、「ユーザーとの接点を正しくデザインする」ということはすなわち「システムを正しく構築する」というのとほぼ同じ意味になるのです。

そして、私は、その作業をやってみたいと思うのです。

だから、私はiOSエンジニアと言う仕事を続けています。

たいやき屋ショック 〜エンジニアの給料について

先程、下記のようなツイートを見つけました。

ちょっとこのツイートからいろいろ学べる部分をケーススタディ方式で見ていこうと思います。

たいやき屋の給料について

まず、先程のたいやき屋の給料を最大限労働者よりの観点で分析すると、下記のような条件です。

  • 学歴不問
  • 経歴不問
  • 必要なのはやる気だけ(事前知識不要・職場で育成前提)
  • 家族手当あり
  • 住宅手当あり
  • 四保険完備

つまり、

中卒でも、年齢が進んでいても、経験がなくても、正社員として雇用されれば月給28万円からのスタート

というわけですね。

ボーナスなしと仮定して、諸手当を除いた税引前年収を計算すると

28 * 12 = 年収336万円

ですね。

どんなに業界未経験でも、税引前年収336万円スタート。

いい条件じゃないですか。

エンジニアの給料について

さて、僕はiOSエンジニアです。

僕がたま~に見るGreenという転職サイトで検索ワード「未経験」で調べると、結構ありますね、最低年収が336万円未満の会社。

「未経験」でGreenを検索

平気で下限年収を300万に設定している会社がありますね。

こういう会社は次のように言われてもどうしようもないですよね・・・

  • 専門性が高い「プログラミング」というスキルを持った人間がいながらも、たいやき屋未満の売上しか出せていない

→ 経営陣があまり良くないだけでは :thinking_face:

思ったこと

とてもいいながれです。

このような事例は多く出るものではありませんが、このような事例が一つでもあると、提示年収が336万円より低い場合に求職者は例えば次のような行動を展開できます。

  • この採用は大学新卒者の採用です。学歴不問の採用で月給28万円スタートの会社が大阪にありますが、御社ではなぜ提示年収が336万円未満なのでしょうか。
  • 私は専門性の高い〇〇という言語のプログラマーです。経験不問で月給28万円で人を採用するたいやき屋がありますが、御社ではなぜ提示年収が336万円未満なのでしょうか。

いいですね、僕も積極的に使っていこうと思います。

Amazon Prime Nowで返品した

Amazon Prime Nowで返品しました。

これが超面倒くさくて、だるかったので記事にします。

何買ったの

お家のネットワーク環境を改善しようとして、Netgear社がリリースしているNighthawk R8500を購入しました。(下記リンクはAmazon.co.jpの方です)

https://www.amazon.co.jp/NETGEAR-無線LAN-1000Mbps-Nighthawk-R8500-100JPS/dp/B01EWCIRAG/ref=sr_1_1?ie=UTF8&qid=1549813222&sr=8-1&keywords=r8500

なんで返品したの

R8500ちゃん、12時間可動の後に、オレンジランプが点灯したまま、リセット操作も受け付けないという状態になりました。

リセットボタンを押しての強制リセットも反応なし。困りました。

返品するまで

とりあえず、Netgearのサポートに連絡

僕 : R8500、昨日買ったんですけど、オレンジ色にランプが点滅しちゃってうんともすんとも言わなくなりまして・・・

サポートの人 : リセット試しました?

僕 : 試したよー

サポートの人 : 初期不良ですね、どこでお買い上げですか?

僕 : Amazonです。

サポートの人 : メーカーから初期不良認定を受けたと伝えれば返金が受けられますので、Amazonで返品処理してください

僕 : かしこまりましたー

そして、意気揚々とAmazon.co.jpで返品しようとするも・・・

対象の注文が見つからない

それもそのはず、Prime Nowでの注文はAmazon.co.jpでの注文とは別注文として扱われるので、Amazon.co.jpの注文履歴には表示されないのです。

はてさて困った。

いろいろ調べる。

困っていろいろ調べていたところ、Prime Nowのアプリ内部に問い合わせがあることを発見。

電話をかけてくれるらしいので、電話をかけてもらって、Amazonの人とかくかくお話。

どうも 返品が受け入れられるらしいのでサポートの人の方で返品手続きを実行して、あとはこっちから返送しておしまい。

難しい・・・

わかったこと

  • Prime Nowでのお買い物を返品するのは、少なくとも2019/02/11現在ではAmazon.co.jp側のサポートが必要です。
  • Netgearの信頼がガタ落ちしました。そろそろ指定銘柄入りです。

ブログをはてなブログからWordPress.comに移行したお話

今日、ブログをはてなブログからWordpress.comに移行しました。

なんで移行したのかとかそこら編を含めてお話できたらいいなって思います。

なんで移行したの?

はてなブログをSafariで見るのがしんどい

はてなブログ、どうもSafariの追跡防止機能との相性が悪くて、「ログインしてもログインしていないことになったりする」っていう状態が去年の12月ぐらいから発生していました(記憶によるとMojaveアップデート前後ぐらいから)

それまではChromeで代理ログインして設定していたんですが、Googleと決別したりしたのでChromeも端末から消え、うーむという状態に。

いろいろ環境を揃えたのでもうブログもプラットフォームごと移動しちゃえって感じでWordpress.comに移動してきました。

過去記事は雀の涙ぐらいしかないのですが、移行済みです。

今後どうしていく?

WordPress.comはプラットフォームとしてはてなブログより圧倒的に良いので、アプリを入れたりして更新頻度を上げていきたいなと思ってたりします。

(上がるかなー

実際はこれまで通りのマイペース運用になると思うので、まったりお付き合いくださいませ。

仕事において、相手の意図を察するだけでは危険な理由

先日、とある会話を聞いていたときに、話の中で重要な役割を担っている方が、

「それぐらい聞かずに察してくれ!そんなこと話している時間はないんだ!」

と恥ずかしげもなく言い放ち、「この人と一緒に仕事をするのは大変だなぁ。部下の人は可愛そうだなぁ」と思ったので、なぜそう思ったのかについて少しブログにまとめたいと思います。

そもそも察するとは

そもそも、この話肝である「察する」とは何でしょうか。

このブログでは、下記のような意味合いで利用します。

「カンがはたらく ・ 察しがよい ・ 勘がよい ・ カンがよい」・・・etc

https://hatenablog-parts.com/embed?url=https%3A%2F%2Fthesaurus.weblio.jp%2Fcontent%2F%E5%AF%9F%E3%81%97%E3%81%8C%E3%81%84%E3%81%84thesaurus.weblio.jp

話の前提

僕がこれこれから話す内容には下記の前提があります。それは、

あなたがどう思っているか、何をどう考えているかはあなたにしかわからない

という前提です。

この前提が、なぜ正しいのか、なぜ必要なのかを、交通事故を例にとって説明してみましょう。

この事故には多くの人が関わります。

被害者、加害者、一時通報を受けて駆けつけた警察官、事故の調査に来た人、保険の支払いに来た人、裁判官、裁判で訴えられる被告を弁護するための弁護人、被告人を起訴する検事、そして現場を目撃した目撃者の人・・・etc

彼ら・彼女らは皆、性別、年齢はもとより文化的な背景や感情、考え方も異なり、関わるフェーズも違う人たちです。

そのため、彼らは 皆一様であるはずの「交通事故」という体験から、彼らの背景に応じて各々に最適化された「個人としての考え」を持ちます。

一例を上げると、ある人は「痛い」と思い、ある人は「事故を起こしてしまった」と思い、ある人は「車って怖い」と思い、ある人は「また仕事だ・・・」と思うでしょう。

この事例から、

「たとえ両者が共通の体験をしていたとしても、両者の背景が違うと異なる考えを持つことは容易に起きる」

という結論を導き出すことができます。

なぜ察してはいけないのか

前提条件に立った場合、たとえ相手と自分が共通の体験を持っていたとしても、導き出される結論、つまり考え方は大きく異なっている可能性があります。

そのため、

「私ならこう考える。だからこの人もこう考えるだろう。」

という安易な考えは、「相手の意図とは大きく異なった考え方を、さも相手の考え方であるかのように誤解をしてしまう」可能性を大きくはらんでいます。

運良く相手の考えを正しく察することができたとしても、 相手の考えを誤解したまま行動に移してしまう という状態は、進む方向が間違っているのにそれに気がつく手段がないという意味で「 目隠しをした状態で高速道路を爆走する 」のとほぼ変わらないリスクを持っていると言えます。

相手の意図を誤解しないためには

とにかくコミュニケーションをしましょう。

会話の一部でも不明瞭な点がある場合は、徹底して相手に確認しましょう。

(目的がわからない、問題意識がわからない、やりたいことがわからない、行動の理由がよくわからない・・・etc

たとえその場で相手に嫌がられたとしても、相手の意図を間違えて行動に移してとんでもない結果を招くよりはよっぽどマシです。

(そのように行動して、相手が極端に「察してくれ」というような態度をとる場合は、まぁ・・・・そういうことなのでしょう)

なお、プライベートでこのような行動を取ると相手をひどく怒らせる場合があるので気をつけましょう 🙂

コミュニケーションを円滑にする上で、結城さんが書かれた次の本はとても良い本だと思います。オヌヌメ

https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.amazon.co.jp%2F%E6%95%B0%E5%AD%A6%E6%96%87%E7%AB%A0%E4%BD%9C%E6%B3%95-%E5%9F%BA%E7%A4%8E%E7%B7%A8-%E3%81%A1%E3%81%8F%E3%81%BE%E5%AD%A6%E8%8A%B8%E6%96%87%E5%BA%AB-%E7%B5%90%E5%9F%8E-%E6%B5%A9%2Fdp%2F448009525X%2Fref%3Dsr_1_1%3Fie%3DUTF8%26qid%3D1547937359%26sr%3D8-1%26keywords%3D%E6%95%B0%E5%AD%A6%E6%96%87%E7%AB%A0%E4%BD%9C%E6%B3%95www.amazon.co.jp

UIViewの一部を角丸にするのが面倒臭すぎるので、UIViewの一部部を角丸にできるライブラリ「RoundCornerView」を1時間もかけてリリースしたお話

1年ぶりにライブラリを出しました。

いやぁもっと速いペースでライブラリを出したいのですが・・・

https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fhidemune-takahashi%2FRoundCornerViewgithub.com

背景

弊社のデザイン部があげてくるUI案に「角丸」のデザインがかなり多かった(もはや全部なのでは疑惑)。
最初は頑張ってベジェパス書いてたりしましたが、いい加減疲れちゃったので、UIViewの一部を角丸にできるCarthageライブラリ、RoundCornerViewをGitHubでリリースしました。

目的

UIViewを角丸にするのを楽にします。

技術的内容

特に目新しいことはしてないです。
普通にUIBezierhPathを作って、それを丸めて、よしなにやるライブラリです。

ライブラリも、2つファイルがありますが、全部合わせても100行ないはず。

技術的挑戦

僕として初めて、Targeted Extensionに挑戦しました。

これによって下記のような書き方で角丸にできるようになってます。

someView.rcv.makeRound(corners: [.bottomRight], cornerRadius: 3)

意外と大変かなと思ってたけど、結構簡単でした。
構造体を作ってプロトコルで強制して、プロトコルのデフォルト実装でよしなに書く感じですね(だいぶ端折った

おねがい

みんな使ってくれー!

じゃぁの

友人のススメでロバートキヨサキ氏の著書、キャッシュフロー・クワドラントと、若くして豊かに引退する方法を読了した

友人のススメで、ロバート・キヨサキ氏の著書、キャッシュフロー・クワドラントと、若くして豊かに引退する方法を読了しました。

結論から申し上げて、とても良い本でした。

それは何故かと言うと、自分自身が経済的に成功するために必要であろう「最初の気づき」を、経験からではなく2冊の本への投資(金額にして5千円ほど)で得られたからです。

ESBIの4つのクワドラントがあり、EとSでは、自分の時間の上限という自然が与えた制限を超えることができません。

しかし、BとIのクワドラントでは、他人の時間(OPT)と、他人のお金(OPM)を利用することで、自分自身の時間では到底実現できないことを実現することが可能になります。

また、言葉はとても大事で、自分が信じたことが自分の現実になる、ということも、僕は身を持って知っていました。

新卒入社した会社を3ヶ月でやめて、iOSエンジニアになると決め、2年間勉強してそこそこのiOSエンジニアになったたあの瞬間に、自分は信念を持ってやれば必ず結果がついてくるのだと感じました。

とても面白い生き方だと思いました。

ぜひ、BとIの世界に足を突っ込んでみたいものです

(すでに始めてるかも・・・

「なぜかを問い続ける」のはとっても辛いって話

僕が考える「優秀な人」の条件中に、

「なぜかを問い続ける」

という条件がある。

実際これをやるのは超しんどい。

そして僕も、それができない。

この記事ではそれがなぜかを記していこうと思う。

「なぜかを問い続ける」が辛い理由

これはもう至極単純なことで、

「 “なぜかを問い続ける” なんていうのは、相当な精神力の持ち主でもない限り大変な労力を伴うから」

です。

たとえば、

「なぜいい大学行かなければならないのか」

という疑問は、ここ60年ぐらいの間は高校3年生が常に毎日考えていることでありますし、大学を卒業した人間ですらそれについて考えていることが多くあります。

しかしながら、

「なぜこの仕事はこのやり方なのだろう」

という疑問は、個人的に多くの人間が思っていることであると信じてはいますが、その多くがよりよい考えに到達する前に「なぜかを問い続ける」のをやめてしまいます。

そして僕も、途中でやめてしまうと思います。

それはなぜか。

とても単純で、

「理由がわかったところで、それを具体的なアクションにつなげることが難しいジャンル」に対して「なぜ」を投げかけたからです。

たとえば、

Aという上司のもとで、誰が見ても効率の悪い仕事をしているBさんという人間がいたとしましょう。

そしてそのBさんはとても優秀なので、「なぜこのような効率の悪い仕事の仕方をしているのか」となぜを投げかけ続け、その理由を見つけました。

ここではその理由が「Bの怠慢」のせいだったとしましょう。

さて、AさんはBの怠慢を改善できるのでしょうか。

ここからは僕の推論になりますが、多くの日本企業(全体の99.9%以上)ではこの場合業務を改善することは不可能だと思います。

なぜなら2018年現在、多くの企業が評価基準を「成果」としていながらも実際は「年功序列」であるケースのほうが多いと個人的に考えているためです。

(この評価基準の矛盾についてはまた今度ブログにでも書きますね)

さて、先程の話に戻ると、この「年功序列」という事実によりAさんは業務を改善することはできないでしょう。

この状態でも「意見具申」程度であれば可能かもしれませんが、それにより現場が改善する可能性はほぼ皆無なので、意見具申するための「労力」すら長期的な目線においてはただの「無駄」となるでしょう。

さて。

このような状況下でAさんが「なぜかを問い続ける」ことに「意味」はあるのでしょうか。

当然、意味はあります。

意味はありますが、意味を知ったところで何も改善できない今回のようなケースの場合、ミクロの視点においては「なぜ」を問い続けないことのほうが合理的な場合もあるのです。

そして、2018年現在の日本には、ミクロの視点で効率化を図ったほうが効果的なものがたくさんあります。

今申し上げた「なぜかを問い続ける」ということも、「ミクロの視点では効率化を図ったほうが効果的なもの」の代表格の一つだと思っています。

だからこそ。

現代日本において「なぜかを問い続ける」人間が、とても貴重なのです。

なぜかを問い続けられる人間は、理由を見つけます。それだけではなくそれによるメリットもデメリットも見つけることができます。

一般的に「正しい」とされている話が、本当に「正しいか」を問い続けるのは難しいという話。

これから書くことには僕自身が無意識のうちに取り込んでいる「性別によりフィルタリングされた意見」がある可能性があります。

この意見は僕としては「無意識」の間にやっていることなので、公開する前にそれに気がつくのが難しいです。

あと、きちんと取りまとめた上で書いているものではありません(破綻している可能性があります)

それを把握した上で、時間を溝に捨てる覚悟のある人だけ読んでみよう!


僕たちの身の回りには多くの「正しい」とされることがあります。

たとえば、「人を殺してはいけない」というもの。

これは正しいということが比較的わかりやすいものですね。

では次にこういうのはどうでしょうか。

  • いい大学に行っていい会社に就職するのがいい
  • 子供を作って、子供を育てるのがいい
  • 大人になったら専業主婦になる
    ・・・etc

さて、これらがなんとなく「完全には正しくなさそうだ」、というのは2018年に生きている皆さんであれば自明の理だと思います。

でも「完全に間違っているのだ」と言い切ることも難しいと思います。

さてこのようなデリケートな命題(言葉の使い方があってないかも)に対して、1mmでも疑問の余地があるなら、私は問いを投げかけ続ける必要があると思います。

なぜ、そう思うのか。

昔に読んだ本の何処かに書いてあったことを、内容を要約してそのまま引用します。

Aという命題に疑問を投げかけたとする。
Aという命題が仮に正しかったとする。
Aという命題は、疑問に対して明確に答えることでAの正しさを補強することができる。
Aという命題が仮に正しくなかったとする。
その場合、その命題が間違っていたという正しい認識を作り出すことができる。
このようにどちらの場合においてもAという命題に疑問を投げかけることは我々全体にとってプラスの作用しかもたらさないので、命題に対して疑問を投げかけ続けるべきである。

中世期に書かれた哲学書だった気がします。なんだっけな。自由論あたりだった気がします。(間違ってたらゴメンネ)

上記の理屈がわかっても、実際にそれを投げかけ続けるのって実際はすごく難しいんだよね。

だって、自分で考えるより、誰かが正しいと言ってる意見をそのまま鵜呑みにして「僕もそう思う!」っていうほうが全然楽だもんね!

(というような内容がサイコパスというアニメで少し描かれています。気になった人は見てみよう!)

でも、僕たちは「自分の頭で考えること」を意識的に行ったことって多くないと思います。

学校では規範に従うことが良しとされ、成績を上げることが良しとされ、社会人になったら給料が上がるのが良いとされ、30ぐらいになったら結婚するのがいいとされ、子供を作るのがいいとされ・・・など、私達の身の回りにはなぜそれが正しいのかをきちんと考える機会は多くはないです。

でも。

人生は短いです。(セネカという人が知り合いに向けて書いた「生の短さについて」という本には、なぜ人生が短いかについての示唆に富む記載があります。気になった人は読んでみよう)

その人生を無駄にしないためにも、自分の頭で考える。ことが一番大事だと思うのです。

僕も全部できているわけではないのですが、頑張ってできるように日々努力しています。

\ミンナモガンバロー/