めも

メモ.

最近買った本について (2020.4.10付近)

大変な時期ではありますが、乗り越えていきたいです。 毎度のことですが、Kindle版で購入して無い本(=電子書籍ではない本)のみ記録してます。

前回

大人のためのピアノレッスン下巻(斎藤 芳江 監修)

上巻を以前に購入・進めて下もやるか〜で放置、それもかなりの長い間放置していて埃をかぶっていたのを発見し、性根を据えて下を購入。 上・下巻共に本当に何も知らない状態からでも進めることができる良いテキストだと思います。

DVD付きなので、DVDを再生する環境が無くyoutubeで曲のタイトルを検索しながら進めていますが、特に問題なくできています。

原色日本蝶類図鑑(川副 昭人, 若林 守男 著)

f:id:misos:20200414223732j:plain
原色日本蝶類図鑑カバー

カバー付きの中古の良品が定価の3割程度の価格で売られているのを発見し購入。

昭和の本で、日本に生息する蝶の生態・食草・雌雄の区別・変異などの説明と、蝶の展翅された状態でのカラー写真が載った図鑑。全約400ページ。

「物語」のつくり方入門 7つのレッスン(円山夢久 著)

「物語」のつくり方入門 7つのレッスン

「物語」のつくり方入門 7つのレッスン

  • 作者:円山夢久
  • 発売日: 2012/05/31
  • メディア: 単行本(ソフトカバー)

特になろうを始めたりする予定は一切無いものの、色々読みたい気分に駆られて購入。

著者の物語の作成に関する講義(どのような講義かは具体的にはわかりませんが)での体験を元に、対話形式に近い形で物語の作り方が紹介されています。

『「感情」から書く脚本術(カール・イグレシアス 著)』も以前読みましたが、『「感情」から書く脚本術』が海外映画での具体例を色々紹介し、今の手元の作品をどのように映えさせるのかを説明する流れなのに対して、この本はまだ特に何を書きたいか決まってない状態の人が読む過程で書きたいものを明確にしていくような流れになっています。

最後まで読んだ感想ですが、本当に今から初めての物語・小説を書き出したい人がはじめに何をすると良いのかをわかりやすく説明された本でした。

涼宮ハルヒの驚愕 他(谷川 流 著)

元々の発売当時に読んだものの、懐かしくなったので他シリーズと合わせて購入。 オンラインゲームの合間の待機時間などに読む予定。

UXリサーチの道具箱 イノベーションのための質的調査・分析(樽本徹也 著)

若干表紙に古臭さを感じてしまったものの、よく見ると2018年出版。 シナリオ作成・ペルソナ・カスタマージャーニーなどそれぞれについての分析の仕方と手法を集めた本です。UXデザインの勉強用に買いました。

これまで勉強したことなかったですが、用語の説明もされており読みやすいです。

レガシーコードからの脱却(David Scott Bernstein 著)

一度一通り目を通しておきたかったので。

鉛筆デッサン 基本の「き」(著 スタジオ・ものくろーむ )

iPadであまりに線を描くことができないため、数式や文字すらグニャッてしまっている原因を探るために購入. しかし一旦途中で放置。

チャート式大学教養 微分積分(加藤文元 監修/数研出版編集部 編著)

復習のために購入。

COMITIA

以下の方のものを購入、敬称略。

  • 水井軒間
  • 碓氷さつし
  • 坂上暁仁
  • 栞しい
  • きたむらしゅ〜

iPadPronのClipstudioでDropboxのフォルダが表示されない時

概要

[ファイル]>[読み込み]>[画像...]から表示される内容にDropboxが存在せず、Dropboxに保存した画像を読み込めない。

f:id:misos:20200802145235p:plain

解決方法

1. 「…」をクリックし編集をタップする

f:id:misos:20200802150230p:plain

2. Dropboxの表示をオンにする

f:id:misos:20200802150312p:plain

保存先にDropboxが表示されない場合

クリップスタジオで使用するカラーセットを画像から作成する

やりたいこと

画像を指定して、画像から色をピックアップしてクリップスタジオで使用できるカラーセットを作成したい。

