命名って難しい

変数、関数、クラスなどなど実装より命名に毎回悩むタイプの人間による技術についてのメモ。

Powershellで編集可能なJSONを読み込む関数を作りました!&Pester環境を更新

以下のようなことをしたい状況がありました。

  • JSONを読み込む
  • Object型の要素に新しい値を加える
  • 編集した内容でJSONを保存する

しかし、PowerShell標準のコマンド ConvertFrom-Json で取得したオブジェクトは配列を除き編集できません。それを編集できるようにして取得するスクリプトを書きました。

  • 前提環境
  • 標準搭載の ConvertFrom-Json について
    • どういう挙動か
    • 理想の挙動
  • 実現したこと
    • 編集できるJSONを返す ConvertFrom-Json 、 ConvertFrom-JsonEditable を作りました。
    • どのように実現しているか
    • ひっかかったこと
      • Unboxing/Unpacking(?)の罠
        • 要素1の配列を戻り値に渡したら配列の要素の型のオブジェクトが渡されてきた
        • 関数で受け渡した配列オブジェクトが再生成されていた
        • 対応のコツはカンマの1文字
    • ソースコード
    • テストコード
続きを読む

CSVを読み込んでSQL Serverの列のデータ型候補を生成するPowershellスクリプトを書いた!テストした!GitHubにアップした!

ハイテンションタイトルです。

自社の謎システムの出力や取引先提供のCSVで列の型が分からないものがあります。 今まではテキストで全部取り込んで、テストしながら少しつづテーブル定義を更新してインポートできるテーブルを作っていました。

現在いくつものCSVを取り込む案件があったため、スクリプトを作ってみました。

今回の新しい挑戦は以下です。

  • Powershellのクラスを実装をしてみた!
  • ユニットテストをしてみた!
  • 作ったものをGutHubで公開してみた!(Gitは業務で使っていないのですが、試してみました)
  • 開発環境
  • クラスを実装してみた!
  • ユニットテストをしてみた!
    • テストで分かったこと
      • using moduleとVSCodeでのテストのコツ
      • ヒアドキュメントの改行コードはファイルの文字コードに依存する。
      • Should Be で.Netの定数などを比較するときに正しく比較されないときの対処法
  • 作ったものをGutHubで公開してみた!
続きを読む

Windowsのpython開発で仮想環境(venv)・VSCode向けの設定・.gitignoreをセットアップしてすぐ開発できるようにするスクリプトを書いてみた

最近プライベートで勉強を兼ねてpythonで1つのツールを開発しています。

普段デスクトップで開発をしているのですが、外出先でも開発できるようにノートPCも使うようになりました。

新しい環境で開発を開始するとき、仮想環境と設定といろいろと面倒なことがあったので新しい環境下で利用できるスクリプトを書いてみました。

  • 前提とする環境
  • セットアップの内容
  • ソースコード
  • 気になるところ

前提とする環境

続きを読む

Python+SeleniumでWebDriverを自動管理してくれるクラスを作ってみたら同じような機能を持つパッケージがあったのでソースコードを供養します。

タイトルで終わり!

  • ソースコード
    • メイン
    • テストコード
  • 同じような機能を持つパッケージ、webdriver_manager
続きを読む

各ECモールの商品カテゴリ/商品分類を技術を使って一致させたい(結果確認)

前回の続きです。

前回 [https://notshown.hatenablog.jp/entry/2021/10/26/012326:e mbed:cite]

前々回 notshown.hatenablog.jp

前々回はECサイト上からのカテゴリデータの取得、前回はword2vecを利用したpython実装によるデータのマッチングです。

今回はマッチング結果のデータと思ったことをメモして終わります。 pastebinのデータ量の制限があったので、一部のみです。

  • 結論(というか思ったこと)
    • 商品カテゴリーの1:1での一致はほぼできない
    • トップ10を抽出し、人の目で選ばせればいいかも
  • 各カテゴリーのデータ
  • au Pay マーケット → yahoo!ショッピング
    • 完全一致
    • トップ1データ
  • yahoo!ショッピングau Pay マーケット
    • 完全一致
    • トップ1データ
続きを読む

各ECモールの商品カテゴリ/商品分類を技術を使って一致させたい(カテゴリーをマッチさせる)

前回の続きです。

notshown.hatenablog.jp

今回は pythonの環境と実装したスクリプトの挙動について簡単に説明します。

  • 環境設定
  • 実装
    • 流れ
    • ソースコード全体
    • 部分解説 Timer クラス
    • 部分解説 Word2VecComparer クラス
    • 部分解説 WordSeparatedCategory クラス
    • 部分解説 CompareResult クラス
    • 部分解説 関数 setup_logger
    • 部分解説 関数 conv_csv_to_ws_categories
    • 部分解説 関数 conv_results_to_dict
    • 部分解説 関数 main
続きを読む

各ECモールの商品カテゴリ/商品分類を技術を使って一致させたい(マスターデータをつくる)

ECの商品カテゴリは各ECによって粒度が違ったり表現が違ったり色々ですよね。

例えば商品を複数のECマーケットに出品したいなと思ったとき、商品カテゴリの設定は売れ行きにも影響するのでそんな雑にはできないかと思います。

【ここのECの〇〇というカテゴリは別のECの△△というカテゴリと同じ】と紐付けできたら便利だと思うんですよね。 そこで、技術でどうにかできないかなと調べてみました。

長くなるのでまずは今回はマスターデータを作るところ。

  • 商品カテゴリを探す
  • 商品カテゴリのマスターデータを作る
    • Yahoo!ショッピング
      • カテゴリー一覧ページ
      • カテゴリー2のページ
    • au Payマーケット
      • トップページ
      • カテゴリー2のページ
    • データの取得
      • 取得データ
        • au PAY マーケット
        • Yahoo! ショッピング
続きを読む