さわらブログ

さわら(@xhiroga)の技術ブログ

#技術書展5 書籍レビュー×28冊!

2018年10月8日、技術書展で大量に技術書を購入して参りました! 何もしないと積ん読になってしまうので、1冊1分で読んで今すぐ全冊レビューします📕📗📘📙

言語

GOで全ウェブサイトCLI化計画/ にぼし

スクレイピングといえばPythonくらいに思っていたので視野が広がった。バイナリで配布できるのは確かによいので、自分以外が利用する場合には選択肢に十分入る。他cobraというライブラリが使いやすいらしい。パイプ連携もいいね!

Conditional Types I/O/ Takepepe(潜水艦)

TypeScriptの型推論GenericsとConditional Typesというのがあって、後者だとプログラマブルに型を定義できるらしい。
型をつけるのは手間に感じており、(もっといい感じの方法あるだろ...)と思っていたが、それに応えてくれる機能なのだろう。

趣味のPython/ つばめさんチーム

Scapyを初めて知った。パケットキャプチャに便利とのことで、Amazon DashボタンなどIoT機器のハックに使うかも。

フロント

Flexboxを完全に理解する本/ 松田裕一郎

Flexboxがそれまでfloatが担ってきた役割を代替するものということが分かってよかった。Flexbox使うときは読む。

テキストエディタとブラウザで書ける・描けるSVG/ @t_motooka

SVGを手書きできる人がいるということを知れただけで人生が広がった。
私はそこまでストイックなのはいいけど、IDE拡張機能を入れてちょっと修正する、とかはそのうちやるかも知れない。

React Native

Expoでストアリリースする React Native「最速」アプリ開発/ 前田翼 渡邊雄 為藤アキラ

Expoでの解析・エラートラッキング・多言語対応・テストまでカバーしたドキュメントで日本語のものが他にあるだろうか!
まさにExpoアプリを開発しているので大変役立つと思う。これだけでも技術書展にきてよかった。

リアクトネイティブ エクストラリアクションズ #1ドントエンベッドゼム/ 高木健介

React NativeのJavaScriptソースコードiOSAndroidとの関係が知りたくなったら読む。

リアクトネイティブ エクストラリアクションズ #2オーバーザブリッジ/ 高木健介

ブリッジ使う時に読む。

React Native Animation/ OZ。

Animationのサンプル、ソースコード付き。後半のReact Nativeハマり集も嬉しい。

半年やったけどReactNativeやめました/ とも@ぬるぽ

Expoの辛い点として効果測定や広告の表示の測定の手段が不足していることを指摘しており、これは全然知らなかった。
代替案も書いてあったので後で参考にする。

インフラ

Shellスクリプトでサーバー設定を自動化する本/ カウプラン機関極東支部

AnsibleではなくShellスクリプトでサーバー設定を自動化する。っていうか本の中のShellのテクニックがすごい参考になる。

ShellScriptの代わりにPythonスクランナーFabric&Invokeを活用する技術/ 74th

Fabric/ InvokeというPythonのライブラリの解説本。DB操作やクラウドサービスとの通信を挟む場合、タスクランナーは選択肢に入りそうだ。

初めてのsystemd-nspawn/ わかめそば

systemdってサーバー起動時に動かしたいプロセスを登録するやつでしょ?なんでコンテナ?と思っていたけど、そのプロセスを隔離された環境で動かせるところが強みらしい。例ではMastodonを動かしている。与えられたサーバーが限られている状態で何か複雑なことをやる時には適していそうだ。

0から始める!簡単!FreeNAS構築チュートリアル/ かめねこ

自宅サーバーをクラウドストレージにしたいので購入。OSSを使って様々なプロトコルに対応させたり、WebGUIで管理したりできるようだ。便利!

ハンドソート・パンチカード・システムはDB設計の大切な全てのことが詰まっている/ Kojiro

パンチカードの存在は知っていたが、IBMのようなベンダーの規格の他にハンドソート向けの規格もあったということは知らなかった。要するに孔に棒を通して挿さったカードだけを引き上げるなど、手動でのフィルタリングにも対応したパンチカードのことのようだ。

