2018年にやりたい100のこと

interestor2012.hatenablog.com

↑の自分版。 書き出してみたものの75個しか出なかった。リストアップするだけで自分の現状がわかるので良いですね。

技術関連

  1. LL以外のプログラム言語に手を出す
  2. スマートフォンアプリを作る
  3. Windowsデスクトップアプリを作る
  4. 自宅内ポータルを作る(FlaskかDjangoを使う)
  5. コンピュータビジョンに再挑戦
  6. モスライト作る
  7. メイカーフェアに参加する
  8. 自宅内の温度・湿度・照度管理の仕組みを作る
  9. 自宅内のスマホ位置管理の仕組みを作る(屋内測位)
  10. GISのイベントを福岡で立ち上げる
  11. QGIS3.0を使う
  12. 衛星写真の解析をやる
  13. CADを触る
  14. 総務省の新APIを触る
  15. ディープラーニング的な画像処理をやる(娘の写真だけ取り出すフィルタを作る)
  16. 3Dプリンターでなんか作る
  17. 自社製品の知識を深める(Runtime/hoge Objects系)
  18. 自社製品の知識を深める(API for Python
  19. 自社製品の知識を深める(Xamarn系)
  20. Visual Studioに慣れる
  21. Azureを活用する
  22. OCRに再挑戦
  23. Power BIを使う
  24. VBAにもっと触れる
  25. PostgreSQLにもっと触れる
  26. ネットワーク周りの勉強をする
  27. セキュリティ周りの勉強をする
  28. 3Dモデリングをやる

学習

  1. 統計学の教科書を1冊通読する(もう買ってある)
  2. 量子力学の教科書を1冊通読する(本未定)
  3. 会計の入門書を読む(財務3表一体理解法)
  4. 電磁気学の教科書を読む(実家のファインマン物理)

食関連

  1. 新しい店を開拓する(10店舗)
  2. 出汁を取れるようになる
  3. 自宅で干物を作る
  4. 自宅でラー油を作る
  5. ジンジャエールを作る
  6. 寿司を握る
  7. 一食二万くらいの食事を経験する

家周り

  1. 自転車保管スペースを作る
  2. 倉庫の掃除をする
  3. NASを買う
  4. SpotifyからGoogle Play Musicに移行する

運動

  1. 山に登る
  2. 海に行く
  3. 月2回以上ジムに行く
  4. ソロキャンプをやってみる

効率化

  1. Evernoteの活用法を探鉱
  2. Todoistをもっと使う
  3. Togglの使い方に慣れる
  4. GTDの本を読み直す

資格

  1. いい加減応用情報をとる(4月)
  2. TOEICスコア800を目指す
  3. GIS上級技術者の資格要件を埋める

読書

  1. SFを5冊読む
  2. 科学系の本を5冊読む
  3. 新書を5冊読む
  4. もっと漫画を読む

知見

  1. 九州(山口含む)の観光地を5つまわる
  2. 博物館に行く
  3. 動物園に行く
  4. 植物園に行く
  5. 音楽イベントに参加する
  6. 自分の過去fav(Twitter)を整理してまとめる
  7. 釣りをする
  8. 勉強会・セミナーに参加する
  9. 映画を10本見る
  10. 知らない人と話す

その他

  1. 後輩に結婚祝いを贈る
  2. アイコンを作る
  3. プランターを作る
  4. 車検出す
  5. 自転車の修理をする(サドル変える)
  6. 自転車にのる機会を増やす
  7. 海外に行く

電気自動車(BMW i3)のある生活を体験した

最近戸建て(建売)を買ったんですが庭に200Vの電源がついてきました。電気自動車用プラグを差し込むやつなんですが、残念ながら我が家の車はタダでもらったガソリン車の軽。まったく出番がないままに過ごしてきたわけです。

200V電源設備がついているので車の買い替えは電気自動車が第一候補になります。しかし電気自動車買ったらどういう感じなの?充電大変じゃない?とか色々気になるじゃないですか。その辺が電気自動車の普及を阻んでいると思うんですよ。んで調べたら電気自動車を一定期間貸してもらえるキャンペーンがあるんですね。

続きを読む

2017年も安定して使い続けているもの10選

年の瀬ですね。この時期は◯◯年購入してよかったものというブログ記事がたくさん投下されますが、流行り廃りのありそうなものよりも長く使えるものを紹介してほしいと思うのは私だけでしょうか。というわけで長く使っているものを棚卸ししました。

続きを読む

Google Maps の行動ログを抽出する

Google Mapsには行動ログを残すオプションがあります。正式名称はタイムラインで、これをオンにしておくと行動・滞留・滞在等の状態をよしなに判断して行動の履歴を残してくれます。

タイムラインをオンにする方法はこの辺を参考にしてください。で、このログはJSON形式でエクスポート出来ます。

タイムラインのエクスポート

Googleの各種サービスはtakeout.google.comからエクスポートできます。ブラウザで自分のアカウントにログインした状態で以下のURLにアクセスしてみてください。

https://takeout.google.com/settings/takeout

タイムラインの情報は比較的下の方にあります。「ロケーション履歴」の項目のみにチェックを入れて次に進みます。

f:id:kazutaka83:20171119235255p:plain

ファイル形式、サイズ等の選択画面が出てきますのでいい感じに設定します。「アーカイブを作成」を押すと準備画面に遷移し、終わればダウンロードが始まります。

f:id:kazutaka83:20171119235546p:plain

takeout-hogeのファイルを開くとJSON形式のログを見ることができるはずです。あとはこれを加工・編集するとGISデータとして使うことができますね。

f:id:kazutaka83:20171119235718p:plain

Pythonを使ってZIPファイルを解凍する

ZIPファイルの解凍作業は面倒くさいです。なのでPythonを使ってZIPファイルを解凍しましょう。動作環境はPython3.6以上推奨。標準ライブラリだけでやっていきます。

  1. 1つのZIPファイルを解凍

  2. フォルダ内のZIPファイルをまとめて解凍

  3. 階層構造が複雑なフォルダのZIPを解凍

1つのZIPファイルを解凍

os、zipfileを使います。最も基本的な処理なので、2・3の操作でもこれを使いまわしていきます。わからなければここに立ち返りましょう。

import os
import zipfile

with zipfile.ZipFile('sample.zip', 'r') as zf:
    for f in zf.namelist():
        if not os.path.basename(f):
            os.mkdir(f)
        else:
            with open(f, 'wb') as uzf:
                uzf.write(zf.read(f))

複数ファイルを圧縮したZIPの場合を考慮し、os.path.basenameを使って条件分岐をかけています。これが基本。

フォルダ内のZIPファイルをまとめて解凍

globを使ってzipファイルを探し、個々に解凍処理を行います。上でやった処理にforをかけて回す感じです。

import os
import zipfile
import glob

for i in glob.glob('*.zip'):
    with zipfile.ZipFile('i', 'r') as zf:
        for f in zf.namelist():
            if not os.path.basename(f):
                os.mkdir(f)
            else:
                with open(f, 'wb') as uzf:
                uzf.write(zf.read(f))

これで作業ディレクトリ上に解凍されたファイルが生成されます。

階層構造が複雑なフォルダのZIPを解凍

これは以下のような状況で使います。稀に良くあります。

f:id:kazutaka83:20170908203313p:plain

globを使ってzipファイルを探しに行きますが、今回は再帰的にディレクトリを深掘りしていくように指定します。

import os
import zipfile
import glob

for i in glob.glob('**\*.zip', recursive=True):
    with zipfile.ZipFile('i', 'r') as zf:
        for f in zf.namelist():
            if not os.path.basename(f):
                os.mkdir(f)
            else:
                with open(f, 'wb') as uzf:
                uzf.write(zf.read(f))

この処理だと作業ディレクトリに解凍ファイルが作成されます。各々のディレクトリ下に解凍ファイルを置きたい場合には、os.path.splitを使うと良いでしょう。

import os
import zipfile
import glob

for i in glob.glob('**\*.zip', recursive=True):
    with zipfile.ZipFile('i', 'r') as zf:
        for f in zf.namelist():
            d = os.path.split(i)[0] + '\\' + f
            if not os.path.basename(f):
                os.mkdir(d)
            else:
                with open(d, 'wb') as uzf:
                uzf.write(zf.read(f))

os.path.splitはなかなか便利なモジュールで、ファイルパスを食わせるとディレクトリ部分とファイル名に切り分けてくれます。

第一引数からディレクトリパスを持ってきて、そこに解凍後のファイル名を繋げています。

これで単純作業が減らせますね。

参考

Python で zip ファイルの解凍 - へたれプログラマな日々

Estimote社のBeaconについて調べた

Beaconを使った屋内測位、センサーデータ収集をやってみたいのでEstimote社から機器を取り寄せようかと思っています。現在EstimoteのBeaconは5種類あり、内屋内測位に使えそうなものが2種。他の3種はちょっと特殊な用途で使う用みたい。

ロケーションビーコン(Location Beacon)

定点設置型で位置情報を取得するビーコンには二種類あり、公式ページでは『Location UWB Beacon』と『Location Beacon』という名前になっています。

この2つの違いはAutoMappingかManualMappingかという点。Location UWB Beaconは専用のiPhoneアプリを使って建物の地図を生成できるようです。Location Beaconはその機能を持たず、自身で地図を生成する必要があるようで。

ともにバッテリーは5年もつとのことなので、一度設置をすると暫くは放置で大丈夫。非公式ではありますが電池交換も出来るみたいですね。


How To Change Estimote Beacon Battery

ステッカービーコン(Sticker Beacon)

上の2種は三角測量で端末の位置をとってくるのに対して、このステッカービーコンは貼ってあるモノの電波を受けて場所を特定します。ステッカーを貼った自転車が特定の場所に入ったときに信号を飛ばすような用途で使用できるため、常に位置を取れるわけではありません。

んで何を買うか

今回はLocation UWB Beaconを購入してみます。2014年時点では技適が無く、国内では使えない状態でしたが、どうやら最近のBeaconは技適とってるみたい。アプリを使った地図作成も気になるのでUWBの方を輸入して遊びます。

ちょっと却下。UWB Beaconで屋内地図作るには結構な数のBeaconを設置しないと駄目っぽい。自宅のCADデータ使って地図を作って、Location Beaconで動態分析するところから始めます。

来月は引っ越しを控えてるんで、できるだけ早く届いてほしいなあ。

Python(pandas)を使ってテーブル間の差分を取り出す

2018年7月20日追記:このやり方全然スマートではないので修正版を書きます。

同じ列(カラム)を持っているCSVファイルが複数あり、その差分を取りたいときの手法をメモっておきます。一年前の売上と比較したいとか、前年度の従業員リストと比較したい場合なんかに使えるかと。

続きを読む

スポンサード リンク