【Ubuntu Desktop】Albert と CopyQ でクリップボード履歴を管理する

結論

Ubuntu でも Mac の Alfred のようなクリップボード履歴機能を使いたいなら、Albert と CopyQ を組み合わせると良い。

やったこと

Alfred Powerpack に入っている Clipboard History がとても便利で、これ無しでは生きられない体になってしまったので Ubuntu でもなるべく近いクリップボード環境を目指す。

www.alfredapp.com

Albert

まずは Linux 用ランチャーの Albert をインストール。

albertlauncher.github.io

Ubuntu 20.04 向けのコマンドが載っているのでそれを使う。

ansible playbook だとこんな感じ。

- name: Add Albert GPG key
  apt_key:
    url: https://download.opensuse.org/repositories/home:manuelschneid3r/xUbuntu_20.04/Release.key
  become: yes

- name: Add apt repository
  apt_repository:
    repo: "deb http://download.opensuse.org/repositories/home:/manuelschneid3r/xUbuntu_20.04/ /"
    filename: home:manuelschneid3r
  become: yes

- name: Install Albert
  apt:
    name:
      - albert
    state: present
  become: yes

インストールしたらツールバー的なところにアイコンが出てくるはずなので、設定画面を開いてホットキーとか見た目とかいろいろ調整する。

f:id:yukin_01:20200627030533p:plain

また Albert は python拡張機能を作れるらしく、公式で諸々込みのリポジトリを公開してくれているのでついでに入れる。

(ちなみに後述する CopyQ 用の拡張機能もすでに用意されていてとても便利)

github.com

特定のパスに配置するだけで良いらしい。

- name: Install Albert python extentions repository
  git:
    repo: https://github.com/albertlauncher/python.git
    dest: "{{ ansible_env.HOME }}/.local/share/albert/org.albert.extension.python/modules"

CopyQ

次に Linux 向けクリップボードマネージャーの CopyQ をインストールする。

hluk.github.io

他にもいろんな種類のツールがあるが、Albert 拡張機能が対応していたのとインストールの楽さで CopyQ を採用した。

universe リポジトリに入っているので

$ sudo apt-get install copyq

でインストールできる。

(最新版を使いたい人のために PPA も用意してくれている)

CLI で操作したりショートカットで履歴画面を呼び出したりできるらしいが基本的に Albert 経由でしか使わないので別に覚えなくて良い。

念のため設定画面で自動起動になっていることを確認する。

f:id:yukin_01:20200627025137p:plain

Albert Extensions

Albert から CopyQ を呼び出せるように拡張機能を設定する。

f:id:yukin_01:20200627031251p:plain

CopyQ にチェックをつけるだけで cq で履歴が表示されるようになる。

f:id:yukin_01:20200627032829p:plain

余談だが、Albert はデフォルトだとアプリの起動のみで画面切り替えには対応していない。

依存パッケージの wmctrl を入れての上の Extentions で Window Switcher を有効にすると画面の切り替えもできるようになる。

$ sudo apt-get install wmctrl

正直 Alfred 自体そこまで使いこなせていないので他の機能をどの程度 Albert で再現できるかはわからないが、クリップボード履歴機能に関してはかなり近い形で再現できたのかなと思う。

Ansible Playbook

最終的な ansible playbook はこのような形になった。

- name: Add Albert GPG key
  apt_key:
    url: https://download.opensuse.org/repositories/home:manuelschneid3r/xUbuntu_20.04/Release.key
  become: yes

- name: Add apt repository
  apt_repository:
    repo: "deb http://download.opensuse.org/repositories/home:/manuelschneid3r/xUbuntu_20.04/ /"
    filename: home:manuelschneid3r
  become: yes

- name: Install Albert and CopyQ
  apt:
    name:
      - albert
      - copyq
      - wmctrl # for window_switcher.py
    state: present
  become: yes

- name: Install Albert python extentions repository
  git:
    repo: https://github.com/albertlauncher/python.git
    dest: "{{ ansible_env.HOME }}/.local/share/albert/org.albert.extension.python/modules"

Ubuntu 20.04 にアップグレードした

やったこと

一度カーネルとパッケージを最新にしてアップグレードを実行する。

$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

$ sudo apt-get install update-manager-core
$ sudo do-release-upgrade

ダメだった場合 -d オプションをつける。

$ sudo do-release-upgrade -d

後処理

python3

強制バージョンアップの影響か pip3 経由で入れたライブラリが壊れていたので入れ直した。

$ sudo pip3 install ansible

