プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

2021-01-01から1年間の記事一覧

Javaでprivateなフィールドやメソッドを使う

Javaで単体試験を書いているとPrivateなフィールドやメソッドにアクセスしたくなることがあります。 そんなときはコソッと修飾子をprivateからpackage privateやprotectedに変更したくなりますが絶対にやってはいけません。 危険なだけでなく、アクセス修飾…

pexpectの基本的な使い方

pexpectはTelnetやSSHで実施するような対話形式の作業を自動化するPythonのライブラリです。 pexpectでは、expectで指定する正規表現をうまく設計しないと思わぬ結果を招き、デバッグ作業に時間を取られることがあります。REST APIなどを利用したAPIベースの…

OpenPyXLの基本的な使い方

最強のお絵かきソフトExcelは色々なところで色々な用途で使われています。 このためExcelファイルをプログラムで処理する機会は多いです。 PythonでExcelファイルを処理する場合はOpenPyXLを使うことが多いでしょう。 今回はOpenPyXLの基本的な使い方を紹介…

ウォーターフォール開発の歴史

ウォーターフォール以前 1960年代まではシステム開発は各職人がそれぞれの勘と経験を頼りに行っていた。 しかし1970年代頃になると確立されたシステム開発手法の重要性が強く叫ばれるようになる。 初期のウォーターフォール ウォーターフォールの原型は1970…

Beans、DTO、Entityの違い

Beans、Data Transfer Object、Entity。 いずれもJavaにおいてデータを保持するためのクラスだ。 あまり深く考えず雰囲気で使い分けていた。 ビジネスを表現するデータは「Entity」、 その中でも小粒なものは「VO」。 それ以外でアプリケーションが処理しや…

Javaとスレッドセーフ

前回、メモリリークについて取り上げました。 メモリリークはプログラマ個々人の意識と技量に依存した扱いが難しい問題であることについて触れました。 メモリリークと同様に難しいのがスレッドセーフです。 スレッドセーフを試験で確認するのはメモリリーク…

Javaとメモリリーク

メモリリークは検出するのが難しい問題です。 プロファイラなどの助けを借りることも大事ですが、最大の防御線はプログラマ個々人の意識です。 今回はJavaのメモリリークについては取り上げます。 Javaとメモリ管理 Javaは基本的にメモリを意識しなくてよい…

TDDとファクトリ系のデザインパターン

ファクトリ関連のデザインパターンに関するポエムです。 まともな技術情報は含まれていません。 ファクトリ系のデザインパターン ファクトリ系のデザインパターンには複数種類があります。 GOFのデザインパターン本で紹介されているのは下記2つです。 Facto…

Singletonパターンは使わなくてもいい?

Singletonパターンに関するポエムです。 長文です。 Singletonパターン GOFデザインパターンの中でも最もわかりやすのがSingletonパターンです。 初心者が一番理解しやすいパターンだと思います。 私自身、初めてデザインパターンの本を読んだとき、唯一理解…

2021年にPython 2.7を書いてみた

正確にはPython 3.9で書いたコードをPython 2.7に変更しました。 そのとき感じたことを記録します。 はじまり 作業効率化のために簡単なツールをPythonで作ってみました。 自分の環境では問題なく動作したのですが実環境にうつしたらエラーが発生。 pathlib…

例外処理の設計

例外処理の構造について調べる機会があり、以下の3点について考えてみました。 例外が発生した場合の処理の仕方 エラーを検知したときの例外の発生させ方 例外のcatchの仕方 階層をまたぐ例外 1. 例外が発生した場合の処理の仕方 呼び出したメソッドが例外…

JavaScript ES6 + JestでTDD(fetch API Mock編)

前回、ブラウザ向けのJavaScript ES6コードにfetch APIを導入し、MockなしでTDDする方法を紹介しました。 architecting.hateblo.jp 今回は同じテストをMockで行う方法を紹介します。 なお今回はcar.js側の変更は一切ありません。変更されるのはテストだけで…

JavaScript ES6 + JestでTDD(fetch API Mockなし編)

前回、ブラウザ向けのJavaScript ES6コードをJestでTDDする方法を紹介しました。 architecting.hateblo.jp 今回はcar.jsにfetch APIを導入してテストします。 なぜMockしないのか? 単体試験する際は普通はfetch APIをMockすると思います。 fetch APIをMock…

JavaScript ES6 + JestでTDD(環境構築+基本編)

ブラウザ向けのコードをJavaScript ES6で書きましょう。 コードを書くならユニットテストをしながら書きたいですね。 今回はJavaScriptでTDD環境を整えます。ES6のimportが原因でエラーが出やすいので環境構築部分を詳細に書きました。(長文です) node.js…

VSCodeでJavaScript/Node.jsのコードをデバッグする

ここまでMacにNode.jsをインストールして、VSCodeでコード補完ができるようにしました。 次はデバッグします。 Node.jsアプリケーションを作成 デバッグ対象となる適当なアプリケーションを作成します。 VSCodeを立ち上げてserve.jsという名前でファイルを作…