クラウド

雰囲気でわかる AWS SAM CLI

SAMは知っていたが、それが「サーバレスフレームワーク」というものに分類されることは本書で初めて知った。"Serverless Framework"や"Terraform"も早く触らなければという思い。

Amazon Connect入門

問い合わせ対応がGUIで可視化できる、Lambdaとの連携、s3に音声が保存できる(!)、電話番号の取得が簡単、のメリットがあるそう。導入検討する。

色んなところでKubternetesを動かす本/ 調布技研

やっていることは以下の二つ。物理層の不安定さをKubernetesで吸収するアプローチ、と考えればいいのだろうか?面白い! * 自宅サーバーでKubternetes * 激安VPSでKubternetes

Kubernetesの単語帳/ かいていどうくつ

タイトル通りKubernetesの単語帳なので今度Kubernetesで遊ぶ時に手元に置いておく!

SERVERLESSを支える技術/ めもおきば

サーバレスの定義が参考になった。「計算機の抽象化」「フルマネージドサービス」「イベントドリブン」。
後半はクラウドベンダーの比較なので必要に応じて読む。

ラズパイ

ネコならわかる ゲームボーイアドバンスプログラミング入門/ @kuroneko1988

DockerでGBAのソフト開発環境を作成してC言語で開発する本。
メモリマップ上のデータを操作することでゲームの状態を操作するらしい。PARの仕組みがちょっとわかった気がする。

ラズパイ ADVANCE/ CUBIC STYLE

ラズパイでGameboy Advanceのソフトを開発する本。カートリッジも自作している。すごい!
確かにGBAなら昔使ってたのが家にあるし、将来子ども用に自作ゲームを遊んでもらう時?とかにいいかも。

VR

WebXR体験館/ あんどうやすし

WebXRという技術自体が初見。現在はChrome for Androidで利用可能な、VR/AR表示可能なデバイスをブラウザから操作できるAPI
WebページにちょっとしたAR/VRを組み込みたい時にいいかもしれない!

その他

スマートスピーカーを遊び倒す本/ show imajo 田中みそ torisankanasan 長村ひろ 千代田まどか(ちょまど)

ちょまどさんのイラストがついてきて嬉しかったです。内容としてはAlexa、Google Home、Clovaをカバーしていて比較とかにいいかも?

PokeAI 〜人工知能の考えた最強のポケモン対戦戦略〜/ ヤマブキ研究所

内容もすごいが、人工知能のトレーニング用のポケモン対戦環境の構築が一番大変だったとのこと。

ASMRのはじめかた/ asmrnavi.com

ASMRとは背筋がゾクゾクする気持ちいい音のことらしい。URLが記載されていたので後で聴く!

201 CCREATED/ CRAB INK

テスト管理ツールについて知りたいと思って購入したらまさかの小説形式で驚いた。内容は、ツール以前にまずは方法論を理解することが先決、とのこと。それはそうだ。インターンのメンバーをリードするときは注意しよう。

試験に出ないSE用語/ みじんこ組

SE時代の同期との飲み会に持って行ったらウケそう。レガシーな用語に強い印象。普通にSE業界の教科書とか書いてたら買う。

まとめ

初参加だけど行ってよかった。次は書くぞ!

DBeaverでHerokuのPostgreSQLにアクセスしたらFATAL...SSL off → sslmodeの設定を見直そう

DBeaverでPostgreSQLにアクセスすると、以下のエラーが出てしまいました。

FATAL: no pg_hba.conf entry for host "XXX.XXX.XXX.XXX", user "hwe***********", database "dek***********", SSL off

原因は、sslmodeが未設定だったため。
接続設定 → ドライバのプロパティ → sslmode をrequireに設定すると問題なく接続できました。

f:id:hiroga_cc:20180816150916p:plain

React Nativeのフォントは結局何が使えんねん一次調査

React Nativeでシステムにもともと入っているフォントを指定するにはどうしたらいいのか、試行錯誤したメモ。
めっちゃエラー喰らいました。
f:id:hiroga_cc:20180812155758p:plain

