Takumi Akashiro ひとり Advent Calendar 2020 総括


この記事は[Takumi Akashiro ひとり Advent Calendar 2020](https://qiita.com/advent-calendar/2020/takumi_akashiro "ひとり Advent Calendar 2020")の25日目の記事です。

メリークリスマス！おかげさまでどうにか25日間完走することができました！

## 発端

11月24日、タイムラインに並んだAdvent Calendarの参加者募集を見て、もうそんなの季節かと危機感を覚えた。

去年の暮れあたりから体調を崩して以来、11月ごろまで碌に動けず、
今年一年を振り返ると、ほぼ1年棒に振ったかたちだったからだ。職場の皆様にはいろいろ迷惑をかけた。

せめて12月ぐらいは何かやらなきゃな、と思い立って始めたAdvent Calendar。

開始当初の目的は3つあって

  * 勉強会向けの資料作成の練習
  * 特定ジャンルのAdvent Calendarでは触れられない内容の記事を書く
  * 普段なんとなく使ってる技術を人に紹介できるレベルにする

やっているうちに反応もあり、最終的には

  * 自分がTAになりたてのころに知りたかったこと

も意識しながら書いていました。そんなAdvent Calendarを振り返っていきます。

## 振り返り

### (1日目): PySide2でWebブラウザをウィジェットとして使う /<br>(2日目): QtWebEngineのWebページからホスト側の処理を呼び出す

いきなりDCCツールじゃなくてPySide2。

書きたい内容を2日に分割したけど、結果1日目の内容が薄くなってしまった。
だからといって統合してしまうとQtWebEngineを触ったことのない人には分かり辛いので、悪くはなかったのかな。

個人的にはWeb周りってエコシステムが充実してる印象なので、
もう少しDCCツールにも載せてもいいんじゃないかなって思ってたので結構有用な記事だと思っていた。

あんまり2日目の反応が良くなかったのは意外だった。
まあ、そんなもんだよね。

### (3日目): PySide2で作成したウィンドウを半透過させる /<br>(4日目): PySide2で他のアプリにオーバーレイするアプリケーションを作る (1)<br>(5日目): PySide2で他のアプリにオーバーレイするアプリケーションを作る (2)

やりたかったことをやっただけシリーズ第1段。2段目は無事没った。
ゲームの上にオーバーレイ表示することが目的だったけど、様々な(大人の)事情で断念。

### (6日目): 最強のオペレーションレコーダー「ScreenToGif」

1日目～3日目の記事を書くにあたって、操作手順の撮影に手間取ってたところに降臨した神ツール。
スクショ感覚でGif動画を撮れるのは超便利。みんなもつかおう！！

正直24日間の記事の中では一番有用だと思ってる。もう心に決めた録画ソフトがあるなら別ですけどね。
タイトルが悪かったか……？

### (7日目): ジャンクションについて

windowsの標準機能「ジャンクション」について紹介した記事。
特定のフォルダの一部分だけ別のドライブに移すとか、便利だと思ったのだが面白いぐらいに何の反応もない。

もしかして皆、ジャンクションについて当然のように知っていて、知らないのは俺だけだったのか？
……まあタイトルが悪くて期待してクリックしないってのはあるとは思う。

後述するExtendScript入門記事の着地点が見えなくて、土日をつぶしたあとの苦し紛れで書いた記事でもある。
実はここらへんまでは3日程度のストックがあったが、完全につぶれた。

この日以降記事はすべて当日に書いてる。

### (8日目): Maya 保存できないノードを作る

保存しないノードとして設定する手段を紹介した記事。

去年から下書きにタイトルだけ残ってた記事を書きあげた。
曲芸シリーズ第1弾。どこで使うんだろうねコレ。

### (9日目): Slack 新機能 socket modeを(妄想で)使う

Slack AppのSocket Mode追加予告で喜び勇んで書いた記事。
Socket ModeはEvent APIをエンドポイント公開なしで実行できる仕組み……らしい。
旧式でDeprecatedされてるRTM APIを廃止予告に恐怖しながら使ってる身としては本当にありがたい。

今回のAdvent Calendarで一番微妙な記事は？と言われたら自分はこれを上げる。
一番お気に入りは？って聞かれてもこれを上げる。

それぐらいSocket Modeは喜ばしい。
早くSocket Modeを試したいっすね。

### (10日目): PythonからCOMオブジェクトを扱う / HoudiniからPhotoshopをちょっと操作する <br>(11日目): Substance DesignerからPhotoshopにテクスチャを送る

COMオブジェクト利用シリーズ。
ここら辺は結構簡単に扱えるのでツール組み込みやすくて、旨味があると思う。
Substance DesignerからPhotoshopのレイヤーとして渡すのは便利だと思ってたけど、ほぼ反応が無いのは悲しいですね。

もうちょっとCOMオブジェクトに関しては調べたいところ。

### (12日目): PySide2 ファイルの更新を検知する

PySide2のファイル更新検知の記事。タイトルそのまんまだな。
記事内容もシンプルで分かりやすい。
結構ウケが良かった。

他の日もこれぐらいの文量にできればよかったなあって思う。

頑張ればQt(PySide2)のネタだけで25日埋められそうだな……と思ったけどチャレンジにならないので止めておいた。

### (13日目): Pythonでよくわからないオブジェクトに会った時にはdir関数を使おう

[虚無の暗黒](https://diehardtales.com/n/nb16fc6d57e58)に捕らわれかけていたときに書いた記事。

面白いサービスのリリース記事や中身のない挑発的なポエムを書く才能は無いので、唯一伸びを期待できる入門記事を書いたが、
このタイトルにかかわらずPV数も伸びなかったので、フォロワーを増やすなどの下準備をしてない自分にはLGTMを延びないと判断できた。

まあLGTMとかどうでもいいよねと諦めがついたのもこの頃。

### (14日目): Adobe製品の自動化やツール制作を考えている方へおくる ExtendScript入門

ExtendScriptの概要とそれを解説する各種ドキュメント・リファレンスの傾向について書いた記事
Mayaのドキュメントも経験の内に知りたい情報をすぐに引き出せるようになるので傾向を知るっていうのは大事よね……って気持ちで書いた記事。

### (15日目): .pyファイルをエクスプローラーのプレビューに表示させる

あとで自作のPreviewHandlerを作る記事の導入になるはずだったが、PreviewHandler自体が完成しなさそうだったので、
その部分だけ取り外したら何の面白みもない記事になってしまった。反省している。いつかリベンジしたいですね。

### (16日目): Pythonのオブジェクトを一時的に保存し、別のPythonで再利用する

あんまり使うことのないpickleについて書いた記事。
なにか有効に使いたいけど、あまり使うタイミングが見つからない。

あ、最近mayapy.exeに渡す動的生成したScriptファイル内でキーワード引数の再現で使ったわ。

### (17日目): reload()を使ってもloggingのloggerオブジェクトにHanlderを多重登録させない

エラーハンドリングについて書いた記事。

あまりloggingを使ってるコードを読んだ経験がないので、未だに実戦でのいい使い方が分からない。
あんまり思うところはない。個人的にはリリースするコードにPrintデバッグ入れたままにするとかありえないと思ってるので、
loggingを使う瞬間自体がログを提示しないとユーザーを納得させられないときしかなく、経験値が全くたまらない。

### (18日目): Python 正規表現を利用して任意の文字列群を抽出する / 名前付きグループを利用する

自分がTA始めたてのときに知りたかったシリーズ第一弾。
正規表現の名前付きグループについて書いた記事。タイトル通りの説明になる記事は優秀。

### (19日目): たまに使うPythonの便利な組み込み関数

自分がTA始めたてのときに知りたかったシリーズ第二弾。
組み込みの関数でできることは意外と多いですよね。

皆も読もう！公式ドキュメント！

### (22日目): OpenMaya.MEventMessageとScriptJobの実行タイミングは違う

scriptJobとMEventMessageの発火タイミングについて書いた記事。
割とMayaっぽい記事になったので、これこそMaya AdventCalendarで出すべきだったと思う

### (23日目): rpycモジュールを使って外部のPythonインタプリタからMayaを操作する

[Houdini Python Script を別のPythonインタプリタから実行する](https://qiita.com/takumi_akashiro/items/7d02f648307f8d80bd44)のMaya版。
可能なことは分かったがまだ実用的ではないな……って印象。


### (24日目): cProfileモジュールでPythonスクリプトのボトルネックを調べる

本当に22時までネタがなくって、仕方なく書いた記事。
とはいえ内容は今回の記事の中で一番使ってるまであるので、自作ツールがなんか遅いなあ……って人にはオススメ。

二番目に苦し紛れで書いた記事。一番はこの記事そのもの。

### (Maya AdventCalendar 17日目):<br>Maya scriptノードに対抗する闇の魔術 を書きたかった

Mayaのscriptノードをスクリプトの発動前に殺すという記事。

飛び入りで書いた記事。確か2時間前ぐらいに書き始めて、1時間で調査、30分ぐらいで書き上げてあ。
もともとscriptノードのトラブルの話を聞いたときに構想としてはあったので、書くのは簡単だった

だがMaya Advent Calendarに数日後にMSceneMessageの話をすると書いてあったので、
内容被りを勝手に気にして解決法をマスクするという~~(Vジャンの攻略本みたいな)~~ユーザーをなめ腐った記事に修正してしまった。

あとで内容が被ってなかったことを確認したのち、マスクした内容を再度公開した。
現在はscriptノード絶対殺すマンは無事完成している。

## 没になった記事ネタ

* Hook ネタ
    * Hook自体は実現したが、参考にした記事などは煙に巻いた書き方をしていることから、<br>あまり分かりやすく書いちゃいけない奴なんだな……と途中で思ったため自粛。
* AfterEffectsのffx(アニメーションプリセット)を複数レイヤーに適用するエクステンション
    * 既存機能で同じ事ができた
* PythonでEXE化する手段の比較
* Pythonで行うプロセス間通信の比較
    * [pythonでのプロセス間通信の速度比較実験 - クーの自由研究](https://np2lkoo.hatenablog.com/entry/2020/11/07/221119)さんより、いい記事を書けるビジョンがなかった。
* WebGLネタ
* Explorer拡張ネタ
* PEフォーマットについて
* なぜEXEは動かないのか
* すべすべオイル(自作アプリケーション)のリリース


## 最後に

記事を書き始めて最初に思ったのは、日々ふわっと機能を使ってるため、
知らないオプションとか代替手段とかがあって、検証時間がかかるってことでしたね。

基本的には1日半で調査・検証、2時間ぐらいで記事作成、一晩寝かせて確認して、
やっと中身のある記事が書けるなって感じです。

そういう視点で言うと妥協の塊の全く満足できないAdvent Calendarでしたが、
皆様の応援もあってどうにか25日間完走することができました。
本当に皆さまお付き合いいただきありがとうございました！

少し早いですが、では、よいお年を！

~~やっとこれで今まで積んでいた原神の1.1ストーリーが楽しめる！~~