おじんブログ

Webアプリに関する知見とか雑記です

雑な仕事観: 向いていないことは仕事にしないほうがいい

仕事観と書くと身構える人が多いのでラフにした。 こういう話はキャリアステップを狙う人だけの話、と考える人もいるけど仕事と趣味を分けてて充実させたい人でも、むしろそういう人ほど、向いていないことを考えた方がいい。

向いていないこととは

ここで言う向いていないこととは、それを続けていて辛くないということ。別に一流になれなくてもいいけどやるのにそんなに労力を必要としない、という意味。

例えば喋るのが苦手な人は漫才師やコールセンターはできたとしてもかなり限定的で労力がかかる。これは「向いていない」といえる。

逆に機械いじりが好きな人は業務用エアコンやプリンターの整備業務は続けても苦にはならないと思う。これは「向いている」といえる。

なんで向き不向きと仕事が関係するのか

そもそも大半の人は1日の大半を仕事して過ごす。その時間を適正のないことに費やすのは、仮に仕事と割り切っても労力がいる。

1日に使えるエネルギーが10なら、適正がある人なら6で仕事を済ませて4を余暇や生活に使えるとする。

しかし、向いていない人は8または9、酷いときは11を費やしてしまう。残ったエネルギーは僅か、またはマイナスなのでそれを休日の睡眠で解消する。

つまり適正を考慮しないと、余暇を楽しむどころか生活が破綻しかねない。なので趣味を充実させたい人は、最小の労力で済ませられるほうがいい。

また、昇給したいと思うには自分の能力を高めることが必要で、そういう戦略を考えたり実行するにも適正があったほうが苦になりにくい。

なんでこんなことを書いたのか

僕自身が最初の職場で仕事が上手くできず、20代で2回転職する事になり、仕事の適性について突きつけられて考えざるを得なかったからである。

僕の場合は自分の興味がないことは一切といっていいほどに頭に入らなかった。そういう形質は薄々自覚していた。学校の成績がかなり凹凸があった。 そういう形質を自覚していながら、仕事に役立つようなスキルを身につける気はなかった。ただ単に学業で満足していた。

就活では、自分は営業職に向いていないと自覚していながら、就活期間終盤であることや興味のある範囲に近いという理由で特殊な営業職に就職したが、向いていないことをやり続けていたせいか周りに迷惑をかけていることによる罪悪感が貯まりすぎて、不眠とカフェイン中毒が悪化した。

その時は、仕事なんだから、それぐらいできないのは自分が駄目だから、とにかく頑張ろう、という曖昧な形で問題を押し込んでしまい、特に適正を分析をすることもなかった。 それが原因で徐々に精神的に疲弊してしまい、生活に支障をきたすようになった。体重は2年で10kg増えた。

その時の体験があって、仕事における向き不向きは強く意識するようになった。

最後に

始めたきっかけは「当時の職場から離れるため」という不憫な理由で始めたプログラミングも、元々凝り性で中学生の時にHTMLを触っていたような自分には合っていたようで、理解できなかったことが理解できるようになっていき、いくらやっても楽しいと感じられた。 これが「向いている」なんだと感じて、今のエンジニア職をやれている。 「好きなこと」「向いていること」「稼げること」が運良く一致していたのでバイアスが掛かっているかもしれないが、「向いていないこと」はハンディキャップとして常に重りを付けて全力疾走させられるような感覚だと思っているので、もしそういう状況に心当たりがあるなら、適職を考えたほうが良いと思う。

React 360を開発するときに引っかかりやすい点

開発環境と他のサンプルページ見ていろいろ気が付いたこと。

ChromeではHttps環境でないとデバイスの傾きが感知できない

サンプルページではスマートフォンでみると傾きが反映されていたのに、 開発環境で立てたローカルネットワークにアクセスしてみると、デバイスの傾きが反映されていなかった。 window.DeviceOrientationEventが何らかの原因で働かないんだろうなと思い、調べてみたところ、下記のIssueで答えが出ていた。

github.com

Chromeではセキュリティーの問題でHttps環境でないと傾きを検知できない。

じゃあNetlifyにホスティングしてみるか…と思ったら引っかかりポイントがまた増えた。

ビルド結果が黒背景⇨buildディレクトリにstatic_assetsがない

特に考えずビルドしてフォルダ指定すればNetlifyへのデプロイ大丈夫っしょ、と思ったらダメだった。 よくみると公式で「static_assetsディレクトリに何かファイルあるならそれもコピーしてね」と書いてある。

https://facebook.github.io/react-360/docs/publish.html

というわけでpackage.jsonのscriptを一部を書き換え。static_assetsをbuildディレクトリに含める。

    "bundle": "node node_modules/react-360/scripts/bundle.js && cp -rp ./static_assets ./build/ ",