実験方法

以下の指定方法で、fontFamilyの値を入れ替えてみました。

<Text style={{ fontSize: 18, textAlign: 'center', fontFamily: 'System' }}>テスト</Text>

結論

普通に調べたら使えるフォント一覧が見つかりました...が、'San Francisco'だけはなぜか指定できませんでした。 github.com

それを踏まえて、うまくいく指定とダメな指定。

うまくいく指定

<Text style={{ fontSize: 18, textAlign: 'center', fontFamily: 'System' }}>システムフォント</Text>
// この指定方法でSan Franciscoが使えます。

<Text style={{ fontSize: 18, textAlign: 'center', fontFamily: 'Hiragino Mincho ProN' }}>ヒラギノ明朝</Text>
// 上記のフォント一覧は基本的にOK(San Francisco以外?は)

ダメな指定

<Text style={{ fontSize: 18, textAlign: 'center', fontFamily: 'San Francisco' }}>サンフランシスコ</Text>
// なぜかエラーになります。

<Text style={{ fontSize: 18, textAlign: 'center', fontFamily: 'HiraKakuProN-W3' }}>ヒラギノ角ゴ</Text>
// ヒラギノ角ゴはiOS SDK9以降から削除されている...っぽい?
// 追記: ヒラギノ角ゴの英字表記が'Hiragino Sans'になったことが原因のようです。

VSCodeの設定をgit/Githubで管理する

Visual Studio Codeのキーバインディングスニペットを、一括してgitで管理+GitHubに公開しました。
f:id:hiroga_cc:20180811111640p:plain

VSCodeの設定はUserフォルダ以下にまとまっているので簡単です!

手順

  1. ローカルのVSCodeのgitリポジトリを作成
  2. Githubでリモートリポジトリを作成
  3. .gitignoreを設定し、コミットしてプッシュ

1. ローカルのVSCodeのgitリポジトリを作成

Macの場合)ターミナルで以下のディレクトリまで移動し、git initします。
~/Library/Application Support/Code/User

f:id:hiroga_cc:20180811111943p:plain ※.gitignoreはこの後作ります。

2. Githubでリモートリポジトリを作成

普通にリポジトリを作成します。ローカルリポジトリにファイルがあるので、READMEは作らないほうがいいですね。

3. .gitignoreを設定し、コミットしてプッシュ

.gitignroeでworkspaceStorageを無視します。
完了したらコミットして、VSCodeリポジトリにプッシュ!

まとめ

いきなりMacが起動しなくなった場合とか、普段とは違う環境で作業するときに備えてみました。
ちなみに私のVSCodeの設定は以下のリポジトリです。よければご参考にどうぞ!

github.com

ハッカソンからブラッシュアップして #MFTokyo2018 参戦した感想と反省!

Maker Faire Tokyo 2018(2018/08/04~05)に「IoT仮想通貨ゴミ箱」チームとして出展してきました。

f:id:hiroga_cc:20180807084101j:plain 写真はRaspberry Pi もくもく会のみなさんと。

実際に出展してみて、来場者より出展者の方が絶対楽しい!と思ったのでシェアします。

IoT仮想通貨ゴミ箱について

蓋の裏側のWebカメラビットコインウォレットのQRコードを撮影し、ゴミが捨てられたらウォレットにビットコインを振り込むプロダクトです。お祭りなどでゴミをポイ捨てせずに捨てた人にクーポンとかあげたいな、という考えからスタートしました。


※ 解説にはBCHとありますが、BTCの誤りです(というか、BCHに直そうと思っていたけど時間がなかった)

リポジトリはこちら。
github.com

感想

出会いがあって刺激になる

自分の展示があると、自分のプロダクトに興味がある人が向こうからやって来てくれます!

例えば、仮想通貨関連サービスを運営している社長さんが見に来たりしました。

仮想通貨周りのサービスの仕組みがよくわかっていない人(結構います、取引所とウォレットの違いがあいまいな人とか)と話して理解してもらうのも、ビットコインを布教しているみたいで楽しかったですね。