Ansible を走らせてエラーを潰していく。

rbenv

Ansible で入れていた ruby-build 依存ライブラリの libgdbm5libgdbm6 に変更する。

github.com

apt リポジトリ

アップグレード時に無効化された apt リポジトリについて対応する。

  • /etc/apt/sources.list の整理
    • bionic 時代のコメントアウトがそのまま残っていた
    • 直接編集してもよいが Software & Upgrades でポチポチするとわかりやすい
  • /etc/apt/sources.list.d/~ の整理(公式の対応次第)
  • ppa は未対応なら ansible playbook からコメントアウトするとか

software-and-upgrades

nvidia driver

公式は対応していたがアップグレード時に無効化されていたので ppa を入れ直す。

sudo add-apt-repository ppa:graphics-drivers/ppa

sources.list.dbionic のままになっていたのを修正する。

sudo mv graphics-drivers-ubuntu-ppa-bionic.list \
  graphics-drivers-ubuntu-ppa-focal.list

そもそも Ubuntu 19.04 からはデフォルトで公式ドライバが入っているっぽいので(たしかに ppa を入れ直さない状態でも使えていた)普通に使う分にはそれで良さそう。

gihyo.jp

golang

github.com

今までは ppa 経由で入れていたが、まだ focal に対応していなかったので snap 経由で入れるように Ansible を修正した。

+ - name: Uninstall packages from apt
+   apt:
+     name:
+       - golang-go # migrate to snap
+     state: absent
+     update_cache: yes
+   become: yes

  - name: Install packages from snap
    snap:
      name:
+       - go
        - ...
      classic: yes
    become: yes

その他

2020/05/02 時点で focal 未対応だったリポジトリ

  • docker
    • 公式対応待ちで良さそう

Remove python2

$ sudo apt purge python2.7-minimal
$ sudo apt autoremove
$ which python2
python2 not found

Google Cloud SDK

cloud.google.com

上記の方法でインストールしていた場合、Google Cloud SDK 自体は python3 に対応しているが apt リポジトリ上では python2 に依存したままなので python2 がないと(apt-get 経由では)インストールできなかった。

# sources.list.d に追加された状態
$ sudo apt show google-cloud-sdk   
Package: google-cloud-sdk
Version: 290.0.0-0
Priority: optional
Section: misc
Maintainer: Google Cloud SDK Authors <https://code.google.com/p/google-cloud-sdk/>
Installed-Size: 278 MB
Depends: python2.7
Recommends: python-crcmod
Suggests: google-cloud-sdk-app-engine-java, google-cloud-sdk-app-engine-python, google-cloud-sdk-pubsub-emulator, google-cloud-sdk-bigtable-emulator, google-cloud-sdk-datastore-emulator, kubectl
Conflicts: gsutil
Homepage: https://cloud.google.com/sdk/
Download-Size: 47.8 MB
APT-Sources: http://packages.cloud.google.com/apt cloud-sdk/main amd64 Packages
Description: Utilities for the Google Cloud Platform

結局 snap 経由でのインストールに変えた。

  - name: Install packages from snap
    snap:
      name:
        - go
+       - google-cloud-sdk
        - ...
      classic: yes
    become: yes

テーマ

Ubuntu 公式の Yaru がいい感じになっていたので採用する。

Appearance

github.com

アイコンだけは Tela-ubuntu を引き続き使う。

感想

パッケージ周りで多少躓いたところはあったが、python2 非依存にできるしテーマも洗練されているし、アップグレードしてよかったなと思う。
元々 Chrome でタブを開きまくってもメモリあまり食わなかったり、Linux カーネルなだけあって Docker が速かったりして快適だったので機会を見つけて使っていきたい。

あと snap とても便利。

Prezto から Starship に乗り換えた話

正確には Prezto と Starship を共存させた話です。 シェルの環境構築は一度済ませてしまうと忘れがちなので、乗り換えたタイミングで手順を残しておきます。

元々は以下のような環境でしたが、描画が少し遅いのが気になっていました。(Enter を長押しすると顕著)

Rust 製の Starship というツールが良いと聞いたので試しに入れてみましたが、結論から言うと速くて便利で最高の体験を得られました。

starship.rs

github.com

macOSUbuntu を使っているのでそれぞれにインストールしました。
README には載っていませんでしたが、Ubuntu でも snap 経由で入れられるので楽です。

homebrew

$ brew install starship

snap

$ sudo snap install starship