Netlifyであとは下記のように設定。

  • Build command: yarn bundle

  • Publish directory: build

これでHttps環境でデバッグできる。Netlifyは本当に楽にデプロイできるし早いのでありがたい。

React 360ではまだHookは使えない

TL;DR

React 360にて依存しているReactとReact NativeがHookに対応する前のバージョンのため、React Hookはまだ使えない。Issueには上がっている。

github.com

github.com

package.json も見てみると確かに対応する前のバージョンになっている。

  "dependencies": {
    "react": "16.3.2",
    "react-native": "~0.55.4",
    "three": "^0.87.0",
    "react-360": "~1.1.0",
    "react-360-web": "~1.1.0"
},

気付いたきっかけ

WebVRを試すために、React経験者なら入門しやすそうなフレームワークとしてReact 360を触れてみたけど、カウンターアプリのサンプルがClass Componentだったので、Functional ComponentでuseState使って書き換えてみてロードした時点で他のcomponentがレンダリングされなくなった。 検索したら上記のIssueが見つかった。

将来的にどうなるか?

React 360の最新リリースが2018/5/17だったので最新版のReactに対応するのは望み薄いかな?とは思った。

Release React 360 - v1.0.1 · facebook/react-360 · GitHub

が、コアコミッターの人が「WebVR 1.1 APIはレガシーだからWebXR APIに注力して行くよ」と言っているみたいなので、アップデートというよりガラッと中身を変えていきそう。

github.com

そもそも複数componentで個別のState持てない?

ついでに色々試してみる。 チュートリアルのCounterだけ分離してみる

https://facebook.github.io/react-360/docs/explore-code.html

import React from "react";

import { AppRegistry, StyleSheet, View, Text, VrButton } from "react-360";

export class Counter extends React.Component() {
  state = {
    count: 0
  };

  _incrementCount = () => {
    this.setState({ count: this.state.count + 1 });
  };

  render() {
    return (
      <VrButton onClick={this._incrementCount} style={styles.greetingBox}>
        <Text style={styles.greeting}>{`Count: ${this.state.count}`}</Text>
      </VrButton>
    );
  }
}

export class Sample360 extends React.Component {
  render() {
    return (
      <View style={styles.panel}>
        <Counter />
      </View>
    );
  }
}
// style は省略
AppRegistry.registerComponent("Sample360", () => Sample360);

実行コンソール見るとCounterを定義したあたりでエラーが出てる。Counter周りを消してみると無事Panelは表示される。 カウンターをSample360内で定義すると動作するので、Stateを含むComponentを複数持てないのか…? よくわからない…

まとめ

React 360は近々大きなアップデートがありそうな予感がしている。ただ現状ではWebVRを踏み込んでやるなら他の選択肢が良さそう。 Three.jsでいじっていた方が難易度は上がるけど自由にできるみたいで、開発頻度的に活発そうなフレームワークはA-Frame、みたいな印象がある。 まだ手を動かしてないしドキュメントも読んでいないので認識が間違っていそう。 また気が向いたらWebVR/WebXRで遊んでみたい。

Twitterを初めて10年経過して思うこと

僕が好きなTwitterアカウントの人が僕が思ってることを大体言ってたので引用します。


あちこちで著名人がTwitterをやめた宣言をブログに綴っていて、Twitterをやめる気は今のところないけど、積年のモヤモヤがあるので言語化したくなった。

Twitter始めたきっかけと10年

これははっきり覚えていて、東方ProjectのZUNさんをフォローするためにTwitterアカウントを開設した。

タイトルもなく140文字のみ、投稿後は編集もできない…という奇妙だけど唯一無二の「気楽さ」は性に合っていた。 最初の頃はかなりマイナーなSNSだったので特に誰もフォローせず、壁に話しかけるようにツイートをしていた。 後に高校生の同級生が始めていて「ツイートふぁぼってます」と言われていたけど「ふぁぼってなんだ?」と思った。 使い始めて1年以上経過していたのに「お気に入り」という機能の存在を知らなかった。

自分の生活が変化していきながらも10年の間、Twitterを開かない日は無かったんじゃないかと思う。 とにかく僕の青春と共にTwitterがあって、様々な変化を見届けてきた。

で、今何がTwitterに何が起きているの

簡単に言えば治安が悪化している。怒りや正しさを拳に宿してストリートファイトしているみたいな感じ。 「落ち度があるやつはいくらでも叩いていい」という空気が熟成されている。

自分にも落ち度があるときだってあるのに、なんでこんなに他人に厳しくなったんだ?

治安が悪化した原因

