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

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

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

jsonモジュールによるJSONの処理

インストール import ファイルから読み込む strオブジェクトをJSON形式で読み込む ファイルへ書き込む strオブジェクトを作成 Iterate 要素へのアクセス PythonでJSONを取り扱うならjson一択だ。 簡単な使い方ならPyYAMLやruamel.yamlと大差ない。しかしJSON…

ruamel.yamlによるYAMLの処理

ruamel.yamlとPyYAML 比較 YAML 1.2対応 インストール import 読み込む 書き込む Iterate 要素へのアクセス ruamel.yamlとPyYAML PythonでYAMLを扱うには選択肢が2つある。 PyYAML ruamel.yaml 今日時点で有名なのはPyYAMLの方だがアップデートが収束しつつ…

pipenvによるPython仮想環境管理

インストール 使い方 トラブルシュート 引き続きPythonの実行環境構築についてまとめてみる。 ここまでPythonのバージョン管理、ライブラリ管理の必要性とそれらを実現するpyenv、そしてvirtualenvをみてきた。 architecting.hateblo.jp architecting.hatebl…

virtualenvによるパッケージ管理

基本情報 インストール 使い方 引き続きPythonの実行環境構築についてまとめてみる。 前回はPythonバージョン管理ツール pyenvを紹介した。 Pythonで書かれたツールを実行したり、Pythonで開発する上でPythonのバージョンを切り替えることが重要なことは前回…

pyenvによるPythonバージョン管理

基本情報 インストール 使い方 トラブルシュート Pythonは人気が上昇している言語だ。Python製のツールを実行したい、Pythonでなにかを書きたい、ということは珍しくないだろう。このときPythonのバージョンが大事になる。 Pythonに限らずどんな言語で開発さ…

Gitコマンドのイメージ図

Git

Gitの作業空間は4つある。 RemoteRepository LocalRepository Staging Area Working Directory Gitで作業をしていてこの4つ作業空間で迷子になったことはないだろうか? 「この空間の変更を戻すにはどうするんだっけ?」 「このdiffコマンドはどことどこの差…

Gitコマンド

Git

管理、設定 git init git config 差分管理 git status git add git commit git rm git stash git stash pop Remote Repositoryとの連携 git remote add origin git push git pull git fetch git clone 取り消し git rm --cached git reset git revert ブラン…

JSON

API

基本情報 特徴 YAMLとの比較 オブジェクト 配列 値 JSONはシステム間のデータの交換によく使われるデータフォーマットだ。 YAMLとの違いを理解して状況に応じて適切な選択、データ構造設計、データ処理ができるようになろう。 YAMLについてはこちらで触れて…

YAML

API

基本情報 特徴 シーケンス マッピング 配列とハッシュの組み合わせ スカラ 複数行文字列の扱い アンカーとエイリアス マージ セパレータ フロースタイル 練習問題 YAML JSON YAMLはシステム間のデータ交換や設定ファイルに使われているデータフォーマットだ…

SOLID原則

1. Single Responsibility Principle:単一責任の原則 2. Open/Closed Principle:オープン/クロースドの原則 3. Liskov Substitution Principle:リスコフの置換原則 4. Interface Segregation Principle:インターフェース分離の原則 5. Dependency Invers…

アノテーションインジェクションによるDI

どんなときに使うの? リソースの作成、後処理をクライアントコードに任せずに基盤コード側で実行、制御したいとき。 他のインジェクション方式との比較 コンストラクタインジェクションやセッターインジェクションではリソースの作成、後処理がクライアント…

参照いろいろ

参照とは Hoge hoge = new Hoge() 上記の例において変数hogeはHogeクラスのインスタンスへの参照を持っている。これが強参照。 強参照がなくなるとインスタンスはGarbage Collectionの回収対象になる。例えば上記の例では変数hogeにnullを代入したり、スコー…

クラスローダを自作する

なぜ自前のクラスローダが必要なのか? クラスローダによって検索するディレクトリと名前空間を分けることができる。よってクラスローダを分ける以下の2点を実現できる。 利用可能なクラスを制限する サービスAからはサービスBのクラスを利用できないように…

Singletonとスタティックの違い

1つしかないものを表現するときSingletonでもスタティックなフィールドとして表現するのも同じ気がする。なにが違うのか調べてみた。 継承の可否 スタティックなものは継承できない。 Singletonは継承できる。 継承できる方が将来の拡張性が高い。 保証/強…

読んでイライラしたコード