Starship の設定ファイルは toml で記述します。デフォルトのパスは ~/.config/starship.toml ですが個人的に扱いづらかったので変更しました。

.zshrc

最初は Starship だけ設定していましたが、zsh-syntax-highlighting や zsh-completion に相当する機能はなかったので結局 Prezto も併用しています。

# Source Prezto.
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
  source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
fi

export STARSHIP_CONFIG=~/.starship.toml
eval "$(starship init zsh)"

.zpreztorc

Prezto の設定は元々ほぼデフォルトのまま(prompt のテーマを powerlevel9k にしていたくらい)でしたが、この際に見直して読み込む module を最低限に絞りました。

zstyle ':prezto:load' pmodule \
  'utility' \
  'completion' \
  'syntax-highlighting' \
#  'environment' \
#  'terminal' \
#  'history' \
#  'directory' \
#  'spectrum' \
#  'prompt' \
#  'autosuggestions'

.starship.toml

prompt_order で表示順を変えたり、改行を消したり、Kubernets の context を表示するようにしたりしています。(大体の項目はデフォルトで有効ですが Kubernetes のように一部無効のものもあります)

add_newline = false
prompt_order = [
  ...
]

[aws]
displayed_items = "profile"

[character]
use_symbol_for_status = true

[directory]
truncation_length = 5

[kubernetes]
symbol = "🐳 "
disabled = false

色もいい感じについてかなり快適な環境になりました。Enter 連打にも耐えうる描画速度で今のところとても満足しています。

BTO パソコンに Ubuntu Desktop をセットアップした(備忘録)#2

前回

yukin-01.hatenablog.com

Ansible

Zsh などの各パッケージ や dotifles などは Ansible で設定しました。 Mac では Homebrew と shell script でセットアップしていたので二重管理のような形になってしまいましたがまあ許容範囲内かなと。

www.ansible.com

apt install や dotfiles のシンボリックリンク以外にもいろいろ自動化しようとしたら割とボリュームが増えました。。。

github.com

あと単純に apt パッケージが用意されていないソフトウェアを一つ一つ Ansible でインストールしていくのは結構骨が折れるので、どこまで自動化するか悩みどころです。 Docker はまあ使うのでやってみたらこんな感じになりました。

qiita.com

テーマ設定

gnome-tweaks と gnom-shell-extensions を入れて、テーマやアイコンをカスタマイズしました。 User Themes を適用させたいだけだったので、ブラウザのアドオンは入れずに Tweaks の画面から有効にしました。

f:id:yukin_01:20190810182139p:plain

テーマやアイコン自体はこのサイトから良さげなものを落としてきてそれぞれ

~/.icons
~/.themes

にコピーするだけで設定できるようになります。

f:id:yukin_01:20190810172455p:plain

最終的にはこんな感じになりました。

これでセットアップでやったことはおそらく一通り書き記せました。 未来の自分が新しく Ubuntu 使うときに困らないようになればいいなと思います。。

まとめ

最後に思ったのは、自分が意外と環境構築(の自動化)が好きなんだなということです。 インフラもネットワークも全くわからない状態ですが、業務で Terraform や Packer を触っていても結構楽しいので何か性に合ってるんだろうと思いました。

せっかく Ubuntu で人権を手に入れたので、これからも Ansible 化を進めたり、コンテナがんがん立ち上げたり、いろいろやっていきたいです。

BTO パソコンに Ubuntu Desktop をセットアップした(備忘録)#1

経緯

そろそろ新しいPCが欲しいと思っていた頃で、選択肢としてはいろいろありました。

  1. MacBook Pro
  2. Mac mini
  3. ThinkPad (Ubuntu)
  4. BTO パソコン

ガンガン Docker 使っても耐えうる環境が良かったのと、同じ価格帯で倍近く性能が高かったということもあり、ツクモで整備済みの BTO パソコンを買うことにしました。

だいたいのスペックは以下の通り。

CPU AMD Ryzen 5 3600X (6コア 12スレッド)
GPU NVIDIA GeForce RTX 2070 / 8GB
メモリ 32GB (8GB × 4)
SSD 1TB

素人知識で Ryzen が〜とか即持ち帰りできて〜とか色々注文したのですが割とドンピシャなやつがちょうど入荷したばかりだったので即決でした。
最終的には開発用のデスクトップとノートが1つずつあればいいかなと思っているので必要になったら MBP 買うかなという感じです。

  • OS 入れ替えると保証対象外
  • 元々ゲーミングPCなので機会があれば手を出してみたい
  • WSL2 と VSCode があれば Windows でもいけるんじゃないか

