もやもやエンジニア

IT系のネタで思ったことや技術系のネタを備忘録的に綴っていきます。フロント率高め。

コロナ陽性になったので経過を書いていく 1日目

経緯

  1. 娘の保育園が突然のクラス閉鎖。複数名に発熱が認められたとかなんとかのため。詳細は教えてくれず。
  2. 保育園がお休みになった次の日に娘発熱。自宅の検査キットは陰性を示したが、念の為、かかりつけの発熱外来で検査したら陽性ということで、家族全員濃厚接触者認定。一応、嫁と協議して自分は作業部屋で隔離生活して共倒れにならないようにした。
  3. 娘の陽性確定の2日後の午後に熱っぽさを自覚。38度超えてたので検査キットで検査したら陽性。
  4. 神奈川県の自主療養サポートに登録。発症日から10日で無症状であれば開放されるらしい。

1日目の症状

  • 熱っぽさとだるさだけ。インフルみたいに寒気がするほどではない。
  • やや喉がイガイガするが、咳はでない。

他の方の役に立ちそうなメモ

  • 検査キットはネットで買えるものは正式な判定には使えない。薬局で買える「薬事承認された抗原検査キット」でないといけない。つまり濃厚接触者と判定される => 外出禁止 => 家族がコロナの疑いがあるので検査したいとなった場合に事前に手に入れておかないといけないということでデッドロックしてしまう。その場合は発熱外来をやっている医者を探して公共機関を使わずに行くという苦行を強いられる。
  • 我が家はたまたま県が希望者に配布していたのを入手していたので少しだけ在庫があったのでラッキーでした。

続く

ある日突然眠れなくなって休職した話

まさか人生でこんなことになるとは・・・という体験をしたので日記に残しておく。ちなみに今回の件で色々な予定がドタキャンになってしまってご迷惑をおかけした方々がいるので平に申し訳なく思っております。いや、ほんとに。

経過

8月中旬から胃の調子が悪くなる。もともと定期的に胃が悪くなりがちな体だったので、かかりつけの医者でいつも処方されてる薬をもらう。

ある日を境に夜になっても眠気がさっぱり来なくなる。寝付きが悪いとかそういうレベルではなく全く眠くならない。2日くらいそんな感じだったので近所の精神科に不眠の相談をしに行く。すごいおじいちゃんな先生が出てきて話をしたら適応障害だから1ヶ月くらい仕事休んでと言われて睡眠導入剤を処方される。確かゾルピデムてやつ。

Q

薬を飲むと0時に入眠できるけど今度はきっかり朝の4時に目が覚めるという状態になる。結果として睡眠時間が3〜4時間しか確保できておらず体調の悪化が続く。この状態は早期覚醒というらしい。おじいちゃん先生に再度相談しに行くと抗不安薬とか増やされる。が、症状は変わらず、体調の悪化が止まらず、胃の調子は更に悪くご飯がろくに食べられないし眠れないという感じでちょっとシャレにならない状態になる。

シン

このおじいちゃん先生はいかんのではと思い、会社の産業医に相談して、家からちょっと遠いけど信頼できる心療内科の先生を紹介してもらう。結果的にこれがナイスな判断で、症状を相談したら適切な薬を処方されて食事が取れるようになり睡眠も7時間程度確保できる状態をキープできるようになって徐々に体が回復。11月に復職して普通に働けているという状態まで持ち直した。

原因

子供が生まれてから自分の時間を確保するために夜型の生活になってたのが一つ確実にあると思っている。以前は夜中の2〜3時にベッドに入って速攻眠れていたけどこれは寝付きがいいわけではなく単に睡眠不足らしい。そこにフルリモートワーク下で外に出なくなったことや運動不足、保育園の登園自粛で子供と四六時中一緒にいながら働くことへのストレスなんかが重なって、ついにバケツが溢れたんじゃないかなーと。原因がないこともあるとは先生に言われたのでこれだというものはないけどいろいろなことが少しずつ積み重なったからなんだろうと思う。

おわり

という感じで8月〜10月で壮絶に体調崩した話を振り返った。本当に健康第一にしないといかんなと思った次第。

逆流性食道炎が治った(n回目)

去年の夏くらいに胸から鳩尾のあたりがズキズキ痛むようになって内視鏡検査を受けたら逆流性食道炎と診断された。その後、薬を飲んだり生活習慣を見直したりして、今日再び内視鏡検査を受けた結果、食道周りはキレイになったので薬も止めていいという診断をもらった。一安心。

