Category:

「実践ドメイン駆動設計」から学ぶDDDの実装入門の読了メモ

これは ドメイン駆動設計 Advent Calendar 2020 の16日目の記事です。 「実践ドメイン駆動設計」から学ぶDDDの実装入門 を輪読会で読了したので、内容を箇条書きでメモしておきます。 個人的解釈を多分に含むため、導入する際には実際に書籍を読んで判断してもらえればと思います。 1. 「DDDへの誘い」〜ドメイン駆動設計のメリットと始め方〜 DDDとは DDDとは 「高品質」のソフトウェアを設計する手法 「高品質」とは、ビジネス的にも成功していること言うこと 「事業を理解し、チームの知識を一つにまとめること」を重視し、「ユビキタス言語」というチーム内の共通語でプログラムを実装する DDDのメリット プログラマとドメインエキスパートが「共通言語」で視点を合わせて会話する=>顧客視点に繋がる チームで業務知識を共有し、理想像を追求できる 「設計=コード」を実現し、実装時の課 Continue Reading

Posted On :

pyppeteerでファイルをダウンロード

昨日、puppeteerでファイルをダウンロードする という記事を書いたのですが、puppeteerのpythonに移植した pyppeteer で同じようにファイルダウンロードをやってみました。 pyppeteer自体の使い方は以前記事を書いてるので、そちらをご覧ください。 pyppeteerの使い方 実装 puppeteerで試した中で一番筋が良さそうだった「ダウンロードのrequestをキャプチャして、同じ内容で別途requestを送信する」という方法を実装してみました。 from typing import Union, List, Dict import asyncio from uuid import uuid4 from mimetypes import guess_extension from pyppeteer.launcher import launch from py Continue Reading

Posted On :
Category:

puppeteerでファイルをダウンロード

この記事は Node.js Advent Calendar 2020 の2日目の記事です。 puppeteer でファイルダウンロードする方法はこちらの issue がまだopenなことからも分かるように、すんなり実現できる公式の方法はなさそうです。 とはいっても、スクレイピングをしてて、ファイルダウンロードしたいケースはあるわけで、実際に試してみようと思います。 前準備 とりあえず、puppeteerをインストールします。puppeteer以外に必要なライブラリは、個別に追記しています。 npm install puppeteer –save 実行方法 サンプルソースを適当な名前のファイル(たとえばsample.js)にコピペしてnodeコマンドで実行するだけで、実際に動かすことができます。 node sample.js ファイルをダウンロードする 方法1【△】: 単純にブラウザのファ Continue Reading

Posted On :

Webブラウザ上でニコニコ動画風にコメントを表示

