blog

日常・技術のことを記録する

退職記録

退職して1ヶ月経ちほとぼりがさめてきた(?)ので、ちょっといろいろと振り返ってみようと思う。
再就職する前に読み返して、職務経歴書を書くタネにしようかなと思い。記録しておかないと忘れちゃうもんな。

 

仕事を辞めて1ヶ月経った。
新卒から経理職を7.5年経験したのち、思うところあり、2年前にIT業界に飛び込んだ。
そして、2年間勤めた会社を辞めた。
プロジェクトがちょうどクローズするタイミングで。
晴れて無職になった。

 

2018年11月から、2020年10月まで丸々2年間、Sierで開発業務を担当した。
ネットワーク系アプリの開発だった。
言語はPython,Java
大規模ウォーターフォール開発で、わたしが担当したのは末端の末端のそのまた末端みたいなところ。
主な業務は試験項目書の作成だったり、取引先に提示する設計書の作成だったり。
設計書といっても、既存のシーケンス図を文章にしてWordに書き起こす...みたいな作業が多かったので、設計力が身につくような感じでもなかった。
プログラミング業務の割合は、担当業務の1/10くらい。アプリで使用するちょっとしたツールを作るとか、そんなもんだった。

このままだとキャリア的にまずいな(自分の思い描くSE像に近づいている気がしないな)と思った。
わたしの予定では、2年この仕事をしたら、自分の軸となる言語を1つくらいはまともに書けているようになっているはずだった。
が、まともに書けない。小さなプログラム1つ作るので精一杯だった。
同じ年次の人と話していても、わたしのプログラミング能力は相当低いんだなと感じることが多かった。
私生活では、プログラミングから逃げるように資格勉強をしていたように思う。(インフラ系の資格。楽しい!)
コードがまともに書けない自分を直視するのは嫌だし、書けるようになったところで実務で活かす場所はなかった。
ネットワーク系のアプリ開発ということで、インフラ/ネットワークの基礎知識は実務でそれなりに役立ったのはよかった。

 

経理で1度転職したときは、大規模から中小に転職した。
大きい会社で分業化されているより、ひとりである程度こなせる小さい会社のほうが性に合うと思ったから。これは正解だった。

 

Sierで担当したプロジェクトは、それはもう巨大だった。
1年単位を2つ経験した。
SEの知り合いに聞くと、もちろんモノによるがプロジェクトは大体3ヶ月くらいのものが割合としては多い印象だそうなので、私が担当したのは大きめなんだろうと思っている。
ここでもやはり全体像が見えないことがストレスになった。わたしが担当したのは巨大なシステムのバックエンドの1パーツだったので、UIからの繋がりも見ることはできなかった。何十とあるコンポーネントの末端の1つをせっせと作っていた。自分が作ったパーツがユーザからどのように使われるのかもよくわからなかった。

 

プロジェクトがクローズする2ヶ月前、次の現場は5Gの検証だと言われた。(このタイミングで5Gの検証...?)
もちろん学ぶものはたくさんありそうだけど、わたしはコードが書きたかった。
検証って、たぶん書けないよね、コード。
テスターみたいな感じだろうか。いまとなっては確かめる術はないけど...
自分でプロジェクトを選べる感じでもなく、またキャリアについて相談できる環境ではなかった(思えば入社して、年に1回の査定面談以外で、誰かとキャリアについて面談したこと1回もなかったな)。
これはこのまま次の現場に入っても、ますます自分の思い描くキャリアとはかけ離れるなと思い、退職を決意した。
ありがたいことに慰留していただいたり、また戻っておいでと声をかけていただいて、かなり悩んだけど。
ちょっとゆっくりしてみたかったし。

 

幸いなことに蓄えはあるし、学びたいことも取りたい資格も山ほどあるので、しばらくは退屈しなさそう。急に飽きたから続きはまた今度書く。

 

次回以降、書くことメモ
・なぜ転職でなく無職を選んだか
・1ヶ月目にやったこと
・2ヶ月目にやる予定のこと

postgresqlインストールメモ

CentOS7

●install

yum -y install postgresql-server
postgresql-setup initdb

●DBサーバへ接続

psql -U postgres -h 127.0.0.1 -w

●DBへ接続(\cの後はデータベース名)

\c sampledb

●テーブル作成