この病気とはもう10年くらいの付き合いで、定期的に症状が出る -> 薬をもらって改善するということを繰り返していて、なんかもう慣れたものである。とはいえ、発動すると地味にしんどいのでかからないことに越したことはない。自覚症状は人によって変わるらしいが、僕の場合は一番はじめにかかったときが一番ひどくて、常時吐き気が収まらなくて電車に乗っても途中で吐き気に耐えきれずに駅のトイレに駆け込む、ご飯を食べたくても匂いが気持ち悪くてやっぱり吐き気がこみ上げてオエオエするという有様だった。(今はそこまでひどいことはないけど)

その当時は仕事で午前様が続いたり、ストレスMAXだったりしたことで、本人のメンタル的にはきついと感じなかったけど、体のほうが先にアラートをあげたんだろうなーと思っている。良くも悪くも仕事に対する考え方が変わった事件だった。

その後は酒を飲みすぎたり脂っこいものをたくさん食べたりするとすぐ胸焼けする感じになってしまうようになったので、食事にも気を使うようになった。プログラマー35歳限界説という都市伝説(もう死語かもしれない)があるけど、能力的な問題より体力的な問題はあるかもなーと、30代後半に突入して感じるようになった。

健康な体は大事だぞという話で、おしまい。

※ 医者との雑談で、最近この病気にかかる人が増えていて、特にリモートワークしてる人がかかることが多いという話をされた。なぜかというと逆流性食道炎の原因の一つに姿勢の悪さがあって、リモートで座りっぱなしの仕事で姿勢が悪い人が増えているからということであった。幸い自宅での立ち仕事用に自動昇降デスクを買ったのでこの問題はないかなと思いたい。

rei19.hatenablog.com

Androidアプリ開発者がSwiftでiOSアプリ書いて公開した

前編

rei19.hatenablog.com

↑で書いたとおり、アプリ開発Androidしかやったこと無い(厳密には古にTitaniumMobileでiOSアプリをリリースしたことはありますがノーカウント)中の人が、iOSアプリやるぞ!と目標立ててこつこつやって公開するところまでできたのでログを残しておきます。

リリースしたもの

百人一首 簡単に暗記

百人一首 簡単に暗記

  • Rei Matsushita
  • 教育
  • 無料
apps.apple.com

Androidで出したアプリiOS

事前に勉強したこと

前編で書いたとおりですが

  1. チュートリアルで雰囲気を掴む

  2. アプリを作る上で必須レベルの実装パターンをサンプル作って検証

    • アプリケーションのライフサイクルの確認
    • Viewの組み方からユーザーからのイベントハンドラの実装。画面間のデータの受け渡し
    • Componentのカスタマイズ
    • 端末のローカルへのデータ永続化(とりあえずデフォルトで用意されているCoreDataを採用)
    • NW越しのAPI通信
    • などなど
  3. 設計について勉強

    • GUIアーキテクチャのコンテキストでのMV(C|P|VM)などをiOSではどう実装するかが知りたかったので以下の本を読んだり写経したり
    • この本はiOSと名前が付いてるものの、前半はGUIの設計に関する説明なので読み物としても面白かったです

peaks.cc

実装の方針

  • 勉強も兼ねているので、できるだけライブラリを使わず自前でどうにかする
    • 車輪の再発明になってもいい。部分的に参考にしても書いたコードはちゃんと説明できるようにする
  • 闇雲に作らず、それなりにテスタビリティを確保して実戦的な設計をする
  • SwiftUI は使わないで、StoryboardでViewを組む
    • もしなにかの折にiOSの仕事を手伝うことになった場合、SwiftUIしか使えませんというのはまだ時代が追いついてないと思ったので

全体の設計はこんな雰囲気

f:id:Rei19:20210304174407p:plain
アプリ設計

  • DomainLayer
  • InfrastructureLayer
    • ドメイン層が公開しているRepositoryProtocolをCoreDataを使って実装する
  • PresentationLayer
  • レイヤー間のIFは組み込みCombineフレームワークを使って繋げています。だいたいrxっぽい雰囲気で使えるやつでした

感想

  • Storyboardを使ってViewを組むのは難しいというかハードルが高いと感じました。。。ただツールの使い方の問題なので長いこと使っていれば自然と違和感なくなるのかなとも思います。AutoLayoutについてはAndroidにも似たようなConstraintLayout(こちらのほうが後発)があるのでそこまで戸惑いませんでした。
  • AndroidGoogleが公開しているCodelabsという、ハンズオン的な教材があり、定期的に見ることでキャッチアップしやすい環境があるのですが、iOSにもそういうのがあるといいなあと思いました(知らないだけな気もしますが)
  • 本当はテストまでちゃんと書く予定だったんですが、家庭のイベントが重なって時間が取れなくなってきたのである程度動作確認できた段階でえいやーで公開しました。
  • わからん、わからん言いながらどうにか公開までできましたけど、やはり未経験の分野に飛び込んで何か無心で作ってる時間は楽しいですね。