ハッカソンの友達に会えて楽しい!

Startup WeekendやMashup Awards、Space App Challenge、ショッカソンなどなど...
色々なハッカソンの運営者・参加者さんと再開できて楽しかったです。

写真はStartup Weekendでご一緒した武村さんと、今回知り合った安藤さん。広島のコミュニティからの参戦。

反省

次は自分のこだわりを見せつけたい

ぶっちゃけハッカソン後の勢いで申し込んだので、技術的なこだわりとか自分の趣味とか十分に込められなかったのが悔しい!
来てくれたお客さんにも申し訳ないので、次は純粋に自分の趣味からスタートしたいな。

会場の電波が悪いので、API叩く系は相性が悪い

ビットコインの振込のためにインターネットに接続しなきゃだったんだけど、そもそも電波が繋がらなかった。
(実は内部でもエラーが起きてたんだけど...)
そのほか、MacbookからRaspberry Piへのssh接続ができなかったり、普段のハッカソンとは違う技術が求められてるな...と感じました。

まとめ

めっちゃ面白いし最高の機会なので来年も絶対出たいけど、次は自分のこだわりを見せるぞ!と思った次第です!

ECRへのdocker pushが"no basic auth credentials"で失敗すると思ったら、普通に手順間違いだった件

AWSのECRにDockerコンテナをpushする仕組みって、awscliツールを使ってdocker cliがログインするためのtokenを発行
→ そのtokenを使ってdocker cliでログイン、という流れになっています。

そのためのaws ecr get-loginなのですが、私はこの記述を読み飛ばしており... f:id:hiroga_cc:20180803180325p:plain

延々とno basic auth credentialsで怒られていました。笑 f:id:hiroga_cc:20180803180850p:plain

SQL初心者に贈る、自分のブラウザ閲覧履歴をSQLで見るためのセットアップ!

SQLを勉強するには手元で書いてみるのが第一だと思いますが、そもそもデータベースを用意するのが面倒ですよね。
実はGoogle Chromeなどのブラウザは、パソコン内部にSQLiteというDBを持っています!
これをSQLクライアントと繋げば自宅でもSQLの練習ができるってわけです!

f:id:hiroga_cc:20180801220245p:plain 以下、手順を解説します。

手順

  1. SQLクライアントの導入
  2. SQLiteのセットアップ
  3. 実際にSQLを発行

1. SQLクライアントの導入

なんでも大丈夫ですが、ここではDBeaverをオススメします。
dev.classmethod.jp

2. SQLiteのセットアップ

まずはSQLiteのパスを取得します。
(以下はGoogle Chromeの場合です。FirefoxSafariの場合はご自分で調べてください。)

History(拡張子なし)というファイルがDBです。私の場合は以下のパスにありました。
/Users/hiroaki/Library/Application Support/Google/Chrome/Default/History

次にコネクションを設定して、セットアップは完了です。
f:id:hiroga_cc:20180801215508p:plain

※注意
以下のような表示が出たら、Google Chromeを終了してみるといいかもです。
f:id:hiroga_cc:20180801215650p:plain

3. 実際にSQLを発行

SQLを発行する前に、テーブルがたくさんあるので中身を見てみるのがいいかも知れませんね。 f:id:hiroga_cc:20180801215911p:plain

SQLを自前で発行しなくても、右クリックして、"Read data in SQL console"で表示できます。
f:id:hiroga_cc:20180801220135p:plain

テーブルの中身がだいたい分かったら、好きなSQLを打ってみるのがよいと思います。
冒頭のSQLはこんな感じでした。

SELECT kst.term, datetime(v.visit_time/1000000-11644473600,'unixepoch','localtime') as visit_time
FROM keyword_search_terms as kst
inner join visits as v
on kst.url_id = v.url
order by v.visit_time DESC;

まとめ

こういう身近なところから勉強できたほうが楽しいですよね。
他にも教材ややり方ご存知の方いらっしゃいましたら、ぜひ教えてください。