今日も微速転進

ここではないどこかへ

書評:"Test-Driven iOS Development with Swift 3"

どうにか読み終えたので書評記事。

Test-Driven IOS Development with Swift 3

Test-Driven IOS Development with Swift 3

1月の一冊5ドルのキャンペーンで入手。読み始めたのが4月だか5月だか忘れた。

内容は悪くは無いけど、ページ数的に定価で買うのはちょっと物足りない感じだろうと思う。

概要と特徴

iOSアプリ開発を題材に、テスト駆動開発について解説した本。

www.packtpub.com

発売は半年以上前。対象としている環境はSwift /Xcode 8 。

内容を確認したいのであればGoogle Booksでも一部閲覧可能。

books.google.co.jp

200ページ弱で読みやすい。英文もそれほど難しくない。

というか、テストを書いて、テストが成功するようにコードを書く、の繰り返しなので必然的に同じ言い回しが何度も出てくる。


いわゆるRed, Green, Refactoringの繰り返しなので退屈。なんだかんだで写経するとそれなりに時間を食う。

TDDのお作法をXcode+Swift 3 に落とし込んだだけの本と言ってもいい。

Swift固有らしい部分はあまりなく、テストを書く(途中でコンパイルエラーに対処する)、テストがエラーになることを確かめる、コードを書く、テストが成功することを確認する、という流れの通り。

Chapter 1 とChapter 5の後半以外の残りの章はToDoアプリをTDDで作るチュートリアル。

あくまでもstep-by-step方式でTDDの作法に従いつつアプリを開発していくので、特定のトピックごとに方法やノウハウを解説するというスタイルではない。

そのため逆引き系のノウハウ本のような使い方はできない。

本のコンセプトとしては Introduction とか Overview という単語がマッチすると思う。