という思いがあり最初は Windows で頑張っていたのですが、やはり業務で慣れ親しんでいる Mac との差と WSL2 の使い勝手が気になってきたので Ubuntu を入れることにしました。
デュアルブートは自信が無かったので諦めて、WSL2 が WindowsUbuntu Desktop とを気軽にスイッチできるようになったらまた入れ直すつもりです。

Ubuntu インストール

昔ノート PC に Ubuntu を入れたときに作った DVD があったので、それを差し込んで再起動したのですがインストール画面が出てきませんでした。。。

今は BIOS じゃなくて UEFI というファームウェアが主流らしく

www.archlinux.site

www.archlinux.site

上記の記事を参考に起動ディスクの順番を入れ替えました。
全く何をやっているかわからないままでしたが、とりあえず UEFIブートローダーとして Windows Boot Manager ではなく GRUB を起動するようになればいいんだなという理解です。。

この最中に

  • Secure Boot をオフにする
  • CSM を有効にする

ということをしましたが、以下の記事でやめとけと言われていることにあとから気づいて焦りました…。
とりあえず今の所うまくいっているので良しとします。

qiita.com

各種ドライバのセットアップ

無線 LAN

内蔵 Wi-Fi がなく外付けだったので最初は認識してくれませんでした。
有線 LAN で事足りるのですがとりあえずセットアップしようとしたらショッキングな記事が。。

qiita.com

自分が購入したのは BUFFALO AirStation の WI-U3-866DS でした。

www.buffalo.jp

いろいろドライバのインストールとかしなきゃいけないのかなと思っていましたが、後述する「Software & Updates」で設定したらすんなり使るようになったので良かったです。。

f:id:yukin_01:20190721194329p:plain

NVIDIA

購入時についていた NVIDIA 用のドライバはもちろん Windows 10 向けなので Ubuntu では自前でインストールする必要があります。 ググるとこんな記事がでてきて半泣き状態でした。

gihyo.jp

qiita.com

色々と方法があるようですが、比較的新しめの、成功していそうな記事を参考に NVIDIA の PPA パッケージ経由でやってみることにしました。

note.mu

まずはリポジトリを追加して、

$ sudo add-apt-repository ppa:graphics-drivers/ppa

推奨ドライバを検索しました。

$ sudo ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:08.1/0000:0e:00.3/usb7/7-3/7-3:1.0 ==
modalias : usb:v0411p025Dd0000dc00dsc00dp00icFFiscFFipFFin00
vendor   : BUFFALO INC. (formerly MelCo., Inc.)
driver   : rtl8812au-dkms - distro free

見つからない。。。

しばらく放置したあと、「Software & Updates」>「Additional Drivers」から確認すると見つかりました。

f:id:yukin_01:20190721195414p:plain

再起動したおかげで表示されるようになったとかでしょうか。。

$ sudo ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:03.1/0000:0c:00.0 ==
modalias : pci:v000010DEd00001F07sv000019DAsd00001520bc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-418 - third-party free
driver   : nvidia-driver-410 - third-party free
driver   : nvidia-driver-430 - third-party free recommended
driver   : nvidia-driver-415 - third-party free
driver   : xserver-xorg-video-nouveau - distro free builtin

== /sys/devices/pci0000:00/0000:00:08.1/0000:0e:00.3/usb7/7-3/7-3:1.0 ==
modalias : usb:v0411p025Dd0000dc00dsc00dp00icFFiscFFipFFin00
vendor   : BUFFALO INC. (formerly MelCo., Inc.)
driver   : rtl8812au-dkms - distro free

NVIDIA GeForce RTX 2070 用のドライバを公式サイトで検索しましたが、上で推奨されている nvidia-driver-430 で良さそうでした。

www.nvidia.co.jp

結局 CLI 経由ではなく「Software & Upadtes」からドライバを選択して適用しましたが、無事うまく行きました。

f:id:yukin_01:20190721203509p:plain

Ubuntu 18.04 自体が安定してきたということなのか、ドライバのセットアップも思ったより楽にできて良かったです。

パッケージのインストールやテーマをカスタマイズするのはまだ完遂できていないのでまた別の記事にしたいと思います。

退職しました

8月末付で1年ちょっと務めた会社を退職しました。 自分がやってきたことを整理するためにも、退職エントリを書いてみようと思います。

IT未経験からの採用

社会人1社目でした。ですが新卒入社ではありません。 いわゆる真面目系クズで、だらだらと大学生活を6年続けて2017年3月に退学しました。

