Category:

Goのお勉強(環境構築+Tour of Go)

バックエンドのプログラミング言語として、Go言語は今後も含めてはやり続ける印象を持っているのですが、自分自身は以前少しだけ業務で触ったことがあるだけでほとんど経験がないので、Tour of Goをやってみることにしました。 Go言語を書く人をGopherというらしいので、Gopherを名乗れるように頑張っていこうと思います。 実際にやってみたソースコードは、GitHubで公開してます。 https://github.com/rinoguchi/go_toor Goのインストール こちらからダウンロードする方法もあるのですが、複数のプロジェクトで異なるバージョンを使い分けたりすることも考えると、Go自体のバージョン管理を簡単にできる方が良さそうです。 pyenvやnvmのGo版ともいうべきgoenvというものがあるのでそちらでインストールして行きます。このへんを見ながらやってみようと思います Continue Reading

Posted On :

楽天銀行と会計freee連携スクリプト

先日、会計freeeから、以下のような無慈悲なアナウンスがありました。 2月24日(木)以降は、楽天銀行のインターネットバンキングから口座明細データのCSVファイルをダウンロードしfreee会計にアップロードする対応を行っていただく必要があります。 いや、手作業を減らしたくて会計freeeにしたのに、それはないですよfreeeさん、って感じです。 目の前には、以下の三つの選択肢があります。 freeeをやめる 楽天銀行をやめる 手作業を受け入れる どれも選びたくありません。。 よくよく考えると自分はエンジニアなので、第四の選択肢として「スクレイピングして明細を自動で取り込む」ことができそうですので、やってみることにしました。 作るもの Node.jsで、puppeteer を利用して、楽天銀行の個人ビジネス口座の利用明細CSVをダウンロードして、会計freeeの口座情報に明細アップロードす Continue Reading

Posted On :
Category:

Amplify SDK(JavaScript)でCognitoの認証機能を試す

この記事では、Amplify SDK(JavaScript)を使い、Cognitoの認証機能を試してみたいと思います。 ただ、Amplify でアプリを作成したいわけではないので、amplify initなどは使わず、Amplify SDKだけを利用する形で検証してみたいと思います。 これができれば、既存のアプリにCognitoを組み込みたい場合にも都合が良さそうです。 登場人物 今回はホストされたUIは利用せず、UIを自作した上でAPIを直接呼び出して、サインアップ、サインインなどの処理を行います。 Cognito ユーザプール サインアップ画面 コード確認画面 サインイン画面 現在のセッション確認画面 パスワード変更画面 パスワード忘れ画面 ユーザプールを作成 AWSコンソール画面からユーザプールを作成します。 APIの検証が主目的なので、最もシンプルな構成にしようと思います。 1.サ Continue Reading

Posted On :
Category:

初めての青色申告(確定申告)

2021年6月に会社員からフリーランスに転向したのですが、この記事は、初めてフリーランスとして確定申告を実施するにあたって、その内容をメモっておいたものになります。 2021年12月までほとんど何もしておらず、この記事を書きながら作業を進めている状況です。確定申告が完了するまで随時追記していきます [2023-2-25追記] 2022年分の確定申告も行いました。手順が変わった部分をメモ的に追記してあります 青色申告とは 青色申告とは、複式帳簿を記帳した上でそのデータをもとに確定申告を行うことで、さらにe-Taxを利用して電子申告することで最大65万円の控除を受けることができる制度で、フリーランスであれば誰もが利用する制度だと思います。 具体的には、以下の対応を必要があるようです。 青色申告承認申請書を税務署に出す 私は開業届けと同時に出しました 開業から二ヶ月以内に出す必要があるようです Continue Reading

Posted On :
Category:

husky v7とlint-stagedでコミット時にリント実行