明確なことは分からないので推測しか書けないが、

  • クソリプという概念が提唱されていたずら半分にクソリプを送る人が増えた
  • 好きな趣向は人それぞれだが、嫌いなことは大体似たりよったりなので共感されやすい
  • リプライを送った先に人がいることを意識できてない人が多い

という感じだと思う。後はみんな疲れてるからだと思う。

これからのTwitterについて

今も昔も、鋭い笑いのセンスを見せる投稿があったり、マイナーな良書がバズって出版社に感謝されるなど、面白い現象が起きている。そういうときはインターネット面白えって思う。 だけどそれらの対してのノイズ率が多すぎることが著名人のアカウント削除に繋がっていると思うと、Twitter運営頑張ってという気持ちになる。

1人の利用者としてできることとしては、自分が好きなことを積極的に呟いて、怒ったときは小さく呟いて、疲れたときはTwitterを閉じて寝る。

やっぱり疲れてるときのSNSは最悪だ。濁った心が更に濁る。

後は最近のTwitterについて思うことです。

10年続いていることについて

Webサービスを長期間運用するのは困難さが伴うことはある程度理解しているつもりなので、それに挑んでることに尊敬に値する。 ただ広告が無茶苦茶なのは自動でやってるとはいえ、悩ましい…そういうところだぞ。

Twitter APIの一部廃止や有料化について

公式アプリかTweetDeckを使っているのでそれさえあればいいと思ってる。 なので特に気にしてない。 disられがちな公式Webアプリは慣れたら使いにくいことはないけど、画面遷移しても投稿内容が保持されるってのは初見じゃ理解しづらいと思う。

Twitterの施策に思うこと

インタビュー記事を見る限り、CEOのジャック・ドーシーはTwitterが非健全になっていることに危惧しているので、それに対して徐々に取り組んでいる。 運営側がユーザーの発言にある種の制限をかけるようなことに対して批判はあるけど、自由なのと罰則を受けないのは全然違うのでこの姿勢には賛成する。

ワクチン接種の件でも厳しい姿勢を取ったのは本当にいいと思った。 https://twitter.com/TwitterJP/status/1128077736663060480

問題は山積みだろうけど頑張ってほしい。 これはお前が始めた物語だろ?

最後に

なんだかんだで不満を抱えながらもTwitterを使い続けると思う。 メリットよりもデメリットが多すぎて、時には辞めたいと思いながら10年も続いてしまった。 もしかしたら僕はスキナー箱でレバーを押すことを辞められなくなった実験動物なのかもしれない。

繰り返しになるけど好きなアカウントの言葉で締めます。

映画「イエスタデイ」感想: 様々なIFが存在する世界とバタフライ・エフェクト(一部ネタバレあり)

ダニー・ボイル監督の映画「イエスタデイ」を観ました。

突拍子も無いような設定ながら、Beatlesの存在がない事で音楽の歴史が変わっていたり、Help!のアレンジが新たな解釈でよりパンクな曲調になったりと、その辺りのリアリティも秀逸でした。

ある意味でチート能力を与えられてしまったものの、どこまでも冴えないけど小心者な主人公を応援したくなる、ちょっと不思議な王道のラブコメ音楽映画として完成度が高く、とても面白かった。

観た記憶を思い出しながら「上手く考えられてる」と感じた点についてまとめます。

ボカして書いてますが、ネタバレ注意です


BeatlesだけじゃないIFの世界

主人公は異世界転生のような出だしでBeatlesが存在しない世界に飛ばされます。 しかし存在しなかったのはBeatlesだけではなく、日常的に存在していたものがその世界では存在しない事に主人公は徐々に気づいていきます。 別世界ならそういう事が起きても当然ですが、どんなに当たり前なものでも「それを作ろう」と実行した人がいなければ存在しません。

それを広げて考えていくと、世界は小さいIFの連続で成り立っている事になります。 1人の小さな選択が誰かに影響を及ぼし、それが連続してやがて世界に大きな影響をもたらす「バタフライ・エフェクト」は決して理論上の出来事ではなく、身近な物です。

人生の選択の意味

主人公は様々なIFによって歴史が変わった世界を目の当たりにして、人生で選択がもたらす事の重大さを徐々に知っていく事になります。 作中、主人公の友人でローディを務めている男がこう言います。

「人生に何にも意味がないと思っていた。でもお前のおかげで気づけた」

パラレルワールドにて人生の意味を知った主人公は大きな選択を迫られることになります。彼がどのような選択したか…それは見てのお楽しみで。 

まとめ

現代ではあらゆる物の規模が大きくなり、個人の選択に何の意味があるのか分かりにくくなっていますが「なんでもないような事でも、実は大きな意味をある」と肯定してくれるテーマを感じました。

こういう小恥ずかしいようなテーマを説教的ではなく、自然とエンタメに組み込んでいるのは見事だと思います。