Labo288

プログラミングのこと、GISのこと、パソコンのこと、趣味のこと

Windows10でストア配布じゃないPythonのパスを通す

TL;DR

以下の2行を、デフォルトで定義されている~~Microsoft\WindowsAppsよりも上位に定義しておきましょう

C:\Users\<username>\AppData\Local\Programs\Python\Python39
C:\Users\<username>\AppData\Local\Programs\Python\Python39\Scripts

Windows10のPython

当然初期状態のWindowsにはPythonは入っていませんが、なぜかコマンドのパスが通っており、cmd.exepythonと打つと、Microsoftストアが開きダウンロードを促されます。公式のPythonをインストールしていても同じ挙動になります。めんどくさい仕様ですが文句を言ってても仕方ないので迂回します(ちゃんとパスを通します)。

別にストア経由でPython入れても良いんですが、普通に配布されているものをストア経由で持ってくる必要もないので、公式からインストールしたいですね。

原因と対処は本記事冒頭のとおりで、デフォルトで通されているパスにWindowsAppsなるものがあるんですが、ここでPythonコマンドを認識しているのでしょう(やめてほしいけど)。この定義自体消しても良いんですが、ほかに不都合あったらそれはそれで面倒なので、これよりも上位に公式からインストールしたPythonのパスを追加します。

f:id:kiguchi999:20210829172901p:plain
こんなかんじ

Python39Python本体のパスを通すため、Scriptsはpipのためです。

JavaScript(Node.js)とWASMの処理速度比較

はじめに

WASMとはWebAssemblyのこと。最近のブラウザで実行可能なバイナリデータです。 そもそもJavascript(Node.js)は軽量言語にしては速いです。なので通常の用途において、WebAssemblyに置き換えるケースというのはあまり多くないでしょうが、単純な計算を繰り返し実行する必要があり、かつその速度を改善したい場合には、有効な手段と言えるでしょう。

今回はJavaScript(Node.js)とWASMで同じ関数を実行し処理速度を比較してみます。 ブラウザでも使えますが、速度比較の環境を作るのがめんどくさかったのでNode.jsと比較します(たぶんNode.jsの方がブラウザより速いでしょうから、WASM>Node.jsならWASM>ブラウザでしょう)。

WASMのつくりかた

wasm-pack + Rustで作ります(targetはnodejs)

github.com

実行する関数

フィボナッチ関数の第x項を求める関数です。メモ化などしていない素朴な実装。 第30項までを単純なループで実行し、その所要時間を比較します。

// Rust
pub fn fibo(x: u32) -> u32 {
    if x < 3 {
        return 1;
    }
    fibo(x - 1) + fibo(x - 2)
}
//JavaScript
const fiboJs = (idx) => {
    if (idx < 3) return 1
    return fiboJs(idx - 1) + fiboJs(idx - 2)
}

結果

# WASM
finish wasm 8.863149046897888
finish wasm, including init 13.06051504611969
# JavaScript
finish js 18.82902693748474

結論

  • 単純な計算速度の比較だけならWASMが2倍以上速い
  • WASMの初期化で多少のオーバーヘッドが発生する(それでも今回の処理ではWASMの方が速い)

おわりに

  • 関数の実行回数が増えれば増えるほどWASMが有利(WASMの初期化のロスの影響が小さくなるので)

2020年度の振り返り(エンジニア1年目)

はじめに

公務員をやめて2020年4月にエンジニアになってからちょうど1年経ったので振り返りつつ技術の棚卸しでも。個人開発と業務ごちゃまぜです(業務系は当然守秘義務を厳守)。

1年間やったこと

つくったもの

github.com

github.com

github.com

ほか多数

github.com

ほか多数

  • npmモジュール

github.com

github.com

  • Webアプリケーション

    業務の6割くらいはこれ
    Vue.js + Mapbox GL JSの組み合わせにかなり知識と自信がついた

  • その他

search.mierune.co.jp

こちらのジオコーディング部分を開発

業務で触った言語たち

  • Python: たくさん書いた
  • JavaScript/TypeScript(Node.js) ハゲるほどたくさん書いた
  • Rust: ほぼ趣味

ライブラリ・フレームワーク

その他身についたこと

  • AWSの基本
  • GCPの基本
  • VMでデプロイするとか

アウトプット

人気あったやつで選出

PyQtのsignalとconnectとlambda式について - Qiita
Pythonの数値計算をRustに置き換えて速度比較してみた - Qiita
地理院タイルとdeck.glで3D地図をつくろう - Qiita
Vue3.0 + TypeScript + Mapbox GL JSの環境構築 - Qiita
3D地図ライブラリ「harp.gl」でベクタータイルを描画する - Qiita
Vue+Vue router+AxiosによるAPIエラーハンドリングとページ遷移の実装パターン - Qiita
ラスタータイルのつくりかた(2021年版) - Qiita

登壇

www.slideshare.net

www.slideshare.net

www.youtube.com

感想

全てを書けてる訳じゃないですが、見返すといろんなことやったなぁと思いました。VueとMapbox GL JSでフロント開発しながらベクタータイル作りまくったり、Pythonでクソデカラスターをたくさん処理したり、LTとか登壇とかたくさんしたり、濃かったですね。ただいかんせん、物理的な出会いはほぼなく、なんなら1年でたぶん30日くらいしか出社してません。在宅率も高く、来年度の課題は健康維持でしょう。そんな感じで脳への刺激は足りない感じでしたが、楽しい年でした。

来年度はもっと良い年度になるよね、ハム太郎