2020年振り返り

リモートワーク中心になったことにより去年にも増して職場以外の人とあまり会ってないので生存報告がてら振り返りなど

仕事の開発

  • 淡々とB2BSaaS作ってます。キャリア的には30代後半に突入したので、何でもやりまっせ的なポジションからやや専門領域を磨いていこうかなーというフェーズに入っていきたいのでフロントエンドメインに見るようにしてます(そこしかやらないというわけではないけど割合の問題)

個人の開発

  • Androidアプリをリリースしました。この記事書いてる時点で1700DLくらいですね。

rei19.hatenablog.com

  • 百人一首アプリのiOS版もSwiftの勉強(というか難しいのはXcodeの使い方ですな)がてら作り始めてます。Twitterで直接「iOS版無いんですか・・・」とか言われたりするので。

来年どうすんの

  • 本当は今年でどこかに転する予定でしたけど、公私ともに色々何やかやあって現職のままです(カジュアル面談で時間取ってくれたところはごめんなさい・・・)。とはいえそろそろ違うことはしたいので来年、身の回りの状況が落ち着いたらまた考えます。上でも書きましたが、フロントエンド(WEB/アプリ問わず)の領域を中心に攻めていきたいお気持ちです。

n年ぶりにiOSアプリ開発(with Swift)を勉強し始めたログ

定期的に「よし、iOSでなんかアプリ作ろう!」 -> 「Xcode難しいなり。ぐぬぬ。。。」となって、そのうちに仕事が忙しくなり忘却の彼方に忘れ去られるというのを繰り返しているので、今回こそは、ということでちゃんと学習計画を立ててログを残していくことにしました。Reactは多少の心得があるからRN、またはFlutter、KMPでやってもいいかなとも思ったものの、どのクロスプラットフォーム選ぶにしても、ネイティブの知識はあったほうがいいだろというお気持ちなので、まずはXcode + Swiftでやります。

計画

  1. チュートリアル的なもので基本的な使い方を学習
    • 教材: ニコニコ予備校のiOS入門編をトレースする。ちなみに公式の教材 の日本語版だった(やったあとで判明)
  2. 1 の成果を元にTodoアプリを作成し反復
  3. データの永続化まわりを学習
  4. 3の成果を元にTodoアプリにCoreDataを組み込んで反復
  5. NW通信周りを学習

  6. 5の成果を元になにかのAPIを叩いて表示するだけのアプリを作ってみる

  7. エコシステムまわりを確認して、デファクトのライブラリを調べる
    • CocoaPods / Carthage / Swift Pacage Manager
  8. 1 - 7の成果を元にストアに提出できるレベルのアプリを作ってみる(あわよくばdeveloper programにお布施して提出する)
  9. SwiftUIを触る

いまここ

  • このブログ書いてる時点で4まで修了

GitHub - rei-m/ios-samples: sample of iOS apps

  • PEAKSで設計入門本を買っていたので、慣れていったらそちらも読み込んでパターンを習得していきたいですね

peaks.cc

ちはやふるにはまったので百人一首を暗記するアプリ作った (2回目)

前回のリリース

rei19.hatenablog.com

今回作ったもの

play.google.com

前回作ったアプリはいまだにちょこちょこ使われてるのですが、リリース当初から「歌の読み上げ機能がない」「読み上げがあれば最高!」というレビューが来ていて、さらに3年経ってもいまだに飛んてくるので需要に答える形で作ることにしました。仕事はWebの開発ばかりだし、そろそろAndroidアプリの仕事もしたいし、リハビリがてら丁度いいかなあという思いです。

元のアプリはライトユーザーを想定して作っているので、今回は想定するユーザーを「ちょっとだけ競技かるたに興味のある人」にして、新しいアプリとして作りました。

技術的な話

  • 特段特別なことはしておらず、元のアプリから使えるモジュールは使いまわしつつ、DBレイヤーはOrma -> Roomに変更、全体の構成はNavigationComponentをベースにしたシングルActivity構成にしたりしました。

技術以外の話

  • そもそも読み上げに使える歌の音源が見つからなかったので、Twitter経由で読み手をやっている方に相談してみたり(ke_ko26さんありがとうございました)、かるた協会に問い合わせたりしたもののやはり解決しなかったので、ココナラを使って自分で発注をしてデータを作成しました。出品者側で使ったことはあったものの、依頼者側としては初めて利用しましたがスムーズにやり取りできました。

おわり

  • 久しぶりにアプリ作りましたが、Androidは公式のドキュメントやCodeLabが充実してるのでキャッチアップしやすくていいですね。仕事でAndroid触らなくなって久しいですが書いてて楽しいです。

コード

github.com

最後に宣伝

www.ntv.co.jp

chihayafund.com