f:id:misos:20200730205635p:plain
左の画像から、右のようなカラーセットを作成したい

そのために、画像からクリップスタジオで読み込める形式のカラーセットファイルを作成したい。 最終的に、https://img-to-aoc.herokuapp.com/ でクリップスタジオで読み込めるカラーセットのファイルをダウンロードできるようにしました。

カラーセット

クリップスタジオのカラーセットは独自の.cls形式のファイルか、Adobe Color Swatches(.acoファイル)の読み込みに対応している。

CLIP STUDIO PAINT リファレンスガイド - カラーセットパレット

Adobe Color Swatches(.acoファイル)は以下のページに仕様がある。

Color Swatches : Color swatch files are loaded and saved in Photoshop's Color Swatches palette. These are typically stored in the Color Swatches sub-directory in the Presets directory....(省略)

.cls形式のファイルは内部の仕様が不明だったため、.acoファイルでカラーセットを作成し、クリップスタジオで読み込む。

実装

カラーセットの出力

pythonにて実装。画像を読み込み、色をクラスタリングし、.aco で出力する。出力する色の作り方については色についてもう少し勉強したり、他の方の作成したカラーセットを参考にしながら決めていきたい。作ると決めてからクリップスタジオで読み込んで動作確認するまで約1時間かかりました。

Webアプリとしてのリリース

Herokuで行います。

はじめに、documentation に従いHeroku CLIをインストール。 The Heroku CLI | Heroku Dev Center

以降はHerokuのドキュメント通りに実行まで行います。

色の抽出とカラーセットの作成

画像に対してクラスタリングを行い、そのセントロイドのデータを指定された基準でソートします。

colorsys --- 色体系間の変換 — Python 3.8.5 ドキュメント

完成したWebアプリケーション

画像の通信+画像処理が行われるため、一度の処理に数秒〜10秒前後待機時間が発生します。ウェブアプリケーションフレームワークはFlaskを使用しました。

https://img-to-aoc.herokuapp.com/

f:id:misos:20200801021605p:plain
画像から作成したカラーセットのプレビュー

最後に.acoファイルをダウンロードし、クリップスタジオのカラーセットから読み込みを行います。クリップスタジオで先ほどプレビューした色が読み込めていることを確認します。

f:id:misos:20200801021742p:plain

参考文献

sklearn.cluster.KMeans — scikit-learn 0.23.1 documentation

Adobe Photoshop File Formats Specification

リファレンス一覧 - リファレンス - CLIP STUDIO | 創作応援サイト

エキスパートPythonプログラミングを読んで(2)

各章を読み進める上で調べた内容

各章を読みながら、そこに出てきた内容や気になったことを調べた際に参照したリンクと書き留めです。本に記載してあるリンク以外のみ貼ります。全14章です。

前回:エキスパートPythonプログラミングを読んで(1) - めも

第6章

AWSなどへの開発したアプリケーションのデプロイの仕方・パッケージの管理・ベンダリング等についてコードを引用しながら紹介する章。

Twelve-Factor App methodology

ソフトウェア・アプリケーションをサービスとして提供する場合の、その開発・構築の仕方についての一般的な方法論。

The Twelve-Factor App (日本語訳)

www.slideshare.net

ポートバインディング

The Twelve-Factor App (日本語訳)

サーバ単位でサービスを提供するのではなくポート単位でサービスを提供・公開できる状態にすることで、環境ごとにサーバ設定を指定する必要性をなくす。

DevOps技術

DevOps 技術: デプロイの自動化  |  Google Cloud

他Web上に資料が多くあるので、それらと併せて本書を読む。

Fabric

python製のデプロイ自動化ツール、リモートホストの操作を自動で行うために使用される。Fabricが主にpython2、fabric2がpython3.4+を対象にしている。本書では主にFabricを対象にした説明が行われていた。

概要とチュートリアル — Fabric ドキュメント

コマンドライン 経由で 任意の Python 関数 を実行するツールです。(低レベルライブラリの上に構築された)サブルーチンのライブラリで、SSH経由で 簡単に かつ Python風に シェルコマンドを実行します。