sampledb=# CREATE TABLE sampletbl
sampledb-# (id char(4) not null,
sampledb(# PRIMARY KEY(id));
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "sampletbl_pkey" for table "sampletbl"
CREATE TABLE

●テーブル一覧を見る

sampledb=# \d
           List of relations
 Schema |   Name    | Type  |  Owner   
--------+-----------+-------+----------
 public | sampletbl | table | postgres
(1 row)

●テーブル定義をみる

sampledb=# \d sampletbl
     Table "public.sampletbl"
 Column |     Type     | Modifiers 
--------+--------------+-----------
 id     | character(4) | not null
 name   | text         | not null
Indexes:
    "sampletbl_pkey" PRIMARY KEY, btree (id)

●データベース一覧を見る

postgres-# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)
postgres-# 

●シェルでinsertサンプル(ヒアドキュメントでやる場合)

20/07/07 14:47:05 root@ ~ # cat db_sousa.sh 
#!/bin/bash -

psql -U postgres -h 127.0.0.1 -w <<EOF

\c sampledb

insert into sampletbl(id, name) values (2, 'neko');

EOF

echo $?
echo "終了ラインです"
20/07/07 14:47:12 root@ ~ #

Junitでプライベートフィールドにアクセスする方法

javaJunit単体テストを書いていて、 privateフィールドに定義した定数にアクセスするのってどうやるんやろと思ったときのメモ。

例: TargetClass.javaにprivate定数"FOO = 1"を定義しているとして、 テスト用クラスのTargetClassTest.javaで、FOO値を取得して自前の比較値とアサートする方法

TargetClass.java

private static final int FOO = 1;

TargetClassTest.java

@Test
public void testDefine() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {

    int hikakuyou_Foo = 1; // 比較用の値
    TargetClass t = new TargetClass(); // テスト対象のクラスをnew
    Class<? extends TargetClass> cls = t.getClass(); 
    Field fld_Foo = cls.getDeclaredField("FOO"); //取得したい定数フィールドを指定
    fld_Foo.setAccessible(true); //アクセス権限を付与

    // assert
    assertEquals(hikakuyou_Foo,fld_Foo.get(t));
    // 結果:比較用が[1]、実際の値が[1]でテスト成功
    }

クラウドコンピューティングの定義メモ

クラウドコンピューティングの定義

NISTが定義したものをIPAが日本語訳してくれてる

https://www.ipa.go.jp/files/000025366.pdf

今日の授業で問われて、言われてみると説明できないなと思い...細かく説明できなくてもいいけど、定義を知っておけばよりよい使い方ができるから把握はしておこう_φ(・_・

セキュリティ脆弱性例

大学の授業で聴いて面白かった

OWASPっていうコミュニティがあるのね〜_φ(・_・

https://owasp.org/www-pdf-archive/OWASP_Top_10-2017(ja).pdf

 

最近ノートに記録ばっかりしててブログに書いてないや。

あとから検索すること考えると、ブログの方がいいよな〜💦

MERNスタック

Node.jsにまつわる教材ってDBがMongoDBなことが多い気がする。
せっかくMySQLインスコしたのになんなの…
と思ったら、「MERNスタック」とかいう開発アーキテクチャがあるらしいことを教えてもらうなど。(PHPでいうMAMPみたいなやつ)

MERN
M:MongoDB
E:Express
R:React.js
N:Node.js

参考URL
http://matz.hatenablog.jp/entry/2017/04/11/000946

 

色々いれたせいでec2無料枠の容量がまずいから、いっそのこと新しくして最初からnginxのっけてMERNで再スタートするか‪(・ε・)キッティングの復習にもなるし。

JavaScript 短く書いてみるメモ

trueになるから、条件式自体をreturnすればOK
変更前

'use strict';
{
    const numbers = [1, 4, 7, 8, 10];
    const evenNumbers = numbers.filter(number =>{
        if(number % 2 === 0){
            return true;
        }else{
            return false;
        }
    });
    console.log(evenNumbers);
}

// 実行結果
[ 4, 8, 10 ]


変更後

{
    const numbers = [1, 4, 7, 8, 10];
    const evenNumbers = numbers.filter(number => number % 2 === 0);
    console.log(evenNumbers);
}

// 実行結果
[ 4, 8, 10 ]

短く書けた\(^o^)/🌟