以前から husky と lint-staged を使ってコミット時にリンターを実行していたのですが、huskyのバージョンがv7に上がってから、設定方法が少し変わり、pakcage.jsonだけで完結しなくなったので、改めて設定方法を紹介します。 インストールと初期設定 自力でゼロから設定するのは結構難しいですが、huskyとlint-stagedをインストールして、サンプル初期設定を作成してくれる便利なコマンドが提供されていますので、これを実行します。 npx mrm@2 lint-staged 実行結果は以下の通りです。 package.jsonに以下が追加される huskyの初期化スクリプトを実行する設定が "scripts": { "prepare": "husky install" }, => npm insta Continue Reading

Posted On :

PrettierとESLint・Stylelintの併用

フロントエンドのアプリケーションを構築していて、リンターとフォーマッターをどのように設定するのがベストなのか自分なりに調査しました。 結論 まず最初に、自分がベストだと思う設定方針を書いておきます。 開発時 一般的なスタイルに関する問題 Prettier でフォーマットする ファイル保存時に自動フォーマットする 言語毎のコード構造に関する問題 JavaScript や TypeScript については ESLint で、CSS や SCSS については StyleLint でリント&フォーマットする Prettier と競合するルールは無効化する エディター上でリント結果のワーニングやエラーを表示する ファイル保存時に自動フォーマットする コミット時 pre-commit のタイミングでリントを実行して、エラーならコミットできないようにする Prettier + ESLint + Styl Continue Reading

Posted On :
Category:

TypeScriptのTips

TypeScript に関する Tips をメモっていきます。 クラス名の取得方法 取得方法 クラス内から取得する場合 static method 内: this.name instance method 内: this.constructor.name クラス外で取得する場合 クラス名.name インスタンス.constructor.name テストコード 以下のテストコードで検証しました。 継承してても問題なくクラス名を取得できました。 class Parent { constructor(public name: string) {} static classNameInStaticMethod(): string { return this.name; } classNameInInstanceMethod(): string { return this.constructor.n Continue Reading

Posted On :
Category:

npm パッケージのバージョンアップと脆弱性対応

ちょっと雑ですが、npmパッケージのバージョンアップと脆弱性対応の方法をまとめました。これがベストかはわからないけど、一つのやり方として紹介します。 node: v14.15.1 npm: v8.1.3 yarn: v1.22.17 パッケージのバージョンアップ バージョンアップ必要なパッケージを調査 npm-check-updatesをインストール npm install -g npm-check-updates // or yarn add global npm-check-updates バージョンアップが必要なパッケージをリストアップ ncu > @nuxtjs/eslint-config 5.0.0 → 6.0.1 > @nuxtjs/eslint-config-typescript 3.0.0 → 6.0.1 > eslint 7.24.0 → 8.1.0 & Continue Reading

Posted On :
Category:

読みやすいコード、メンテナンスしやすいコード

自分が個人的に読みやすい、メンテナンスしやすいと思うソースコードの特徴を書いてみようと思います。個人の好みも含みます。 言語やアーキテクチャ、プロジェクトにかかわらず、コードレビューの時にはこのような観点でレビューしてます。 モジュール名・クラス名・関数名・変数名からその責務が明確である 基本的に、一つの責務を持つ GOOD: getBook(id: string), updateBook(book: Book) BAD: getAndUpdateBook(bookId: string) その責務がわかるように命名する 英語として成り立ってる(日本語に直訳して意味が通じる) 第三者が見て別の意味に捉えようがない ただし、具体的に説明しすぎず、適宜抽象化する 具体的にしすぎると、処理をちょっと変えるたびに関数名も変更が必要になってしまうし、関数名が長くなりすぎる傾向がある 例: 本リストを Continue Reading

Posted On :
Category:

Jest + TypeScriptのTips

Jest + TypeScript でテストを書くことが増えてきたので、この辺でTipsを記載しておこうと思います。今後も何かあれば追記します。 インストール こちら を参考にしました。 まず、必要なライブラリを追加します。 yarn init yarn add jest @types/jest ts-jest –dev jest.config.jsをプロジェクト直下に作成します。 module.exports = { "testMatch": [ "**/__tests__/**/*.+(ts|tsx|js)", "**/?(*.)+(spec|test).+(ts|tsx|js)" ], "transform": { "^.+\\.(ts|tsx)$": "ts-jest&q Continue Reading

Posted On :