これまで使用したことはないが、以下によるとバージョンアップした時の互換性に注意する必要があるようなので心に留めておきたい。

https://heartbeats.jp/hbblog/2018/11/fabric2-01.html:embe

Django

本書ではDjangoの説明ではなく、 Djangoで作成したアプリケーションのデプロイが話題の中心になる。一度自分で動くものを作って理解しなければならない。

Home - Django REST framework

[https://qiita.com/init/items/f5a5a64a05541fcda713:title]

プロセス監視ツール

10.2 プロセス監視ツールの作成(WMIを使用したプロセス監視) (サイバーセキュリティプログラミング Pythonで学ぶハッカーの思考) - Engineering Note

GitHub - giampaolo/psutil: Cross-platform lib for process and system monitoring in Python

Circus: A Process & Socket Manager — Circus 0.15.0 documentation

【Python】Supervisorによるスクリプトのデーモン化 | Hbk project

第7章

Python以外の言語で拡張APIを記述し、それらをPythonから実行する手順について説明。

GitHub - pybind/pybind11: Seamless operability between C++11 and Python

Basic Tutorial — Cython 3.0a5 documentation

1. C や C++ による Python の拡張 — Python 3.8.3 ドキュメント

第8章

大人数が参加するプロジェクトでのバージョン・コード管理についての説明が為されている章。

バージョン管理

gitflow = 「A successful Git branching model」を基にしたgitを用いた開発のワークフロー

CI・継続的インテグレーション

githubやbitbucketなどのgitソリューション上にソースコードをコミット→指定したステップでビルド・テスト処理を自動で実行する。Travis CI(https://travis-ci.org/)はpublicなリポジトリでは無料で実行できるので、一度使用してみる。すべてにおいて最良となるツールはないので、実行環境に合わせて選択する。オンプレミスで実行する必要があるならばjenkins, githubのオープンなプロジェクトならTravisCI...など。

第9章

プロジェクトのドキュメント作成について、技術書を書くための基本的なルールとそれらを行うためのツールの紹介をする章。

技術文書の書き方

必要なことは全て記述し、必要でないことは記述しない。新しく導入する概念が存在する場合は、同時に複数の導入を行わない。フォーマット・表記は全体で統一させる。つねに一人のペルソナを想定し、その人に向けてわかる文章を記述する。

「画像からカラーセットを作成」の利用規約

https://img-to-aoc.herokuapp.com/の利用規約です。

利用規約

適用

本規約は,ユーザーと本アプリ(https://img-to-aoc.herokuapp.com/)の利用に関わる一切の関係に適用されるものとします。

禁止事項

ユーザーは,以下の行為をしてはなりません。

  • 個人情報を含む画像のアップロード
  • 「性風俗・アダルト・ポルノ・出会い系関連のコンテンツ」「法令や公序良俗に反するコンテンツ」に関係する画像のアップロード
  • 法令または公序良俗に違反する行為
  • 犯罪行為に関連する行為
  • 第三者のサーバーまたはネットワークの機能を破壊したり,妨害したりする行為
  • 本アプリによって得られた情報を商業的に利用する行為
  • 不正アクセスをし,またはこれを試みる行為
  • 他のユーザーに関する個人情報等を収集または蓄積する行為
  • 不正な目的を持って本サービスを利用する行為
  • 他のユーザーまたはその他の第三者に不利益,損害,不快感を与える行為
  • その他,不適切と判断される行為

本サービスの提供の停止

通知なくアプリの終了や変更を行う場合があります。 また本アプリに事実上または法律上の瑕疵(安全性,信頼性,正確性,完全性,有効性,特定の目的への適合性,セキュリティなどに関する欠陥,エラーやバグ,権利侵害などを含みます。)がないことを明示的にも黙示的にも保証しておりません。また,本アプリに起因してユーザーに生じたあらゆる損害について一切の責任を負いません。また,本アプリに関して,ユーザーと他のユーザーまたは第三者との間において生じた取引,連絡または紛争等について一切責任を負いません。

利用規約の変更

必要と判断した場合には,通知することなくいつでも本規約を変更することができるものとします。なお,本規約の変更後,本アプリの利用を開始した場合には,当該ユーザーは変更後の規約に同意したものとみなします。

エキスパートPythonプログラミングを読んで(1)

各章を読み進める上で調べた内容

各章を読みながら、そこに出てきた内容や気になったことを調べた際に参照したリンクと書き留めです。本に記載してあるリンク以外のみ貼ります。全14章です。

第1章

Pythonの基本、環境、2と3の違いについての章。

PEP

www.slideshare.net

Lesson 13 旧バージョン2環境への対応、標準ライブラリ ― Python言語の文法(応用編):機械学習&ディープラーニング入門(Python編) - @IT

デバッグ

www.slideshare.net

VS CodeでPythonコードのデバッグも楽々!! (1/4):Visual Studio Codeで始めるPythonプログラミング - @IT

第2章

イテレータ・ジェネレータなどの構文の紹介とそれらの使い方について。

Unicode

www.slideshare.net

www.slideshare.net

mutable/immutable

オブジェクトによっては 値 を変更することが可能です。値を変更できるオブジェクトのことを mutable と呼びます。生成後に値を変更できないオブジェクトのことを immutable と呼びます。 引用元:3. データモデル — Python 3.8.3 ドキュメント

immutableなコンテナであっても、コンテナがどのオブジェクトを格納しているのかさえ変化しなければ、コンテナのもつmutableなオブジェクトの値は変更できる。到達不能 (unreachable) な状態になれば自動的にガベージコレクションの処理が行われる。ただしファイルは必ず明示的に閉じるべき。

Pythonの組み込みデータ型の分類表(ミュータブル等) | ガンマソフト株式会社

Literal String Interpolation

stringの中で{}で囲まれた部分を式として評価して出力する。

PEP 498 -- Literal String Interpolation | Python.org

collection

list, dictなどのコレクションの機能と選び方について。

collections --- コンテナデータ型 — Python 3.8.3 ドキュメント

組み込み型 — Python 3.8.3 ドキュメント

exception KeyError(KeyError):キーの集合内に指定したキーが存在しない時のエラー

itertools

itertools --- 効率的なループ実行のためのイテレータ生成関数 — Python 3.8.3 ドキュメント

無限イテレータ、最短のシーケンスによって止まるイテレータ(ドキュメントでの「Iterators terminating on the shortest input sequence」)、組合せイテレータが存在する。

Itertools in Python 3, By Example – Real Python

filterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8

zip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-

他気になったこと

  • len()について。

www.slideshare.net

  • decoratorについて

Python のデコレータについて理解した話 | レコチョクのエンジニアブログ

Python decorator

第3章

クラス関係のベストプラクティスと使い方について。

9. クラス — Python 3.8.3 ドキュメント

Lazy initialization(遅延初期化)

特定のオブジェクトの作成のコストが大きい割に実際に使用されるかどうかわからない状態の時、初期化のタイミングを使用される直前まで遅らせる、といった実装をすることがある。

限定的な初期化 | Microsoft Docs

.net - What is lazy initialization and why is it useful? - Stack Overflow

_metaclass_

Python の メタプログラミング (__metaclass__, メタクラス) を理解する | yunabe.jp

3. Data model — Python 3.8.3 documentation

第4章

コーディング規約や変数名の付け方について。リーダブルコードなどの文献も参考になる。

VSCode拡張

settings.jsonの記述

Command(Ctrl) + , で設定を開く。

Settings Reference for Python

Using Python Environments in Visual Studio Code

その他

www.slideshare.net

www.slideshare.net

第5章

パッケージの作り方とパッケージをリリースをするまでの工程・PyPIについての説明。

パッケージとは

パッケージ (package) は、Python のモジュール名前空間を "ドット付きモジュール名" を使って構造化する手段です。(引用元: 6. モジュール — Python 3.8.3 ドキュメント)

[Python入門]パッケージ (1/2):Python入門 - @IT

6. モジュール — Python 3.8.3 ドキュメント

インポート失敗時の例外=ImportError、ModuleNotFoundError(組み込み例外 — Python 3.8.3 ドキュメント

www.slideshare.net

pythonスクリプトのexeファイル化

各ツールの使用例とデコンパイルを困難にするための手法について本書で説明されています。

難読化コード - Wikipedia

耐タンパー性(タンパーレジスタンス)とは - IT用語辞典 e-Words

他のサイトの感想

購入を判断するために読んだ感想や他の方の記事です。

【感想・ネタバレ】エキスパートPythonプログラミング 改訂2版のレビュー - 漫画・無料試し読みなら、電子書籍ストア BookLive!

『エキスパートPythonプログラミング』|感想・レビュー - 読書メーター

『エキスパートPythonプログラミング 改訂2版』を読んだ - Tsukasa OMOTO - Medium

データベーススペシャリストに関する情報のメモ(2)

概要

次回の試験予定は未定。

IPA 独立行政法人 情報処理推進機構:制度の概要:データベーススペシャリスト試験

データベーススペシャリストに関する情報のメモ(1) - めも

メモ

正規化理論

正規化のメリット - 冗長性の排除 - データ更新をしやすくする

ただし、データの更新が必要ない場合は正規化を行わなくても良い場合がある。

更新時異状

第一・第二・第三正規が行われていない時に発生する可能性がある。

  • タプル挿入時異常
  • タプル更新時異常
  • タプル削除時異常

参考文献

「正規化理論」を理解する (1/2):「データベーススペシャリスト試験」戦略的学習のススメ(9) - @IT

データベースの正規化の説明 | Microsoft Docs

関係の正規化 - Wikipedia

正規化手順

各ステップ

  • 導出属性(他の属性から計算できる値)の削除、計算コストが高い場合など状況によって残す場合もある
  • 繰り返しの削除
  • 従属関係となっているデータの分離=主キーが決まれば自動的に決めることができる値を分離する
  • 推移的関数従属の分離
  • ボイスコッド正規形
    • 主キー以外のカラムが全て主キーに完全関数従属となっている状態
  • 第4・第5正規形:3つ以上の主キーからなるテーブルに対して分離する操作を行う

参考文献

【DB概論】正規化の手順 (1/2):できるエンジニアになる! ちょい上DB術・基礎編(7) - @IT

関係代数

  • union: R∪S: 属性名が一致している関係表を縦の方向に結合する
  • subtraction: R-S: 属性名が一致している関係表のうちSに含まれるものを取り除く
  • cartesian product: RxS: 二つの関係表の組み合わせのタプルを作成する
  • projection: πA11, Ai2, …, Aik (R) : 属性を選択
  • selection: σρ(R)[A1, A2, …, Am] : 行を選択
  • intersection: R∩S: 共通集合の選択
  • quotient: (R÷S): R末尾に含まれる属性からSに含まれるものを取り除く
  • θ-join: 二つの関係表の属性間の間に特定の条件が成り立つ場合のみ結合する
  • natural join: R|X|S: 属性が同じ値をもつ箇所のみ結合する

  • 内部結合:一致する箇所のみ残す結合

  • 外部結合:一致する箇所がない場合も属性を結合しNULLを埋める

参考文献

データベース設計

  • 業務分析
  • 概念設計・エンティティの抽出
  • 論理設計
    • エンティティの定義
    • ER図の作成
    • 属性の洗い出し
    • 正規化
  • 物理設計

を行う。アプローチの仕方によって順番は異なる。例えば

  • トップダウン:ER図作成→属性の洗い出し→正規化
  • ボトムアップ:属性の洗い出し→正規化→ER図作成

など。

設計の原理

  • 直行設計の原理: 同一の関係を表現するために複数の関係を用いない
  • 正規化の原理

変更履歴を管理するテーブルの設計

試験の範囲ではないように思うが、気になったので調べてみた。

AWSのデータベース

AWSの各種データベースサービスになど、どのようなケースでどれを使用するかについて、後ほど詳細確認したい。

www.youtube.com

参考文献