プログラミングの自習系学習サイト比較
人間が授業スタイルではなく自習系のやつ。
ドットインストール
ドットインストール - 3分動画でマスターする初心者向けプログラミング学習サイト
老舗。
プレーンテキストの文法チェックツール(textlint)の講座とかDocker入門とか意外に幅広い。
初心者向けのWeb系講座ばっかりだろうと思ってたら地味に講座が増えている。
Progate
転職サイトの会社が運営元:ITエンジニアの転職なら | プロエンジニア
結構評判がいい。
HTMLの教材だけみたけどスライドの説明の図が充実している。演習もその場で回答がチェックできるシステム。
ヒントがあるのは大きいと思う。マイペースで進められるので基礎を固めるにはいいのでは。
paiza learning
- オンライン学習環境(paiza cloud)との連携が最大の強み
- スキルチェックと求人サイトとの親和性が高い
- オタクよりで時々痛い
- 炎上マーケティング
- Progateに比べると粒度がまちまち
Cloud9というクラウド開発環境もあるけどあまり使いやすくない。教材と実行環境がシームレスに統合されている点はすごくいい。
演習問題の問題文がおかしいとか、内容があまりにしょぼいとか詰めが甘い。
音声つきの動画教材とか、かなり手の混んだ教材を用意しているんだけどそこまで評価されている感じではない。 ビギナーが求めているのとはちょとズレている?
PyQ
Python 専門らしい。実物は見ていない。
運営会社がPythonのスペシャリスト揃いなのでクオリティはすごいと思う。
Udemy
プログラミングに限らない。
- 英語の教材が中心(字幕あり)
- 個人がつくった教材をアップロードしているので玉石混交
- 基本的に有料
- 一定期間内なら返金可能
採点とかそういうのはない。
時々セールで大幅割引やっている。
まとめ
数年前に比べるとすごい時代の変化。ちょっとプログラムが書けるレベルならすぐにオンラインスクールにお金を払う必要ないのでは。
とっつきやすさ、はものすごい重要なファクター。
プログラミングを学ぶ障壁の一つである環境構築の問題を回避する手段が増えた(Progate、paiza、cloud9、ほか)のと、懇切丁寧な教材が一気に増えた。
まあエラーに遭遇したときに自力で対処できるか、とか英語の1次資料を読んで対応できるか、ってのは別の能力だろうけど。
そういう訳で、(私の代わりはごろごろいるはずなので)そろそろ労働を免除してベーシックインカム下さい。
MacBook Air (mid 2012)のFaceTimeカメラの明るさ問題
もう少しの間は持ちこたえてほしい。
症状
ビデオチャットで画面に映る自分の顔がちょっと暗い。手動調整はできないらしい。
対策
- 出版社/メーカー: ロジクール
- 発売日: 2018/02/22
- メディア: Personal Computers
- この商品を含むブログを見る
いつの間にかC525rという新しいモデルになっている……買い換えるかな。
画面が真っ黒で映らなとき
再起動してダメならSMCのリセットなどメンテナンス系の手順を試す。
Mac の SMC (システム管理コントローラ) をリセットする方法 - Apple サポート
発売年度で手順が変わっているらしい。
macOS Sierra: コンピュータの NVRAM または PRAM をリセットする
最悪、OSを再インストール。
まとめ
買い換えるのが確実かな。
- 出版社/メーカー: ロジクール
- 発売日: 2018/02/22
- メディア: Personal Computers
- この商品を含むブログを見る
ヘッドセットマイクも新しいの買いたい。
ゼンハイザー PCヘッドセット ヘッドバンド型両耳式/ノイズキャンセルマイク PC 8 USB【国内正規品】
- 出版社/メーカー: ゼンハイザー
- 発売日: 2011/12/16
- メディア: Personal Computers
- この商品を含むブログを見る
PythonとPmodのマイクモジュールで玄関のチャイムの音を検知する
ラズパイコンテストの応募ネタです。しょぼいけど動いたので。
背景
難聴による聴力低下が進むと玄関のチャイムの音が鳴っても聞こえない、または聞こえづらいという問題が発生する。
補聴器というソリューションも存在するが、一日中補聴器を装用しているわけではない。玄関のチャイムそのものをワイヤレスタイプや光で通知するタイプに交換するということも考えられるが、借家等の事情により必ずしも適切とは言えない。
玄関のチャイムそのものを改造せず、玄関のチャイムの音を検知するプログラムにより難聴者のQoLを改善することを目指す。
なお、健常者に置いてもなにかに没頭していて玄関のチャイムが鳴ったことに気づかないということは充分あるので健常者にとっても有益なはずである。
前提
過去記事で紹介しているマイクモジュールを使う。
ラズパイはRaspberry Pi 3 model B+。別にGPIOピンヘッダがハンダ付けされていればPi Zero Wでも問題ない。
ただし、マイクは安いUSBマイクでは感度が良くないのでMEMSタイプか、設置位置を考慮する必要がある。
事前調査
USBのマイクで玄関のチャイムの音を録音してAudacityで分析してみる。
arecord
コマンドで録音する。さすがにデフォルトの8,000Hzはどうかと思うので、CD音質で録音してみます。音質を下げるのは難しくないので。
$ arecord -D plughw:1,0 -f cd mic.wav
-f cd
で録音フォーマット(サンプリング周波数、ビット数)を指定しています。このオプションを省略すると8,000Hz、8bit。ステレオである必要性はないです……。
ローパスとハイパスフィルタでノイズ除去、正規化を施す。
ものすごくざっくりだが2,000Hzあたりの周波数の成分を検出すれば良いという仮定でやってみる。
方針
残念ながらマイクモジュールの信号をWAV形式に落とし込む方法がわからないのでマイクからの信号値変動幅で判定する。
一定時間内にしきい値を一定回数超えたら玄関のチャイムがなったとみなす。
2,000Hzということなので0.5ミリ秒以下でサンプリングすればいいはず。
準備
SlackのIncomming Webhockを使えるようにする。
- WorkspaceのApp管理ページへ移動する(もしくはhttps://slack.com/appsから遷移する)。
- 上段にある検索ボックスに"incoming"と入力して検索
- 「設定を追加」をクリックする
- 画面の表示に従って必要なパラメータを入力
- 投稿用のURLをコピーしておく
環境変数はPythonのスクリプトと同じディレクトリの.env
というファイルに書き込む。
SLACK_HOCK_URL=https://(省略)
各種モジュール
プログラム側に環境変数経由で投稿用のURLを渡すのでdotenv
をインストール。
$ pip install python-dotenv $ pip install slackweb $ pip install designspark.pmod
なお、Pythonのバージョンは3.5.3。
Pythonスクリプト
マイクモジュールからの入力値が一定時間内にしきい値を超えたら通知するスクリプト
こんなので動くのかって感じだけど動きました。
大きな音に反応したり、センサ本体が物理的に揺れたりしたときも電圧値が変化します。
センサの接続部がゆるいのも不安定な要因の一つっぽいです。
実行した様子
Slackのおかげで超お手軽。
$ python3 detect_sound_and_notify.py > /dev/null 2>&1
実際は実行し続ける必要があるのでtmux
上で起動してセッションをdetach。
通知
メッセージ
課題など
- パラメータの調整が不十分
- 設置位置とマイク感度に応じた調整
- Slack以外の通知手段
- 部品がむき出し……
チャイムの音を人工知能に学習させればよかったのでは……。
ALSA経由で使えるマイクモジュールの方が良かったかも。
感想
少しばかり難しく考えて途方に暮れましたが、センサから値で音がなったかは検知できているので妥協しました。
理想を言えば、チャイムの音の周波数成分を分析して人工知能でいい感じにできると誤検知が減るはずです。 しかしながら、そもそもセンサの入力値をPCM形式のような音として扱える形式にする方法がわかりませんでした。
alsa - How to recording audio file with PMod mic3 on Raspberry PI? - Stack Overflow
動いたので良しとしましょう。
何より提供いただいたPmod HATの返却義務を回避できたはずなので。
Google Cloud Vison API関連メモ(ただし文字認識に関する話のみ)
過去記事でも解説しているけど改めて再整理。自分の興味ないことに無関心というオタク気質のにじみ出た記事はこちらです。
ドキュメント
Google Cloud Vision API ドキュメント | Google Cloud Vision API ドキュメント | Google Cloud
REST APIとgRPC APIの2系統存在していることに注意する。
各プログラミング言語用のライブラリのドキュメントはまた独立している。
公式ドキュメントの翻訳は遅れているようなので原則的に英語のページをチェックする。
ページを下までスクロールすると左下に言語の切り替えメニューがある。
リリースノート(全体)
Release Notes | Cloud Vision API | Google Cloud
日本語の方は更新されていない。
データの扱いについて
データ使用に関するよくある質問 | Google Cloud Vision API ドキュメント | Google Cloud
文字数制限
「TEXT_DETECTION」には"Character Limit"があるとのこと。日本語ドキュメントは「文字数の制限」という訳になっている。
一方、「"premium" DOCUMENT_TEXT_DETECTION」には制限がないと記載されている。文字数なのか、文字種なのかちょっと疑問。
"premium"とは一体?
ドキュメントのページからフィードバックは送ったけど不明なまま。
認識できる文字・できない文字
情報なし。
日本のセールスチームに問い合わせてみたが、公開されている情報がすべてという回答。
対応画像形式とサイズ
APIの使用料金など
プロダクトのページを下にするクロール。
そのほか
要望などはGoogle公式のトラッカーへ。
公開バグトラッカー:公開バグトラッカーを用いたバグ報告と機能リクエスト | サポート | Google Cloud
Stack Overflow
Python関連
権限管理
サービスアカウントの作成時のロール選択。
- オーナー (roles/owner)
- 編集者 (roles/editor)
- 閲覧者 (roles/viewer)
- 参照者 (roles/browser) ←beta機能
オーナーか編集者の権限があれば動作するはず。
「参照者」というロールは日本語のドキュメントには記載がない。 英語のドキュメントにはbetaという扱いで記載があるがよくわからない。
プロジェクト内部の階層構造やリソースのリストは参照できるが、プロジェクト内のリソースそのものへの読み取りアクセスはない?
Understanding Roles | Cloud Identity and Access Management Documentation | Google Cloud
まとめ
随時更新します(たぶん)。
Google Cloud Vision APIとPythonで文字認識
- 作者: machine powers
- 発売日: 2018/09/14
- メディア: Kindle版
- この商品を含むブログを見る
Python とビルド済みのOpenCVバイナリパッケージ
ビルド済みのOpenCVバイナリパッケージについてメモ書き。 あくまでもPython向けにOpenCV 3.xをインストールする方法の1つです。
非力なマシンに最適。
背景
そもそもOpenCVソースコード自体にPython用のバインディングは含まれています。ただソースからビルドするか、OpenCVのバイナリをインストール後に必要なファイルを所定の場所にコピー((すればPythonからOpenCVを使用できます。
この場合の難点はOpenCVのビルド時に検出されたPythonのバージョンでしか使用できないという問題があります。
環境によっては有効化されていないモジュールがある可能性がありますがそこまでは調査していません。あしからず。
前提
前提条件は次のとおり。
この記事を書いている時点で最新版は3.4.2.17。バージョン番号はOpenCVのバージョンに対応します。
現時点でOpenCVの最新版は3.4.3。このライブラリ(というかビルド済みバイナリ)は3.4.2に対応しています。
PythonのバージョンとCPUアーキテクチャ別のビルド済みパッケージというのがこの記事で紹介しているPythonモジュール。
あくまでも非公式パッケージです。
メリット
このパッケージのメリットは導入が楽な点。特に別途OpenCVのインストールが不要。
デメリット
デメリットはパッケージをインストールするたびにOpenCV一式をインストールするのでディスク容量を消費する点。
ある程度汎用的な環境向けにビルドされているのであまり最適化はされていない。新しいバージョンがリリースされてから若干のタイムラグがある点にも注意が必要です。
なお、インストールに成功したからと言って動作するとは限らず、追加で依存しているライブラリのインストールが必要な場合があります。
パッケージ名
本体のみとcontribあり、GUI関連機能(highuiモジュール)ありとなしで合計4つのパッケージがある。
以下の4つのパッケージのうちどれか1つを選んでインストールする。
本体のみ
headless
の方はGUI関連機能を無効にしたパッケージ。サーバー環境向け。
contribあり
opencv_contribリポジトリを組み合わせてビルドしたパッケージ。headless
については本体のみのパッケージと同じ。
Linux環境でcontribつきのパッケージの利用は不要な機能のための依存パッケージをインストールする必要があるので逆に面倒な可能性があります。
インストール時の注意
環境によっては追加のパッケージをインストールする必要があります。エラーメッセージから該当のファイルを含むパッケージを特定してインストールします。
macOSの場合はHomebrewでopencv
パッケージが依存しているパッケージ一式をインストールすればOpenCV本体は動くはずです。具体的にはbrew info opencv
を実行しRequired:
という行に列挙されているパッケージのうち、python本体以外をインストール*1。
参考:Raspbian Liteでビルド済みのOpenCVパッケージを使うための依存パッケージいろいろ
具体例
Python 3.7、opencv-pythonのバージョンは3.4.2.17。
作業ディレクトリを作成。contribにある二値化処理アルゴリズムを試したいのでopencv-contrib-python
をインストール。
$ mkdir work $ cd work
pyenv
などを使う場合はこのタイミングで使用するPythonのバージョンに切り替え。
venv
モジュールで仮想環境を作成して有効化。
$ python3 -m venv venv $ source venv/bin/activate
この状態でpip
コマンドはpip3
コマンドへのリンクになっています。
contribありのパッケージをインストールします。
$ pip install opencv-contrib-python-headless
大抵の場合はNumPyとmatplotlibも使うのでついでにインストール。
$ pip install numpy matplotlib
まとめ
他のインストール手段でインストールされるモジュール類とのconflictに注意。
こういう記事が意外なところで役に立つと思っていたりします。まあ気休めですけど。
おしまい。
詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識
- 作者: Gary Bradski,Adrian Kaehler,松田晃一,小沼千絵,永田雅人,花形理
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/05/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
*1:まあ楽ができればそれが正義