人が書いたエクセルのVBAを読んでいたらイライラした。 自分の稚拙さを棚に上げて文句を言うのも大人気ないし、VBAという言語仕様にも原因があるようだ。全てが本人のせいとは言い切れない。当然、当人は一言も言っていない。 すでにイライラは収まりも気持…

スタティック変数の使い所

個人ではなく全体に属するものはstatic変数。 例えば人間クラスがあったとする。名前フィールドは当然、鈴木さんと佐藤さんとボブさんで値が異なるからインスタンス変数になる。一方で人口フィールドは鈴木さんと佐藤さんとボブさんなど特定の個人に属さない…

スタティックメソッドの使い所

注 筆者の雑感です。思いついたことを書いてます。いずれちゃんと調査、考察、推敲を行ってちゃんとした記事にしたいと思います。 はじめに ある製品のコードを読んでいたらスタティックメソッドが結構、出てくる。メソッドをStaticにする基準を考えたり、調…

Javaのメソッドのアクセス修飾子の使い分け

注 本稿は筆者の雑感です。思いついたことを書いてます。いずれちゃんと調査、考察を行ってちゃんとした記事にしたいと思います。 はじめに ある製品のJavaコードを読んでいてメソッドのアクセス修飾子の使い方が気にった。「修飾子の選択には設計者の明確な…

Intellij IDEAでコードリーディングするときよく使うショートカット

Intellij IDEAでコードリーディングするときよく使うショートカットのまとめ。 探す Shift + Shift 検索 移動 Cmd + B Go to declaration Opt + F7 Find Usage Cmd [ 戻る Cmd } 進む 移動せず定義を確認 Option + Space 定義を表示 F1 Documentationを表示 …

ブランチポリシー

Git

GitHub Flowをベースにする。 1. ローカルリポジトリを最新化 なければ作成してcloneする git clone xxx 既にあればリモートのmasterをPullする。 git checkout master git pull 2. トピックブランチを作成する git branch new-branch git checkout new-bran…

Gitでやらかした事案

Git

1. Author、コミッタを間違えた 事象 別のPCから作業、コミットした際に別ユーザになってしまった。 原因 gitconfigに明示的にユーザ情報が指定されていなかったため、作業環境のデフォルトユーザ情報が利用された。 防止策 git config --local user.name ho…

GitのRepositoryの作り方

Git

方法1. Git上のRepositoryを使う場合 mkdir <dirname> cd <dirname> git init git remote add origin https://github.com/<user-id>/<repo-name>.git git pull origin master 方法2. ローカルにあるフォルダをRepositoryに使う場合 cd <dirname> git init git remote add origin https://github.com/<user-id>/<repo-name>.git gi</repo-name></user-id></dirname></repo-name></user-id></dirname></dirname>…

EclipseでGitを利用する

1. EclipseにGit定義 プロジェクト名→チーム→プロジェクトの共有→Git→プロジェクトの親フォルダ内のリポジトリを使用または作成→プロジェクトを選択(チェックボックスではない)→リポジトリの作成→完了 2. AuthorとCommiterを定義 git config --local user.…

Eclipseのフォーマッター変更

フォーマッターをGoogle Styleに変更 eclipse-java-google-style.xmlを下記サイトから入手 https://github.com/google/styleguide プロパティ→Javaコード・スタイル→フォーマッター→インポート→XMLファイルを選択

EclipseでJUnitを利用する

1. JUnitのJARをライブラリ追加 ビルドパス→ビルドパスの構成→ライブラリ追加→JUnit→JUnit4→完了 2. testフォルダ作成 ビルドパス→新規ソースフォルダ→「test」 3. テストコード作成 プロダクションコード→新規→JUNITテストケース ソースフォルダをtestに変…

GitHubをProからFreeに変えるか検討する

Git

勉強のためにと2年ほど前にとりあえず取得したGitHubアカウント。あまり活用できていませんが時折、再利用する可能性がある個人的なコードを管理するのに使ってます。 アカウント開設当時はFreeだとプライベートリポジトリの数に制限がありました。拙いコー…

Javaクラスファイルのデコンパイル

ダウンロードしてきたライブラリのソースを読もうとしたらソースが含まれていませんでした。デコンパイルしてソースを読みたいと思います。 デコンパイルするにはjadを使います。jadはhomebrewを利用してインストールしました。 フォルダ内のclassファイルを…

Intellij IDEAでソースを開いたらCannot find declaration to go toが出る

ダウンロードしてきたライブラリのソースを読みたくてIntellij IDEAで開いてみました。 コマンド+Bで宣言箇所を表示しようとしたところ、宣言が同じソースファイル中にある場合はジャンプできました。しかし宣言が他ファイルにある場合は以下のようなメッセ…