長野エンジニアライフ

東京から長野に移住しました。

長野でWebエンジニアになる方法

都内のSIerから長野のWebエンジニアへIターン転職しました。Wantedlyにも↓類似記事あげていますが、改めて個人ブログでも記事にしてみました。 www.wantedly.com

今回の記事では、自己紹介を踏まえながら長野Webエンジニアになるまでの経緯を書きました。

最初に、、

自己紹介

- 1994.7.15 東京都江戸川区生まれ
- 2017.3.31 都内の大学 卒業
- 2017.4.1 ~ 2019.3.31 都内でSIerエンジニア
- 2019.4.1 ~ 長野Webエンジニア ←イマココ

色々なご縁があり長野でWeb系エンジニアに転職することができました。SIerからWeb/リモートワーク/地方移住を考える人は多くいると思います。

今回は 、以下の3点についてまとめてみました。

  • Web系転職にむけてやったこと
  • 長野移住にむけてやったこと
  • 地方エンジニアはオワコンか

まずは、、

Web系転職にむけてやったこと

1. twitterで駆け出しエンジニアをフォローしてみた
2. ポートフォリオ作成
3. Wantedly/Greenに登録してWeb系企業を見た
4. Web系企業と面談(採用面接とは無関係)

1. twitterで駆け出しエンジニアをフォローしてみた

一番転職するにあたってモチベ維持になったかもしれません。twitter界隈の、駆け出しエンジニアの勢いの力を借りて行動力を上げていました。

2. ポートフォリオ作成

SIer時代に自分が長期的に趣味で作っていました(その趣味が転職に至ったのかもしれません)。メルカリで欲しい商品が1円でも安くなったら通知してくれるツーチンという名称のアプリを自作していました。また、レンタルサーバを借りてWordPressを触ったりもしていました。

3. Wantedly/Greenに登録してWeb系企業を見た

色んな会社を見ました。事業をもっている会社や、技術支援にフォーカスを当てている会社など色々ありました。個人的には、トレンドの技術のキャッチアップしている社員に与えられる裁量権が大きいに注目して企業探しをしていました。

4. Web系企業と面談

上記の転職支援サイトで見つけて本当に興味を持った会社に連絡しました。採用面接ではなく、面談という形で企業説明をしてくれる企業が多いので、遠慮せずに連絡してお願いすると良いです。実際に私が、面談した会社は2社だけ(東京の会社、長野の会社)でしたが。ここで面談した内の1社が、私が勤めている今の職場です。

地道にSIerからWeb系へと転職活動を行なっていきました。

ただ、地方移住を将来に描いているエンジニアでしたので、この後に続くて移住活動もしていました。

長野移住にむけてやったこと

1. 長野在住エンジニアをフォローしてみた
2. 実際に長野に行った
3. 長野移住説明会等に参加した
4. 物件をスピーディに決めた(一番大変だった)

1. 長野在住エンジニアをフォローしてみた

上記の駆け出しエンジニアをフォローすると似た理由ですが、移住のモチベ維持のためにフォローしていました。他にも長野関係なく、地方で活躍されているエンジニアのエンジニアライフのわかる呟きを見たりもしていました。

2. 実際に長野に行った

回数は4,5回ほど行きました。地方は車社会のイメージが強いですが、県庁のあるような市街地であれば電車も普通にありますし、思ったほど田舎感は無く感じられます。(移住後は、車はあった方が快適ですが、笑)

3. 長野移住説明会等に参加した

具体的に行ってしまうと銀座NAGANOという、銀座にあるシェアスペースで開催される移住交流説明会などに参加しました。長野県で活発な産業・行政についても知ることができるので、より住むイメージがしやすくなります。 www.ginza-nagano.jp

4. 物件をスピーディに決めた

転職先の内定後に速攻で内見予約して1日で決めました。移動中や移動時間にスーモとかでいいなと思う物件は目星つけておくとスピーディに決めれます。都会よりも、安い/広い部屋に住めます。(広すぎて困るくらい広い間取りの物件もあります、、笑)

最後に、都会から離れると技術についていけなくなりそうって不安になる人もいると思います。 私も今の会社を知る前の転職活動時期はそう思っていました。

だけど、そんなことはありません。一番、今回の記事で伝えたい内容かもしれません。

地方エンジニアはオワコンか?

ぜひ、下のtweetのスライドを最後まで見てください。タイトルだけだと不安になりますが、最後まで見終えるとナルホドと思いました。

私の所属している株式会社日本システム技研(略称・JSL)は長野に拠点を置く会社です。

長野でWebエンジニアになる前の私が、都会から離れると技術力が落ちるだろうと不安にならなくなったのは、JSLが既に長野でも、東京でもエンジニア界隈を盛り上げていたからです。

PyCon JP/DjangoCongress JPでは、JSL社員が毎年スピーカとして登壇しています。この姿をみて、技術のキャッチアップをしていく事に場所なんて関係ない事に気づかされました。今年(2019年)のPyConではゴールドスポンサーとしてもJSLは参加しました。 www.wantedly.com

最後に、、、

2019年に長野県は、信州ITバレー構想を策定しました。
また、 2019年のDjangoCongress JPの開催地は長野県です。

長野から日本を、そして世界を盛り上げるエンジニアになりませんか? www.wantedly.com

他に聞きたい事があれば、気軽にコメント・twitterで絡んでください。笑

apkファイルからリリースファイルの作成までのメモ

事前準備

Cordovaのapkファイル作成時に--releaseオプションを指定する

npm run cordova-build-android --release      

これだけだと、app-release-unsigned.apkという署名なしのapkファイルが作成されることになる

署名付きapkファイルの作成手順

参考記事から引用

