金魚の備忘録

新人エンジニアの半分日記な備忘録。週一くらいで更新したい。

2024年の振り返り

2024年に利用/勉強した技術をまとめる

お仕事

1-8月: Flask製アプリのバックエンド開発

新規機能開発も既存機能の修正も両方担当。
詳細設計から負荷テストまでを行った。

使用した技術など

  • Python
    • SQLAlchemy 1.x
    • Flask-RESTX
    • pytest
    • Pydantic
    • Locust
  • SQL
  • AWS
    • Lambda Layer
    • CodePipeline

8-10月: マイクロサービス開発

上と同じアプリの新機能をマイクロサービスとして実装。
既存のアプリとは異なる技術を使用し、組織の技術力向上を目的とした試みだった。
主にTerraformとAWSについて勉強しインフラ部分を担当した。
マイクロサービス全体はTypeScriptで実装され、多少書くこともあった。

使用した技術など

  • node.js
  • TypeScript
  • GraphQL
  • Terraform
  • AWS
    • AppSync
    • Aurora Serverless v2 for PostgreSQL
    • RDS Data API
    • Cloudwatch
    • S3
    • Lambda
    • Event Bridge
    • Code Build / Code Pipeline

10月: E2Eテスト作成

バックエンドのリファクタをするためにE2Eテストを作成して最低限の退行に対する保護をする試み
専門ではないフロントエンドを扱うことになり苦労した。

使用した技術など

  • Playwright
  • Cypress

11-12月: WebSocketを使用した通知機能のプロトタイプ作成

アプリにWebSocketを使用した通知機能を実装する可能性が出てきたため、技術検証用のプロトタイプを作成。
WebSocketはAPI Gatewayを使用して実装し、通知内容の作成にはaws Fargateを使用した。
以前にTerraformでインフラ構成をしたときに、使用できなかったTerragruntを使用した。

使用した技術など

  • websocket
  • Terragrunt
  • AWS

3月: CI/CD整備

開発用に小さなオンプレサーバがやってきたので、オンプレサーバ上にCI/CDを整備。
ProxmoxでVMを立ち上げてGitHub Actions用のself-hosted runnerを作成
OpenAPI仕様書からのredocによるAPI仕様書の生成をGitHub Actionsで自動化
DB変更時にGitHub ActionsでSchemacSpyでDBドキュメントを自動生成するように設定
リンタ・フォーマッタをflake8+blackからruffに変更

使用した技術など

  • Proxmox
  • GitHub Actions
  • ruff
  • SchemaSpy

6月: ファイルサーバ作成

nextcloudを使う案などを検討したが、最終的にはsambaでファイルサーバを作成
Proxmox上のVMにsambaでファイルサーバを作成

10月: BacklogとGithub Projectの連携

面倒だったので趣味で効率化

使用した技術など

  • Rust
    • ureq
    • graphql_client

その他

  • ローカルLLMをお試し。開発用のノーパソでollamaでllama3などを試す。

読んだ本/サイト

  • DevOpsとleanの科学
  • 詳解Terraform
  • 単体テストの使い方 6章まで

個人的に勉強したもの

rust

  • rustlingsという練習問題をといた
  • axum(actix-webを勉強してから時間が空きすぎて忘れたので鞍替え)

その他

  • oh my gitというゲームでgitのコマンドを覚えた。
  • クエリの実行計画を見る方法を学んだ

参加したイベント

  • AWS Summit Tokyo
  • Rust Tokyo

その他

1年間毎週日記をつけることができた。

まとめ

今年一年はずっとやりたかったバックエンド開発に携わることができて嬉しかった。
しかし、途中でレガシーコードを読み解きながらの開発に嫌気が差して、インフラやCI/CDの整備に時間を割いてしまった。
コードのリファクタリングをする手もあったが、そこまでの元気が無かった。

個人的な開発をほとんどできていないので、そこはマイナスだと思う。

コミュニケーション面では、一応rustのイベントに参加出来たのは良かった。
ただし、どこかのコミュニティに参加しているとかではないので、そこは改善したい。

2023年の目標の振り返りと2024年の目標

2023年の目標の達成状況確認

資格

IPA資格

  • [x]ネスペ
  • [ ]エンドベッド: 受験はしたが失敗

    AWS資格

  • [ ]SAA: 受けてすらいない