手に職をつけるためにどうしようか、と考えたときに、元々理系学部(非CS)に通っていてITには抵抗がなかったたこともあり、学歴よりも実力が評価されると言われていたプログラマーになろうと決意します。

今思えばオンラインのプログラミング学習サービスに取り組む、などいくらでも方法はあったのだろうと思いますが、無職期間を過ごすという選択肢がそもそも思い浮かばなかったのと、学位取得を目指して編入という道も視野に入れていたため、未経験でアルバイト採用してくれるIT企業を探すことにしました。

流石にそんな企業ないとは思っていたので、プログラミングスクールに通うことも視野に入れていましたが運良く内定いただけたのでそのまま就職(アルバイト採用)しました。

どんな会社だったか

主に物流システムなどの受託開発を行なう、十数人ほどの小規模な会社でした。 そんな中で、自社サービスとして新規開発中の在庫管理システムがあり、その iOS アプリ開発を担当することになります。

当時のプロジェクトは、

  • iOS アプリ開発、運用の経験者はいない
  • プロトタイプの開発者(以下同僚氏)とプロダクトの責任者が1人ずつ
  • 使用ライブラリは FMDB (SQLite を扱うライブラリ) のみ
  • CocoaPods などのパッケージ管理システム無し
  • Git などのバージョン管理システム無し
  • 設計書や仕様書もざっくりとしたものだけ

といった状況で、MVC すら知らない私はとりあえず UIKit の使い方を覚えてオレオレ設計の独自実装を進めました。今思い返すとガチガチのスパゲッティコードに、副作用のオンパレード、DRY ガン無視だった気がします。恐ろしい…

1人開発者に…

2人で開発を進めて数ヶ月が過ぎ、同僚氏が客先に常駐することになりプロジェクトを離れました。その影響でシステムの管理画面とサーバ部分の開発も担当することになったのですが、当時 HTTP やサーバの基礎知識すらなかった私にとってはかなりの苦行でした。
引き継ぎ時点での技術スタックはこんな感じです。

フロントエンド

バックエンド

同僚氏はそもそもプログラミング初心者(でも私よりは経験があった)で、まともなメンターもいなかったようなので仕方がないとは思いますが、 フロントは jQuery 無しで Ajax 直書き、サーバサイドも WAF 使わずに何重にも重なったネスト処理で実装されていました。 当時の私でも流石に危機感を覚えて、

  • Express.js
  • Pug(Jade)
  • jQuery/Bootstrap

を導入して再実装しました。

セキュリティ面では SQL インジェクションはもちろん、HTTPS 非対応、パスワードも平文で保存といった状況でしたが、なんとか対応しました。結局半年以上かかりましたが、自信はありません。
今思えば、経験の浅い内はフルスタックの WAF の恩恵に授かるべきだったなと切実に思います。

開発メンバー追加

10月頃から採用が始まり、新メンバーが入ってきました。
個人的にはまともな知識と経験のあるエンジニア採用してくれよという気持ちしかありませんでしたが、体力のない会社なので叶わない願いでした。
チーム開発に向けて危機感を覚えたので

  • Git/SourceTree/GitLab
  • ESLint

を導入します。 定期的にメンバーが増えたり減ったりしていったので、Markdown を覚えてドキュメントも少しだけ整備しました。 一応最終的には GitLab の MergeRequest ベースで開発を行うようにできたかな(根付いたかは別)と思います。

余談ですが、Web 開発経験がある即戦力のエンジニアと一緒に仕事ができたのは、結局辞める2か月前くらい。話が通じる人がいるだけでこんなに違うんですね。

Docker との出会い

初心者あるあるですが、開発環境構築に見事に躓きました。
VMWareVirtualBox のような仮想環境の知識もなく、流行りに乗っかりたい気持ちが強かったので、Docker を導入することに。 Docker for Desktop と Express4 が出て日が浅かったので、古めの情報ばかりでかなり苦労しました。

その時の知見を自分なりにまとめて Qiita に投稿してみたりもしました。

qiita.com

qiita.com

Kubernetes そして GKE へ

コンテナで開発したはいいものの、サーバへのデプロイ方法が全くわかりませんでした。 ちょうどこの頃 Docker 関連の Meetup に行ってみた影響もあり、Kubernetes めちゃくちゃかっこいいじゃん、どうせなら本番環境でもコンテナ使いたいよね、みたいな流れで GKE でのデプロイに挑戦することにしました。無知って怖いですね…。