書いてあること

  • TDDの思想にもとづくの開発の進め方(ワークフローが中心)
  • XCTest を使ったテスト駆動開発(XCUITest も最後にちょっとだけ登場する)
  • 非同期処理に対するユニットテスト(expectationwaitForExpectations
  • Function Test
  • サーバーを使用しないネットワークAPI呼び出しのテスト*1
  • Code Coverage *2
  • Xcode Server を使用したContinuous integration 環境のセットアップ

fastlaneというデプロイツールの初歩的な解説が2ページほどある。

書いてないこと

プログラミング言語の解説本ではないのでSwiftおよびXcodeの説明はなし。

  • UI部品の色や位置のテスト方法
  • カメラ関連のテスト方法
  • CoreData 関連のテスト方法
  • AutoLayout関連
  • 初歩的な内容以外のTDD関連トピック

なお、アプリが完成するところまで完全に解説しているかというと、そんなことはない

Chapter 2. でスクリーンショットが表示されているが、残りは同じ要領でやってみよう、という感じ。

気になる点など

安心の大英帝国クオリティ、ですね。本文がおかしくてもサンプルコードがまともなら問題ない……のか?

メソッド名にアンダーバーが抜けている箇所が後半に何箇所かあったりします。この出版社、他の本も含めて校正が雑すぎではないでしょうか。

Chapter 1

単語の先頭を大文字にするサンプルを提示しているが、なぜかcapitalizedメソッドを使わずにめんどくさい方法を使っている。

実害はないけど。

Chapter 3 (Equatable)

Chapter 3の、"Equatable"の解説箇所で、構造体のメンバ要素のtitleが異なるケースのテストの解説が欠落している(そして==メソッドの実装も言及してない)。

Chapter 4

文中でメソッド名のtest_TableViewIsNotNilAfterViewDidLoad()test_TableView_AfterViewDidLoad_IsNotNil()を混同している…。

ItemListViewControllerTest.swiftに関する解説で、以下の変数宣言に言及がない。サンプルコードを確認すれば済む話だけど。

 var sut: ItemListViewController!

本文に記載のコードの、timestampの秒数が微妙におかしい箇所があるので注意。UNIXエポックからの経過秒数の数字が一致しないのでテストが失敗する。

1456095600.0ではなく1456066800.0*3

Chapter 5

後半ToDoアプリではなく別のサンプルでネットワーク通信とエラー処理。面倒なので写経せず。

Chapter 6

ToDoアプリの続き。途中まで作成したアプリを動かしてみろ、という指示があるが、この時点では必要な記述が抜けているので注意。

addではなくてsaveメソッドの方。


最後のセクションでXCTUITestのサンプルになっているが、ボタンの配置によってはiOSシミュレーター上でボタンがキーボードに隠れてタップできずにテスト失敗ということがあるので注意されたし。

Chapter 7

コード・カバレッジの話と継続的インテグレーション。

自動生成されるメソッドを削除してカバレッジ100%にするノウハウが記載されている。

そんなんでいいのか。

継続的インテグレーションについてはXcode Server (Xcode サービス) の設定方法が解説されてる。

以下の過去記事を参照。

a244.hateblo.jp

Xcode Serverを利用するにはmacOS Server のインストールが必要(この記事参照

その他、疑問点

StoryBoardの要素とコードを関連づけるための@IBOutletで始まる変数宣言に循環参照対策のweak修飾子がついていないが問題いないのだろうか?

この本の特徴として先に変数を宣言しておいてからStoryBoardからドラッグしてアウトレットを関連づけるスタイルなので自動生成される場合と異なり、@IBOutlet ...のようにweak修飾子がついてない。

テスト実行のタイミングでは問題なくても実際のアプリとしてはどうかと思う。


なお、Amazonのレビューで低評価のコメントに著者は日常的にiOSアプリを開発していない云々という批判がある。

コメントとしてはViewControllerUTTableViewDelegateUITableViewDataSourceを疎結合にする際のアプローチについての批判。

Amazon.co.jp: Test-Driven iOS Development with Swift 3 電子書籍: Dr. Dominik Hauser: Kindleストア

iOSアプリ開発のお作法としてどうかという観点と、TDDとしてどうなのか、判断できない。

TDDについて

統合開発環境の世話になりつつ静的型付け言語でTDDやろうとすると、編集中のソースに対するコンパイラの警告とかビルドエラーがうっとおしい。

変数名のタイプミスとかテストで検出できるのはいいけど、もうちょっとどうにかならないものか。

テスト実行結果でRedの表示が出るのはいいけど、統合実行環境のエディタ部分が赤く染まるのはなんかすごく気分が悪い。

TDDをやるには使うフレームワークやライブラリに対するある程度の理解がないとできないという感想。SwiftはPlaygroundがあるからいいけど、試行錯誤用に別枠で検証コードを書かないと辛い。

型情報から入力補完が効くだけまだマシなのか。

TDD関連トピック

Chapter 8で言及されているURL。

まとめ

過去にもテスト駆動開発の本(RSpecとかCucumber)の本を購入したことはあるけど(いわゆる写経込みで)最後まで読みきったのは初。

テスト駆動開発のチュートリアルとしては結構いいと思う。

逆に他の言語でテスト駆動開発をの経験があると物足りないのでは。

テスト自動化のノウハウの面倒な、カメラとセンサとかスマートフォンアプリならではの機能についても解説して欲しかった。

価格から考えて、せめてUIテストの自動化とかもう少し踏み込んだ内容だといいのだけど。


せっかく読み終えたので既存の自作アプリに関してはバグ修正と機能追加からテストを書くようにしたい。

ちょうどWeb+DB PRESS Vol. 99もスマートフォンアプリのテスト(ただしUIテスト)に関する特集なのでそっちも読む予定。

WEB+DB PRESS Vol.99

WEB+DB PRESS Vol.99

  • 作者: ?橋健一,谷口禎英,井本大登,山崎勝平,大和田純,内村元樹,坂東昌哉,平田敏之,牧大輔,板敷康洋,大?浩崇,穴井宏幸,原口宗悟,久田真寛,ふしはらかん,のざきひろふみ,うらがみ,ひげぽん,池田拓司,はまちや2,竹原,片田雄樹,渋江一晃,WEB+DB PRESS編集部編
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/06/24
  • メディア: 大型本
  • この商品を含むブログを見る

それではまた。

*1:あまり詳しくないけど

*2:Xcodeで"Edit Scheme"からTestターゲットのチェックボックスをONにする話

*3:小数点の左の、右から3番目の数字

UIデザイナーじゃないけれど……Sketch 入門本を購入した話

英語の電子書籍を買ってから日本語の書籍の存在に気づいたという……。

UIデザイナーのための Sketch入門&実践ガイド

UIデザイナーのための Sketch入門&実践ガイド

タイトルに「UIデザイナー」とあるけど、そうでなくても役に立ちそうなので購入。

関連:執筆した「UIデザイナーのためのSketch入門&実践ガイド」が発売されました | UXデザイン会社Standardのブログ

Kindle版がセール中(7/11まで?)で50% OFF セール*1

割引セールの特設ページはこちら

ただし、Kindle版は固定レイアウト

デザイン系は仕方ないのかな。PDF版が買えるならそっちにするんだけど。


内容としてはChaputer 1がソフトウェアの紹介。Chapter 2から7が基本操作と各機能の解説。Chapter 8 がチュートリアル。残りが付録。

付録が地味に充実している。


Sketch のライセンスは持っているけどアプリのアイコン作成とかボタンの画像の加工ぐらいで本来のポテンシャルを発揮できていない。

アプリの見た目のデザインにも活用できるようにしたい。というか、ライセンス代金の元を取りたい。


ちゃんとした書評は全部読んでから再度書く(たぶん)。

書きました(2017/11/18)。

a244.hateblo.jp

関連リンク

*1:50%以上安くなってないか?

Xcode Server(Xcode サービス)のセットアップとCI

macOS Server とXcode の組み合わせで継続的インテグレーションできるよって話。

macOS Server は前回エントリ参照。要するにアドオンパッケージという理解で問題ない。

a244.hateblo.jp

なお、元ネタは以下の書籍。

Test-Driven iOS Development with Swift 3

Test-Driven iOS Development with Swift 3

Xcode Server (Xcode サービス)

日本語のマニュアルでは表記が「Xcode サービス」になっている。

Xcode経由で実行できるテストターゲットに限定されるが、いわゆる継続インテグレーションを実現できる。

前提としては、下記の通り。

  • macOS Server が動作するホストにXcode がインストールされていること
  • Gitリポジトリから対象のソースコードをチェックアウトできること(HTTP or SSH)
  • テスト実行用のアカウントが対象ホストにログインできること(実行時はログインしている必要あり)

テストの実行開始はリポジトリへのコミット、または指定された時刻のいずれか。

マニュアルを見る限り、 macOS Server をインストールするホストと普段開発作業を行うホストは別のホストで問題ない。

試しに実行後にテスト実行アカウントでログインすると、iOSシミュレーターが起動していることが確認できる。

設定

macOS Server

Application フォルダの、Server.appをダブルクリックしてmacOS Server の管理ツールを起動する。

f:id:atuyosi:20170701220201p:plain

有効化と Xcode の選択

まず、「サービス」カテゴリーの、「Xcode」というメニューをクリックする(①)。

f:id:atuyosi:20170702190638j:plain

「Xcodeを選択…」というボタンがあるのでクリック(②)。

f:id:atuyosi:20170702220524j:plain:w480

ファイル選択ダイアログでXcode.appをクリックして「選択」をクリック。

ユーザー作成

ユーザー作成のためのダイアログが表示されるのでパスワードを入力して「ユーザーを作成」

f:id:atuyosi:20170702192033j:plain

管理者権限は不要なので、チェックボックスはオフのまま。


しばらく待つ。 f:id:atuyosi:20170702192248j:plain

ユーザーの切り替え

バックグラウンドの処理の関係で作成したユーザーに切り替えることを要求されるので「ログイン」をクリック。

現在のユーザーがログアウトする訳ではないので神経質になる必要はない。

f:id:atuyosi:20170702192408j:plain

別ユーザーでのログイン

ログイン画面が表示されるので先ほど設定したパスワードでログイン。

f:id:atuyosi:20170704112543p:plain:w480
本来は背景が透けて見えるんですが……

新規アカウントでの初回ログイン時の設定画面が表示される。

テスト実行用のアカウントなので、普段使いのアカウントのように設定する必要はない。

  • Apple IDの入力要求は「サインインしない」を選択して「続ける」クリック
  • Siri は無効にして「続ける」をクリック。

一連の初期設定が完了するとデスクトップが表示され、同時にスクリーンロックについての警告ポップアップが表示される。

f:id:atuyosi:20170703164749p:plain

Screen Lock is enabled for the Xcode Server integration user

Screen Lock may prevent UI Tests from interacting with your application. To restrict access to this account, use Fast User Switching to switch to another user.

唐突に英語のメッセージ*1で面食らうが、要するに、

Xcode Serverの継続インテグレーション用のユーザーのスクリーンロック設定が有効になっている。
(このままだと)スクリーンロックがアプリケーションのUIテストを妨げる可能性がある。
このユーザーの制限を変更しない場合は「Switch User」を選択して他のユーザーに切り替え可能。

さあ、「どうします?」というメッセージ。

  1. "Ignore": 無視して続行
  2. "Switch User":このユーザーの制限はそのままにして別のユーザーに切り替え
  3. "Open Security Preferences":環境設定画面を開いて設定を変更

UIテストを実行しない場合は1. の”Ignore” 。そうでない場合は3. "Open Security Preferences"をクリックして設定画面にアクセスして無効化する。

スクリーンロックを無効化するのはセキュリティ上好ましくないので、管理者権限を持たないアカウントの方が望ましい。
もしくは、UIテストの自動実行は諦めるか、物理的にmacOS Server のコンソールに自由にアクセスできないようにする*2


ひとまず普通のユニットテストをさせたいなら「Ignore」で一旦ポップアップを閉じ、しばらく待ってバックグランドの処理が終わるのを待つ。

画面右上に処理管理用の通知が表示されたら、同じく画面右上のユーザー名をクリックして元のユーザーにスイッチする。

設定変更を行う場合は、「環境設定」から「セキュリティとプライバシー」をクリック。

f:id:atuyosi:20170703170628j:plain

f:id:atuyosi:20170703170214j:plain
チェックを外す(上記の3. を選ぶとここの画面に移動するはず)

f:id:atuyosi:20170703170756p:plain
パスワードの入力(先ほど設定したもの)

f:id:atuyosi:20170703170804p:plain
「画面のロックを切りにする」をクリック

f:id:atuyosi:20170703170816p:plain
設定変更完了


上記の1. or 3. の場合は、画面右上のユーザー名をクリックして元のユーザーのデスクトップに戻る。

f:id:atuyosi:20170704114516j:plain

リポジトリの設定

ソースコードをGitリポジトリからチェックアウトしてビルド、テスト実行、リポジトリの情報を設定する。

ただ、参照するGitリポジトリがリモートかローカルかによってそれぞれ追加の作業が必要になる。

  • 外部のGitリポジトリ
  • ローカルマシンのGit リポジトリ

前者は話が簡単だが、後者はmacOS Serverの動作するホスト側でリポジトリを作成し、開発用のリポジトリと同期する必要がある。

このエントリは後者のケース。

この記事のケースでは開発マシン自体にmacOS Server をインストールしているので、そのままプロジェクトのフォルダでGit リポジトリを作成して使用。

ローカルのGit リポジトリからXcode Server のリポジトリにgit pushして、データを同期したうえでリポジトリからテストが実行される。

画面中央やや上にある「リポジトリ」タブをクリックし、「リポジトリへのアクセスを編集…」をクリックしてSSHを有効に。

f:id:atuyosi:20170704150358j:plain

f:id:atuyosi:20170704150900j:plain

SSHによるリモートログインの可否を訊いてくるので、「許可」をクリックする。

f:id:atuyosi:20170704152747j:plain:w420

Xcode側の設定 その1

Xcodeを起動して、Preferenceへ。

左から2番目のAccountsタブへ移動。

f:id:atuyosi:20170704155511j:plain

左下の「+」マークをクリックして「Add Server」。ローカルマシンがリストに表示されているので選択して「Next」。

f:id:atuyosi:20170704155518j:plain

管理者権限を持ったアカウントのユーザー名とパスワードを入力する。

※ 今回作成したテスト実行用のアカウントとは別のユーザーアカウント。

Gitリポジトリ追加

同期用にリポジトリを追加する必要がある。

f:id:atuyosi:20170704165342j:plain

Server.appに戻って、画面中央左下の「+」マークをクリック。

f:id:atuyosi:20170704163849j:plain
プロジェクト名を入力して「作成」をクリック。

このタイミングでSSHのアクセス権を確認しておく方がいいかも。「編集…」をクリックすると確認できる。

f:id:atuyosi:20170704164552j:plain 追加が完了すると、中央やや下のリストにリポジトリのパスが表示されるのでその行をダブルクリック。

f:id:atuyosi:20170704220316j:plain テスト対象のソースコードを同期するために、リポジトリのパスが必要になるので、ssh://で始まる行をドラッグして選択、右クリックでコピー。

Xcode の設定 その2

もう一度Xcode側で設定を行う。

f:id:atuyosi:20170704202945j:plain:w480
Source Control からプロジェクトのリポジトリの"master"から「Configure <プロジェクト名>」。

f:id:atuyosi:20170704221156j:plain
画面上部の、Remoteタブをクリック。

f:id:atuyosi:20170704221605j:plain
左下の 、十字のアイコンをクリックして表示されるメニューから"Add Remote"をクリック。

f:id:atuyosi:20170704221629p:plain

f:id:atuyosi:20170704222208j:plain

先ほどコピーしたsshで始まるssh://で始まるURLをペースト。

f:id:atuyosi:20170704222635j:plain

"Done"で閉じる。

Botの追加

そのままXcodeで作業を続行。

メニューの"Product "から「Create Bot...」 。

f:id:atuyosi:20170705000129j:plain

f:id:atuyosi:20170705000444j:plain

f:id:atuyosi:20170705000852p:plain

f:id:atuyosi:20170705000953j:plain

f:id:atuyosi:20170705001353p:plain

"Integrate"のプルダウンメニューから設定を変更できる。特定の時刻か、コミット時、または手動でテストが実行されるように設定できる。

f:id:atuyosi:20170705001919p:plain

  • Periodically
  • On Commit
  • Manually

f:id:atuyosi:20170705002923p:plain

f:id:atuyosi:20170705002929p:plain
"All iOS Devices and Simulators" というプルダウンメニューをクリック。個別に指定したい場合は"Specific iOS Devices"をクリックしてテスト対象のデバイスを選択(詳細は下図参照)。

f:id:atuyosi:20170705003111p:plain

iOSデバイスの実機が接続されていればテスト対象として指定できる。

f:id:atuyosi:20170705003722p:plain

環境変数の設定。追加したい場合は左下の十字のアイコンから。

f:id:atuyosi:20170705003944p:plain
Triger Script の設定。テスト実行前、テスト実行後に動作するスクリプトを設定できる。テスト結果のレポート送信の設定もこの画面で。

f:id:atuyosi:20170705004218p:plain

特に追加しなくても問題ないので右下の"Create"を押す。

最後に”Create"を押すとBotが作成され、commit windowが表示されるので、適当なメッセージを入力してCommit。

f:id:atuyosi:20170705004449p:plain

「接続先のホスト鍵(?)が信頼できねー(超意訳)」とか文句を言われたら"Trust"をクリックする。

f:id:atuyosi:20170705004509p:plain

環境によってはユーザー名とパスワードを訊いてくる。

f:id:atuyosi:20170705004710p:plain

XcodeのPreferencesで登録したID(テスト実行用ではないアカウント)で問題ないはず。

問題なくテストが実行されれば、Xcodeの”Report Navigator"から結果を確認できる。

f:id:atuyosi:20170705010326p:plain

Warning が表示されているがテスト自体は成功している*3


開発中は

トラブルシューティング

ネットワーク接続設定

Server.app側のXcodeサービスの画面を開き、「アクセス権を編集」をクリックしてネットワークアクセスの設定を確認する。

f:id:atuyosi:20170705005909j:plain

f:id:atuyosi:20170705005300p:plain
許可する接続元を変更。

f:id:atuyosi:20170705010034p:plain

テストとは無関係だが面倒なので素直に「Webサイトへのアクセスを変更」をクリック。

「続ける」を選んでも問題はないはず。

ユーザーの権限の確認

リポジトリのアクセス権、サービスへの接続についての制限に引っかかっていないかチェックする。

その他

テスト実行ユーザーでログインしているかどうか、確認する。

ホストの再起動後など、テスト実行ユーザー(この記事の場合はxcodeserver)がログインした状態になっている必要がある。

おわりに

Xcode経由でテストを走らせる分には悪くない選択肢ではないでしょうか。

開発中は特定の機種を前提に作業して、夜間などに各iOSデバイスの画面サイズにおける動作チェックをまとめて行う、ということができる。

テスト実行時にiOSシミュレーターで画面サイズを切り替えてテストを実行することを繰り返すのは大変。

iPadとiPhoneの両方をサポートするユニバーサルアプリやある程度規模大きいアプリの方がありがたみが大きいと思う。

複数のアプリを並行して開発する場合にも役立ちそう。

ただ、そのままではプロジェクト管理ツールの類と連携できないのがネックか。


それではまた。

*1:無生物主語構文ですね

*2:高速ユーザー切り替えの場合はパスワードの入力を要求される

*3:複数回失敗しているけど画面サイズの関係でボタンがキーボードに隠れるために失敗している。とりあえず気にしない

macOS Server のインストール

Xcode Sever(Xcode サービス)というのを試すために、macOS Serverをインストールしたのでメモ。

というか別に何も難しくないですが。

インストールしたバージョンは5.3.1。ノート系より据え置きマシンにインストールするのが本来の用途だろうと思います。

macOS Server とは

www.apple.com

サーバー版のOS Xにあった機能をパッケージとしてまとめたのだろうと思います。アドオンパッケージみたいな扱いです。

本来2400円ですが、開発者ライセンスを持っている場合は無料(タダ)


Windowsで言うところのActiveDirectoryのようなこともできるみたいです。

複数台Macを所有してる環境で、例えばMac miniあたりにインストールすると、Time Capsule兼プロキシサーバー兼ファイルサーバーのような、便利なマシンになるようです。

機能リスト:macOS Server - 仕様 - Apple(日本)

ただのファイルサーバーないしバックアップなら普通に省電力なLinuxサーバーか、FreeNASで十分な気がしますが、今回のお目当は Xcode Server なので。

ダウンロード(有償で購入する場合)

開発者ライセンスを持っていない場合は$20、日本円だと2400円。

macOS Server

macOS Server

  • Apple
  • ユーティリティ
  • ¥2,400

普通の人はふつうにApp Store で"macOS Server"と検索して「インストール」で問題ないです。

簡単ですね。 開発者ライセンス保有者は次の項目へ。

ダウンロード(開発者ライセンス保有者向け)

iOSかmacOSのデベロッパーライセンスを持っていること。

まず開発者ライセンスに登録しているApple IDでログインした状態で、https://developer.apple.com/download/にアクセス。

ベータ版のダウンロードリンクを無視して下にスクロール。

Xcodeとかのダウンロードリンクの下に"macOS Server <バージョン番号>“という行があるの右端の"Download"をクリックする。

無料ダウンロード用のコードが生成されると同時にiTunes App Storeアプリが勝手に起動する。

ギフトコードを入力云々と表示され、「一体俺にどうしろと?」と言いたくなりますが、勝手に謎のコードが適用されてダウンロードは始まっているので何もしない


この時点でバックグラウンドでダウンロードが開始されている。

しばらく放置してApp Store アプリで「購入済み」タブに移動。

あとは待つだけ。

インストール完了後、Applicationフォルダーに"Server.app"というファイルができる。

セットアップ

App Storeアプリからの購入済みアプリの一覧から「開く」をクリックするか、Applicationフォルダーにある"Server.app"をダブルクリック。

f:id:atuyosi:20170701092301j:plain

表示されるウィザードの「続ける」をクリック。

f:id:atuyosi:20170701092349j:plain

ライセンス文書が表示されるので内容を確認して「同意する」をクリック。

設定変更のためにユーザーのパスワードを訊いてくるので入力して「許可」をクリック。

あとは完了するのを待つ。

f:id:atuyosi:20170701092457j:plain

完了するとチュートリアル画面が表示されるので使いたい機能の解説を見ることができる。

f:id:atuyosi:20170701092610j:plain

インストール完了後すると2ペイン構成のウィンドウが表示される。

f:id:atuyosi:20170701220201p:plain

最低限の初期設定

初期状態ではインターネット側からアクセスを受け付ける設定なので「サーバー」カテゴリからマシンを選択して「アクセス」タブの「デフォルト・ネットワーク・アクセス」を「プライベートネットワーク」にしておく。

macOS自体のファイアーウォールと、ブロードバンドルーターが弾いてくれるはずだけど。

まとめ

ひとまずここまで。

Xcode Server は別エントリで。

今月のお買い物+振り返り(2017年6月)

今月も引き続き。

http://a244.hateblo.jp/archive/category/今月のお買い物a244.hateblo.jp

しょぼいエントリでも毎月何か書く口実としては悪くないという見解です。


睡魔に襲われて寝落ち→早起きして活動開始→翌日も睡魔に負けて寝落ち、で体調がいいのか悪いのかよくわからない感じ。

電子書籍

ここ半年で購入した本のうち、ちゃんと読み終えてないものが多いのでちょっと自粛。

持たない幸福論

ついに地上波デビューも果たした日本一有名なニート、pha氏の本。

Kindle版がセールで割引されていたので購入。

自分とは違うタイプの人だと思っていたが意外と考え方の似ている箇所があってびっくりした。

他人と積極的に関わろうという姿勢は根本的に違うのだけど。

この人の生き方はこの人だからできるのであって、凡人には真似ができない気がする。

関連:過去エントリで同じ著者(伊藤洋志氏との共著)の『フルサトをつくる』の感想を書いています。

a244.hateblo.jp

以下は6月発売のpha氏の最新作。

ひきこもらない

ひきこもらない

もはや立派な作家さんでは?

ニートの定義については問い詰めたい。

某テレビ局のドキュメンタリー*1で「面白い人には生きてて欲しい」という発言もちょっとひっかかかってる。

「面白い人=サラリーマン生活が合わない人」、なのか、pha氏が面白いと思う人なのか。

『情報なき国家の悲劇 大本営参謀の情報戦記 』

ブラウザゲームの影響による。まだ読んでない。

Interface 2017年7月号

Tech Villageで電子版を購入。

Interface 2017年7月号 ラズパイ実験室 はじめてのIoT 2017【PDF版】 | Tech Village 書庫&販売 - エレクトロニクス分野の電子書籍販売サイト / CQ出版株式会社

MQTTプロトコルの解説記事はとりあえずキープ、みたいな感じ。

買っただけでほとんど読めてない。

8月号はまだ買ってない……。

今月はKindle Unlimitedにかなり時間を持って行かれた。

ライト、ついてますか―問題発見の人間学』

ライト、ついてますか―問題発見の人間学

ライト、ついてますか―問題発見の人間学

古典的名著。Rebuild というポッドキャストに煽られて。

なんというか挿絵が時代を感じさせる。いかにも共立出版

ちょっと言い回しが古いというか、そこは漢字でいいだろうと思う箇所が平仮名で読みにくかったりする。


他のワインバーグ氏の著作も含めて新装版出したりしないのかな。

G・M・ワインバーグ全集みたいな感じでモダンな組版になるといい感じ。

それほど分厚くないのでこのて日本にしてはさくっと読める。無理やり要約すると、問題を解く前に一歩引いて見方を変えて見なさい、という話。

期待しすぎると肩透かしを食らうが、掲載されているエピソードはコロンブスの卵のようにシンプルな話。

『基礎からしっかり学ぶC++の教科書 C++14対応 』

基礎からしっかり学ぶC++の教科書 C++14対応

基礎からしっかり学ぶC++の教科書 C++14対応

久々にAmazonではなく書店で購入。今更だけどちゃんとC++を勉強しようという。

出版社サイト:日経BP書店|商品詳細 - 基礎からしっかり学ぶC++の教科書

ガジェット

ASUS ZenFone3 MAX

5.5インチモデルの方。

過去記事参照。

a244.hateblo.jp

手帳タイプのスマートフォンケース

中国製。まあ価格的にはアリでしょ。

Loftか東急ハンズで探す方が良かったかな。

片耳のタイプのbluetoothイヤホン

マーケットプレイスの商品につき注意。

100円違いの両耳用のモデルを購入しようとしてミスった。こっちは右耳用……。まあ不都合はないからいいけど。

【参考】両耳用モデル:EnacFire bluetooth イヤホン V4.1 片耳ミニ ワイヤレス イヤホンCF8002

商品画像を見て購入したはずなので、カートに入れる時に取り違えたかな。

ものは悪くない。

イヤホンの内蔵マイクは自分の声以外はほとんど拾わない感じ。

音はモノラルでそれなり。価格相応。

稼働時間は検証中。

技適番号は外箱に204-720044と記載されているけど総務省のDBでヒットしない。反映されるのが遅い可能性があるのでなんとも言えない。

狙いとしては聴力低下をカバーするために補聴器もどきを作ろうという計画。

右耳は耳鳴りがひどいので軽い聴力低下状態の左耳に装着してスマートフォンのマイクで拾った音をブーストしてイヤホンで聞けばいいのではという発想。

類似商品がたくさんあるのでOEMなんだろうか。

消耗品とか

ビタミン剤は小林製薬から切り替え。ガン患者向けの広告が悪質という話を見聞きしたので。

ジャイアントコーンは確かにうまいと思ったがAmazonのレビューは過剰評価気味。共立のミックスナッツに入っているやつよりは確かにうまい。

乳酸菌サプリは効果を実感できず。体質的に便通にはキウイフルーツの方が効くみたいです*2

そのほか

モノじゃないけど。

a244.hateblo.jp

まだ1ヶ月経ってないけど、Adsenseはいい感じ。

イベントなど

  • 6月2日:第2回 変人講座
  • 6月3日:Cocoa勉強会関西

変人講座は耳鳴りのせいでイマイチ聞き取れず。 Cocoa勉強会の方はまあまあ。

まとめ

英語の本を期待したほど読めていない。 アプリを1つリリースしたので悪くはないか。

今年に入ってから電子書籍より紙の本の方が読了率が高いような気がしている。

読み終えたけど書評を書いてないというのもあるけど。


今月に入って耳の状態が悪化した感じでしたが、ひとまず改善傾向。どうも気圧の変動とか気候に影響されている感じがする。

とりあえず体重ももう少し落としたい今日この頃。

それではまた。

*1:後編しか見てない

*2:あくまでも個人の体質の問題です

広告