創作活動

  • [ ]自作CPU: やってない
  • [ ]rustでアプリケーション: 製作途中
  • [ ]電子工作で何か作る: やってない

勉強

  • [ ]技術ブログを週1くらいで更新する: やってない
  • [ ]1月に1冊本を読む: 資格の試験対策本を含めて7冊くらい?
  • [ ]競技プログラミングで水色になる: やってない
  • [ ]英会話など

生活分野

  • [x]時短家電を買う
    • [ ]自動調理鍋: 不必要と判断
    • [x]ルンバ: 購入
    • [x]食洗器: 購入
  • [x]引っ越す
  • [x]有酸素運動をする: Nintendo Switchのフィットボクシングを週1くらいで
  • [ ]学校、会社以外のコミュニティに参加する
  • [ ]家計簿をつける: 途中で断念している

2024年の目標

資格

  • 統計検定とか?未定
  • AWS資格SAAと上位資格あと1つくらい

創作活動

  • rustでのアプリケーション: 今作っているTODOリストとは別のもの
  • 電子工作で何か動くもの: 2023年から継続

勉強

生活分野

  • スマートホーム
    • 照明
    • カーテン
    • スケジュール読み上げ
  • 運動習慣の継続: 筋トレ週2回、フィットボクシング1回
  • スケジュール管理: 何もせずにスマホ触っている時間を減らす
  • 家計簿の継続化: 2023年から継続
  • 学校、会社以外のコミュニティに参加する: 急務、2023年から継続
  • 身だしなみ

メモ

IPAの資格はもう取りたいものは無いのでいいかという感じ。
日常生活を整えることが最優先と考える。 将来に向けての準備をしたい。

2023年の振り返り

2023年にやったことを備忘録として残しておく。

業務でやったこと

1-2月: IoTシステムのPoC バックエンド

使用した技術など

  • typescript
  • nestjs
  • jest
  • OpenAPI(Swagger)
  • Prisma
  • Docker

3月: 内製システムの管理画面作成

使用した技術など

4-10月: GPSシステムPoC エッジ

使用した技術など

11月: GPSシステムPoC バックエンド

軽い分析も

使用した技術など

  • nestjs
  • typeorm

12月: 業務システム バックエンド

環境整備がメイン

使用した技術など

  • flask restx
  • zappa

読んだ本

個人的に勉強したもの

  • rust
    簡単なアプリを製作中
    • seaorm
    • actix-web

資格

その他

達人プログラマの本に影響されて読書ノートを作成
週間日記みたいなものを途中で付け始めたが、やってたりやっていなかったり。
7月に引っ越し

まとめ

業務では半分ぐらいarduinoでPoCをしていた。
少しずつやりたかったバックエンドの仕事ができるように。

感想

色々とインプットをしていたがアウトプットが出来ていない。
PoCの開発がメインで実際に動作するアプリケーションに携わっていない。
そもそも、成果をアピールできていないからPoCがPoCのまま終わってしまった側面もあるかも
2024年は外向きのコミュニケーションを意識して生きていきたい。

2023年2月の記録

読んだ本

仕事とか趣味とかでやったこと

AWS lambda

既存の関数をいじっただけ
イベントブリッジでの起動や、外部のライブラリを利用するのにはlayerといわれるものを作らねばならないことを知った

pytest, unittest

上記のlmandaでpythonを使用するので少し使った。
関数をmockするときの関数の指定方法がややこしくて1週間程度悩んだ

Apollo(Graph QL)

新しい方のチュートリアルをpart2まで終わらせた

rust

The Rust Programming Language 日本語版をやり始めた 2. 数当てゲームのプログラミングまで終了

AWS Certified Cloud Practitionerに向けての勉強

試験無料チケットの期限が3月末なのでUdemyで勉強

3月の予定

AWS CCP の無料期間が3月末までなので、どこかで受ける NWの試験が4月中旬なので3月中に本を一通り読んで、過去問を2年分程度は終わらせたい どこかのコミュニティーに参加したい

2023年1月の記録

読んだ本

仕事とかでやったこと

express

バックエンドではnestjsを使っていたが、使うメモリの量などを抑えるためにexpressでやることに。
とりあえずローカルで動くものは作った。パフォーマンスやセキュリティ関連は考慮していない。