鍵の生成
keytool -genkey -v -keystore <鍵ファイル名> -alias <エイリアス名> -keyalg RSA -validity <有効期間>
署名apkの作成
jarsigner -verbose -tsa http://timestamp.digicert.com -keystore <鍵ファイル名> <apkファイル> <エイリアス名>

apkファイルの最適化

zipalign -v 4 <元のapkファイル> <最適化後のapkファイル>

最適化後のapkファイルは、Google playのリリースファイルとして利用できる

参考記事

qiita.com

Cordovaで作成したandroidアプリのアイコン設定をした時のメモ

デフォルトのアイコンが表示される

以下、Cordovaで作成したandroidアプリのアイコンが未設定の場合 f:id:kawakeee:20200813023019p:plain

アイコン設定手順

cordova create hogehogeのコマンド実行後に作成される、config.xmlでの設定が必要。

config.xml内の<platform name="android">タグ内に以下を追加

<icon src="res/android/ldpi.png" density="ldpi" />
<icon src="res/android/mdpi.png" density="mdpi" />
<icon src="res/android/hdpi.png" density="hdpi" />
<icon src="res/android/xhdpi.png" density="xhdpi" /

src-cordova/res配下に該当メニューアイコンを作成して置いておく。

再度デバッグして確認して、アイコンが指定したものが表示されていればok f:id:kawakeee:20200813024424p:plain

粗いけどok。笑

参考記事

cordova.apache.org

メニューアイコンサイズのガイドラインについて
blog.excite.co.jp

cordovaの導入メモ

cordovaのどおうにゅう

node環境 v12.10.0

対象プロジェクト配下にて

npm install -g @vue/cli
vue add cordova

vue add cordovaにてsrc-cordovaが作成されず、エラーが発生する場合がある

error: ENOENT: no such file or directory, open '/Users/hogehoge.../src-cordova/www/.gitignore'

ビルド手順

対象プロジェクト配下にて

cordova create src-cordva
npm run cordova-build-android

警告が出力される

No platforms added to this project. Please use cordova platform add <platform>.

src-cordova配下で

cordova platform add android

再度、対象プロジェクト配下にて

npm run cordova-build-android

ビルド完了時にapkファイルが作成される

BUILD SUCCESSFUL in 30s 43 actionable tasks: 43 executed Built the following apk(s): ...

デバック手順

実機をUSB接続した状態で以下のコマンドを実施

npm run cordova-serve-android

アイコンはcordovaのマークだが実機にandroidアプリとしてインストールできた。

参考記事

vuetifyjs.com

qiita.com

【Firebase】Functionからstorageの署名付きURLを取得しようとしたらError: 7 PERMISSION_DENIED: Missing or insufficient permissions.

事象

[Firebase] Functionからstorageの署名付きURLを取得しようとしたら 以下のエラーが発生(コンソール画面からIAM APIは有効に設定済み かつ トークン作成者の権限も付与済)

Error: 7 PERMISSION_DENIED: Missing or insufficient permissions.

原因

IAM有効にすると、この辺りの認証情報の初期設定が必要になるっぽい? firebase.google.com

対応方針

  • GCPのコンソール画面からfirebase-adminsdkの鍵をJSON形式で作成
    f:id:kawakeee:20200610013009p:plain

  • functionのソース配下に鍵を配置

  • initializeAppを以下のように呼び出して初期化
const serviceAccount = require('<鍵を配置した階層>')
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://<project-name>.firebaseio.com',
  storageBucket: '<project-name>.appspot.com''
})

以上で、storageの署名付きURLを取得ができた。

参考記事

qiita.com

node.jsからサービスアカウント使ってFirebaseへ接続する時のメモ · GitHub

【Firebase】Functionからstorageの署名付きURLを取得しようとしたら Error: Permission iam.serviceAccounts.signBlob is required to perform this operation on service account projects

事象

[Firebase] Functionからstorageの署名付きURLを取得しようとしたら 以下のエラーが発生(コンソール画面からIAM APIは有効に設定済み)

Error: Permission iam.serviceAccounts.signBlob is required to perform this operation on service account projects

原因

対象projectに対するservice accountが未設定のため上記エラーが発生

対応方針

コンソール画面にて、対象プロジェクトに対してサービスアカウントトークン作成者の権限を付与する

参考記事

cheerio-the-bear.hatenablog.com

【Firebase】Functionからstorageの署名付きURLを取得しようとしたら Error: Identity and Access Management (IAM) API has not been used in project XXXXX

事象

Functionからstorageの署名付きURLを取得しようとしたら以下のエラーが発生した。

Error: Identity and Access Management (IAM) API has not been used in project

原因

GCPのコンソールにて、Management (IAM) APIが無効になっていたことが原因。

f:id:kawakeee:20200610002950p:plain

対応方針

エラー全文を読むとコンソール画面のURLが記載されているのでコンソール画面から有効にしてあげると上記エラーが消えた。

参考記事

cheerio-the-bear.hatenablog.com

Error: @grpc/grpc-js only works on Node ^8.13.0 || >=10.10.0の対応

起こったこと

firebaseのfunctionをデプロイしたら以下のエラーが発生

✔  functions: Finished running predeploy script.
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...

Error: Error occurred while parsing your function triggers.

Error: @grpc/grpc-js only works on Node ^8.13.0 || >=10.10.0

原因

nodenvでバージョンが* 9.10.1を使用していた

対応

node環境8.13.0に合わせてデプロイを行う

  • 8.13.0をインストール
nodenv install 8.13.0
  • バージョンの切り替え
nodenv global 8.13.0

切り替え後、本エラーが吐かれずにdeployできた。

参考記事

github.com

firebase.google.com

joppot.info