VSCodeでJavaScript/Node.jsのコードを補完する

VSCodeでJavaScriptを書く時、ちゃんと候補表示&補完してくれるようにした話です。 やり方については情報が錯綜しています。私が調べた感じだと「tsdを使う」→「tsdが非推奨になりtypingsが推奨」→「typingsより便利なnpm install @types/が使えるようにな…

MacにNode.jsをインストールする

Node.jsはスケーラブルなアプリケーションを構築するための非同期型処理を前提とした環境です。ブラウザを必要とせず、PCのTerminalやIDE上でJavaScriptを実行することができます。 JavaScriptをブラウザで実行できるのは手軽な反面、細かい挙動を見ようとす…

JavaScriptのレガシーコードを読み解く

JavaScriptのド素人が「JavaScript本格入門」を読んだ後、ES5のレガシーコードを読んだ話です。 JavaScript入門書読破 「JavaScript本格入門」を読みました。簡潔でわかりやすいだけでなく構成もすばらしいです。こういう本を書ける人ってすごいと思います。…

nginxコンテナを自己署名認証局でHTTPS化する

前回の記事では自己署名証明書を使ってリバースプロキシとして動作するnginxコンテナをHTTPS化しました。 architecting.hateblo.jp しかしブラウザがエラーや警告を色々出すのでHTTPS化した実感がありませんでした。 今回は自己署名認証局が署名した証明書を…

nginxコンテナを自己署名証明書でHTTPS化する

前回、Dockerでnginxを入れて基本的なことを試して以下の記事を書きました。 architecting.hateblo.jp このときHTTPS化も試していたのですが話が長くなるので別の記事にすることにしました。 はじめに 今やサービスの入り口は全てHTTPS化するのが常識となり…

<環境構築不要>お手軽にKubernetesを試す

Kubernetesの公式Tutorial環境で自作コンテナのデプロイを試した話です。 動機と結果まとめ 勉強のために自作の超簡単サービスをDockerやAWSに簡易的にデプロイしてみました。 k8sでも試したいと思ったのですが環境を用意するほどの気力と余裕がありません。…

docker-composeを使ってみる

dockerしか使ったことない人間がdocker-composeを使います。 動機 Flaskアプリケーション作成のTutorialをやったらコンテナ化したくなりました。 コンテナ化したら今度はnginxコンテナやMySQLコンテナと連携させたくなりました。 連携させたら複数のコンテナ…

DockerでMySQLを試してみる

先日、nginxのDockerを試しました。その勢いでデータベースのDockerも試してみます。 まずは一番有名なMySQLからです。MySQLは大昔に触ったことがありますが、Dockerでセットアップするのは始めてです。Docker固有のポイントがあると思うので勉強していきた…

dockerでnginxを試してみる

nginxをよく見かけます。 1度くらい触ってみようと思って数年。ようやく重い腰を上げたいと思います。 とりあえず試して削除したいときに便利なのがdockerです。 dockerを利用してローカルPCで基本機能を試してみました。 コンテナ実行 docker run -it --na…

DockerhubへのイメージのPush

Dockerhubにアカウントを作成すると自分でBuidしたDockerイメージをリポジトリにpushすることができます。リポジトリのイメージはdocker pullで取得することができます。 Dockerhubは利用するけどアカウントは持っていない、という人は少なくないと思います…

TDDで役立つIntelliJ IDEA機能

cleancodersの動画を見ていて気がついた、TDDに便利なIntelliJ IDEAの機能を5つご紹介します。 1. Live Template TDDでは沢山のテストメソッドを書きます。毎回、「public void test ...」なんてタイプするのは面倒です。 そんなときに便利なのがLive Templ…

cleancodersのStack Kataを見て感じたことのまとめ

前回、cleancodersのStack Kataのビデオに個人的な解説を付けました。 architecting.hateblo.jp しかし35分のビデオに詳細な解説を付けたので長文になってしまい要点が読み取れません。 そこでこの記事では要点のみをまとめます。 私の個人的な理解なので合…

cleancodersのStack Kataに解説を付けた

cleancoders.comというサイトのプログラミング動画を見て勉強しています。 その中で「Stack Kata」という、StackクラスをTDDで作成するビデオがあります。このビデオは無料で公開されています。 https://cleancoders.com/episode/clean-code-episode-4-sc-1-…

mixinとは

Pythonなどのコードを見ているとよく見かける「mixin」。 今までは雰囲気でさらりと流してましたが今回、調べてみました。 mixinとは 主に多重継承が可能な言語で使われる継承の使い方です。 継承とは本来、親クラスとその子クラスの間に特別な階層関係を発…

pipの呼び出し部分の設計を調べてみた

main関数からどのように機能を呼び出すべきなのか考えています。 参考になりそうな、有名で、かつそんなに難しくなさそうなツールはないかな?と考えていたら思いついたのがpipです。 おそらくPythonで最も有名で、そこそこ高機能だけど、そんなに複雑でなさ…