Apollo(Graph QL)

勉強を始めたばかり。
やってたチュートリアルが古かったらしくて途中で動かなくなったので新しい方を始める。

2月の予定

そろそろ仕事でAWSを本格的に使い始めることになりそうなので勉強を始める。

2022年の振り返り

2022年にやったことを備忘録として残しておく。
主に学んだ技術を中心に記述する。

今年の出来事

1-3月 M2

修論などがあったはずだがあまり記憶がない。

4月 研修期間

入社後の研修期間。こちらも記憶がない。

5-6月 ソフト開発部

ソフトウェア開発部に所属となった。
工場研修の開始時期が未確定だったため主に雑用をしていた。よって技術的な業務は少ない。

学んだ技術

以下の技術については身についていない。
- Vue.js v2, Nuxt 2, Vuetify 2
- flask

7-9月 工場研修

思い出したくない。
10月のDBスペシャリストの勉強をしていた。

10-12月 ソフト開発部

本格的に開発業務に携わるようになった。
担当はバックエンド。 小さな機能だけだが、設計と実装を担当させてもらった。 テスト駆動開発の本を読んだので、テスト駆動での開発を試みたが失敗。テストフレームワークや使用するライブラリの知識が足りなかった。

学んだ技術

2022読んだ本

DBスペシャリストの試験対策本

資格を取るために読んだ。
DBのモデリングの部分の理解が足らず試験も午後問題を苦戦した。
ギリギリで受かった。

テスト駆動開発

カウボーイコーディングはしたくなかったのでとりあえずやっておいた。
あまりうまくいっていない。テストを書くスキルがたりないので無理。
もう少し複雑なコードを書くのに向いているかもしれない。
途中の例を飛ばして読んだ。

Docker/Kubernetes 実践コンテナ開発入門

古い本なのでサンプルコードが動作しない。
しかもmacのM1チップがarmアーキテクチャなのでコンテナがうまく動かない場合がある。
dockerは何となくは分かった。kubernetesは分からん。

まとめ

実質的にソフト開発の業務をしていたのが10-12月の3ヶ月のみなのであまり能力が上がっているとは言えない。
来年こそは頑張りたい

Nuxt3+TailWindCSSでポートフォリオの作成 1. ヘッダとフッタの作成

はじめに

初めてのサイト作成として、これから作っていくものをまとめるポートフォリオを作っていこうと思う。
最終的にはGitHub Pagesで公開する予定

実行環境

  • wsl: Ubuntu 20.04.4 LTS
  • npm: 8.11.0
  • tailwindcss: 3.1.6
  • daisyUI: 2.19.1

    TailWindCSS, daisyuiを使ったヘッダとフッタの作成

TailWindCSS, daisyUI

TailWindCSSCSSフレームワーク

<button class="inline-block cursor-pointer rounded-md bg-gray-800 px-4 py-3 text-center text-sm font-semibold uppercase text-white transition duration-200 ease-in-out hover:bg-gray-900">Button</button>

上記の様にHTMLタグのclass属性に値を追加することでCSSを適用するスタイルらしい。
私は普通のCSSを実装したことがないので普通とどう違うのかはわからない。
daisyUIはそのTailWindCSSを基にしたコンポーネントライブラリというものらしい。いろいろなパーツが簡単に実装できそうなのでとりあえずこれを使うことにした。

ヘッダの作成

daisyUIのNavbarというコンポーネントを使って実装していく。Headerというコンポーネントは無かった。
とりあえず、コードはこんな感じ。

<template>
  <div>
    <header>
      <div class="navbar bg-base-100">
        <NuxtLink to="/" class="btn btn-ghost normal-case text-xl">Home</NuxtLink>
        <NuxtLink to="/about" class="btn btn-ghost normal-case text-xl">About</NuxtLink>
        <NuxtLink to="/works" class="btn btn-ghost normal-case text-xl">works</NuxtLink>
        <NuxtLink to="https://array-fish.hatenablog.com/" class="btn btn-ghost normal-case text-xl">Blog</NuxtLink>
        <NuxtLink to="https://github.com/Array-fish/" class="btn btn-ghost normal-case text-xl">GitHub</NuxtLink>
      </div>
    </header>
    <slot />
  </div>
</template>

結果はこんな感じ

ポートフォリオのヘッダ