一応プロジェクトの要件的に toB の顧客ごとにサーバを立てたいというのがあり、当時はマルチテナントの考え方すら知らなかったので、k8s で顧客ごとに Deployment を作るのがマッチしていると主張して周りを押し切りました。本番用のコンテナイメージを作ったり、yaml に四苦八苦したりしましたが、k8s の勉強会やイベントに足を運んでとにかくインプットを重ね、デモ環境になんとかデプロイできました。 CI/CD までは手が回らなかったですが、

  • SourceTree に Tag をつけて Push
  • Cloud Build (当時は Container Builder) で Tag を検知して Image を自動で build、 Container Registry に自動で Push
  • 手動で GKE に kubectl apply -f hoge.yaml

といった具合にデプロイする環境を作りました。

アーキテクチャ(主にモバイルアプリ)

コンテナ関連技術とは別に、モバイルアプリのアーキテクチャにも興味を持ち始めました。 この頃には、学習コストや導入コストを考えずに流行り物に乗っかってしまう癖が完全に着いてしまっていたので

  • MVVM with RxSwift

を新たに採用しました。 一応 Flux やクリーンアーキテクチャはオーバーデザインだろうと判断しての MVVM なので、ある程度妥当性はあった……と思いたいです。

いろんなスライドや記事を参考にしましたが、公式のサンプルコードが非常に参考になりました。RxSwift 自体 Pure Swift で書かれていますし、ライブラリに手こずったらソース読もうね、というマインドはここで身につけられた気がします。

転職

技術選定や新技術の導入など、色々と自由にさせてもらっていましたが、徐々に不満を感じるようになりました。

まずは、インフラ・セキュリティ・運用面でのコストやその重要性が経営層に認識されていないことです。
会社にインフラエンジニアのような人はおらず、 Web の経験者も少ないので、普通はパブリッククラウドのマネージドサービスを最大限に利用する方針になると思います。 しかし経営層は「適当に VPS サーバ借りて構築すればいいじゃないの?」というスタンスで、GCP の利用料を月1万に抑えても釘を刺されたりして、コストの必要性を理解してもらえませんでした。 監視運用にどれだけの学習コストと人的コストかかるかわかってんのかよクソが。。。

次に、社内の環境に限界を感じたことです。
CTO やメンター的なエンジニアが不在で、システムをどう構築するか(アーキテクト的な領域?)を考える負担が自分に集中していました。 最低限の情報収集能力は身につけていたつもりなので試行錯誤しながら構築していましたが、 ベストプラクティスやネット記事には載らないような常識については、経験者がいる方が絶対に学習効率はいいはずです。 ハイレベルな環境に身を置いてもっと強いエンジニアに影響を受けながら成長したい、という思いが強くなりました。

(あとは年収の低さも大きな要因でした。昇給の時期に会社の現状と将来性を察してしまいました。)

そんな感じで、ふと参加した勉強会のスポンサーになっていた Forkwell さんのスカウトサービスに登録してみたらトントン拍子に話が進み、 今の会社にお世話になることになりました。

jobs.forkwell.com

これからは

Swift と Firebase で iOS アプリの開発をやっていく予定です。
サーバサイドとインフラも捨てがたいのですが、Firebase を身につけて置いて損は絶対にないなと思ったので頑張ります。
あとは純粋にプログラミング力高めたいです。アウトプットも少しずつ増やしていきます(予定)。

文章力が皆無なので冗長になってしまいました。備忘録的なものだからと自分に言い聞かせて、とりあえずここまで書ききった自分を褒めたいと思います。

はてなブログはじめました

はじめに

簡単な挨拶と自己紹介をします

  • 都内で Software Engineer 2年目
  • 転職活動を終えて2018年9月から2社目に所属
  • iOS エンジニアとして Swift と Firebase の開発(予定)

興味がある/やってみたい分野

モバイルアプリ開発

Swift/RxSwift/MVVM Clean Architecture/TDD

バックエンド開発

Node.js/Go

コンテナ、インフラ、自動化、DevOps

GCP/GAE/GKE/Docker/Kubernetes etc

おわりに

前職で広く浅くかじっていたので色んな方向に興味が向いていますが、
身を固めるのはまだしばらく後でもいいかなあと思っています。
コンピュータサイエンスの全ての分野に精通したい人生だった…

アウトプットが苦手なので更新頻度は低くなりそうですが努力します
退職エントリ書きたくて始めたみたいなところあるので
まずはそれから、、、