コロナの影響で、リモートでの勉強会が増えてきましたが、プレゼン中に反応が少なくて寂しいなぁと感じることがあります。 でも意外にチャットは盛り上がってることが多いので、画面共有しているブラウザ上にニコニコ動画風にメッセージをアニメーション表示する機能を作ってみることにしました。 やりたいこと プレゼンターが会議URLを発行する 参加者は会議URLからコメントを入力する プレゼンターのWebブラウザ上に、参加者のコメントがニコニコ動画風にアニメーション表示される アーキテクチャ 検討の結果、以下の技術を採用することにしました。 ブラウザ上でコメント常時受付(フロント、プレゼンター側) => WebSocket(socket.io) 任意のページ上にコメント表示(フロント、プレゼンター側) => ブックマークレット(良いものができたらChrome拡張化して公開) コメント常時受付(サ Continue Reading

Posted On :
Category:

GitLab-CIのTips

GitLab CIのTips的なものを記載していきます。 環境(stg / prd)毎に異なるレジストリにpushする 実際の運用では、stagingとproductionのDockerイメージを、異なるレジストリで管理することもあると思います。そのようなケースではEnvironment scopeを使うと良いと思います。 まず、以下のイメージのように同名のカスタム変数を異なるEnvironment scope(stg / prd)で登録します。 その上で、.gitlab-ci.ymlを以下のようにします。 元々のbuildの内容は.buildとしてテンプレート化する build_stgとbuild_prdを新たに作って.buildをextendする タグ名$CI_COMMIT_TAGのパターンマッチで、x.y.zの形式なら環境名をprdとし、それ以外なら環境名をstgとする(それにより読 Continue Reading

Posted On :
Category:

GitLab CI + kaniko でDockerイメージをビルド

業務ではGITリポジトリとしてGitLabを使ってるのですが、ローカルPCでDockerイメージを作成する運用だと ローカルの変更が混じってしまう可能性がある イメージを作成するタイミングがあいまいだし、作成忘れがあったりする などの問題があり微妙だったので、GitLabにタグ(1.5.2など)をプッシュしたタイミングで、自動的にDockerイメージを作成してGCRにビルドさせることにしました。 少し前に 会社のブログ で kaniko を使うケースを紹介してくれていたので、やってみることにしました。 GitLabでDockerイメージをビルドする方法の候補 改めてGitLabの ドキュメント を見てみると、以下のように書いてあります。 There are three methods to enable the use of docker build and docker run duri Continue Reading

Posted On :
Category:

標準モジュールunittestでpythonのテストを書く

Pythonで本格的?にテストを書き始めました。標準ライブラリの unittest が普通にまあまあ使いやすいので、使い方をまとめていきます。 基本的な書き方 基本は以下の構造になります。 import unittest class TestSimple(unittest.TestCase): @classmethod def setUpClass(cls): """各クラスが実行される直前に一度だけ呼び出される""" print('setUpClass called.') @classmethod def tearDownClass(cls): """各クラスが実行された直後に一度だけ呼び出される""" print('tearDownCla Continue Reading

Posted On :
Category:

Pythonでasyncioを使った非同期処理

Pythonで非同期処理を実装する場合、 asyncio モジュールを使うのが一般的だと思いますが、並行処理をさせたり、ネストしたりするケースは多少気をつけることもあったので、メモ的にやり方を残しておきます。 シーケンシャルな非同期処理 まずはシンプルなケースとして、3サイト(qiita, google, yahoo)の合計6ページについて、pyppeteer(chromiumを起動して非同期スクレイピングするライブラリ)を使って、HTMLを取得するケースを書いてみました。 from pyppeteer.browser import Browser from pyppeteer.page import Page from pyppeteer.launcher import launch from typing import List import datetime from asyncio Continue Reading

Posted On :
Category:

投資について調べてみた

最近「中田敦彦のYouTube大学」を見ていて、ちゃんと投資をしないとなーという気持ちになったものの、投資に関しては全くの素人だし書籍を読み込むほどの情熱も持てないので、YouTubeを見たり証券会社のWebサイトを見たりしながら、投資関連の知識をメモしていこうと思います。 前提知識 所得税 (会社員の場合) 所得税 = 課税所得 * 所得税率 そもそも「所得」とは収入からその収入を得るために使った経費を抜いた金額というような意味 課税所得は、課税対象になる所得のこと(課税対象は給与収入ではない) 所得税率は、累進課税。課税所得が多いほど税率が高くなる。最高で45% 課税所得 = 給与収入 – 給与所得控除 – 所得控除 給与収入は会社から支払われる給与・賞与の合計金額 給与所得控除は、給与収入から計算さる。収入が多いほど控除額も大きくなるが上限195万円。給与所得控除は「みなし経費」とも Continue Reading

Posted On :
Category:

GCR(Google Container Registry)を使ってみる

Google Container Registry(GCR)はGCPが提供するプライベートなDocker Registryです。Docker Hubと同じようにDockerイメージのアップロード/ダウンロードができ、かつ、外部から利用されることもありません。 今回は、自作したDockerイメージをサービスアカウントを通じてCLIでGCRにpushしてpullするところまでを検証してみようと思います。基本的には公式のクイックスタートをベースに検証を進めます。 GCRの特徴 以下の様なことができるみたいです。 Docker Registoryとして、Dockerイメージをpushしたりpullしたりできる アクセス制御ができる CI/CDシステムと連動できる 今回はこれのうち1.と2.あたりを軽く検証してみます。 事前準備 GCP側の設定 こちらからGCPのプロジェクトを作成/選択します 今回 Continue Reading

Posted On :