これは、エラー・ロギング Advent Calendar 2020 - Adventar25日目のブログです。
最終日はTkSugarに続き、わたしが公開しているモジュール、LogReporterについてお話ししようかと思います。
続きを読むこれは、エラー・ロギング Advent Calendar 2020 - Adventar25日目のブログです。
最終日はTkSugarに続き、わたしが公開しているモジュール、LogReporterについてお話ししようかと思います。
続きを読むこのブログはエラー・ロギング Advent Calendar 2020 - Adventar18日目のブログです。
今回はプログラミングにおけるロギング処理について書いてみようと思います。
ロギングとは、プログラムの実行中にログを出力する処理。
1ファイルで完結する程度の簡単なプログラムならともかく、中規模のプログラムであれば、障害時の原因追跡のためにも、ログの出力は盛り込んでおきたい。
プログラムを組む段階では問題ないと思っていても、いざ開発を進めていくと、ログを出力していなかったせいで問題の原因がどこにあるか分からない なんてことは割とよくあることなのではないかと思います。
このためにも、プログラム作成に当たって、必要に応じてログを出力する というのは重要です。
続きを読むこのブログは、はんなりPython Advent Calendar 2020 - Qiita15日目の記事です。
TkSugarというのは、わたしがつくったモジュールで、YAML形式のファイルを読み込むと、それに準じたTkのウィンドウを生成する というモジュールです。
コントリビューションいただけると非常に助かります。
昨今のOSSの流行りに則り(?)コミットログやコメントは全文英語でやっています(Issueはさすがに無理なので英語)*1。
サンプルはリポジトリのsamplesフォルダに格納されています。tkinterを直接いじるのは結構コードが長くなり、なかなか骨が折れるので、一つの解決策として一つどうでしょうか。
はんなりPython方面では、10月のLT会でお話ししました。動画はSpeakerDeckの詳細ページから。
*1:Visual Studio CodeのComment Translateという拡張を使うとコメントは日本語で読むこともできるので、英語でもそれほどには困りません。多少は英語を読む機会が増えるため、なんとなく文意は拾えるようになりますし
このブログは、【みんなのITもくもく会】自己紹介 Advent Calendar 2020 - Adventar8日目の記事です。
実はやってたstand.fm。わたしは基本的に、stand.fmはPCで録音して配信しています。
stand.fmはスマートフォンでしか使えないアプリなのですが、外部音源取り込み機能があるので、そこからOneDriveに保存した音源を読み込み、貼り付けて使っています。
OneDriveアプリをあらかじめ設定しておけば、とくに面倒なことなく音源を取り込むことができるので、不便なくPCからの取り込みが可能です*1。
さて。そんなstand.fmですが、自分のフォロワーに毎回カバー画像にタイトルを埋め込んでいる人がおり、ちょっとやってみたいなーと思っていました。
その方は仕事でAdobe製品を使っているとのことで、毎回画像は手作りとのことだったのですが、そこはわたしです。ただ作るだけじゃつまらない。プログラミングで作らなくちゃ。
ということで作ったのが今回のstand.fm画像作成ツールです。
なお、ソースコードはGithubにて公開しております。必要だったらテンプレートやフォントを変えて各自お好きな画像を作ってください。
とりあえず最近使ってるのでPythonで。画像を作るならPIL(Python Image Library)だろと思いましたが、文章のワードラップとかフォントの調整とかをやろうとするとけっこう面倒。
なにかいいものがないかと探してみると、あるじゃないですか、HTMLを画像として取得できるライブラリが。
これは以前使ったPDFKitの兄弟モジュールみたいなもので、HTMLを画像に変換することができるというモジュール。
使い方はPDFKitとあまり変わらないため、PDFKitで悪戦苦闘した自分なら簡単です。
でも、ImgKitはPDFKitと同じく、WebkitエンジンでHTMLをレンダリングします。
これが結構くせ者で、Chromeなどとはかなり違った*2レンダリングを行います。
いちおうWindows用のWebkitブラウザもあるにはあるのですが*3、手軽に作るのにいちいちWebkit用に調整するのは面倒くさい。
どうにか良い方法はないものか…。
そこでもう一つ見つけたのが、Seleniumのスクリーンショット機能を使うというもの。
ヘッドレスブラウザとしてChromeを立ち上げ、画面を撮影すれば、Chromeとまったく同じ見た目で画像データを作成することができます*4。これは非常によい。
ということで作ったのが今回のツールです。
今回やったのは非常に簡単です。
コマンドラインオプションで日付やテーマを受け取り(省略した場合は今日の日付や、あらかじめ曜日で定めたテーマを使用*5 )、もしmp3がすでにあればそのID3タグに設定されているタイトルを取得*6してそれを使用します。
エクスプローラからもその辺の設定がある程度調整できるよう、無駄にGUIも作りました(GUIモジュールの動作確認という側面もあるのですが)。オプション--gui
をつけると、簡単なGUI画面が立ち上がります*7。
ここでOKを押すと、OneDrive上のフォルダにout.pngという名前で画像が作られます。
これをそのままスマートフォンから参照すれば、それっぽいカバー画像のついた投稿ができるという仕組み。
なお、ID3タグに書き込んだタイトルやコメントは、PushBulletを使ってスマートフォンに渡します。
今までは同種のソフトとしてJoinを使ってたんですが、なかなか設定が独特で、機種変更(や端末初期化)の時の再設定が面倒・・・。
いちおう画像のサイズを調整して、OGPでも枠線が表示されるようにしています。ただの背景つきピンクでは物寂しいので。
このへんの設定も、Less(CSS)ファイルをいじれば結構よろしくやってくれるのがHTMLデザインのいいところですね。
HTML/CSSがある程度以上できる人が画像やPDFを作るときは、下手にLaTeXや画像処理を学ぶより、HTML書いた方がいい というのは個人的な思いでしたが、これをPythonのモジュールからも実現できるということがわかりました。
こちらについては今後も、定型的な画像を作成する機会などに使えるのではないかと思います(まあ今回はローカル環境で動作するだけだったのでSeleniumが使えましたが、たいていの場合はImgKitかな・・・)。
TkSugarの動作テストもできたしとりあえずわたしはそれなりに満足です。
ただ、タイトルのワードラップ回りなどいろいろできそうなところはあるので、もうちょっと時間を見つけていじってみたいですね。
*1:本当はstand.fm自体がPCからの直接アップロードに対応してくれれば一番楽なのですが
*2:とくにフォント方面で
*4:title.py 75行目 あたり
*5:title.py 26行目あたり
*6:title.py 36行目あたり
*7:title.py 43行目あたり
このブログは、Visual Studio Code Advent Calendar 2020 - Qiita4日目の記事です。
さて、Visual Studioにあって、最近(といっても結構前だったと思いますが)から実装されている、リージョンコメントって使ってますか?#regionと書いた行から次に#endregion と書いた領域までを折りたたみ可能にしてくれる機能です。
わたしはテストコードを幾つかまとめて分類するときには、ちょくちょく使ってます。
個人的な基準が定まってないのでアレですが、例えば上記写真のように正常系・準正常系・異常系の三つで分けたり。
テスト対象のメソッドごとに分けたりすると、どうしても長くなりがちなテストコードをまとめるのには便利です。
ただし、以下で挙げられているように、どんなコードブロックでもまとめられてしまうため、取り扱いには注意が必要。
とはいえVisual Studioと違ってデフォルトでコードブロックが展開されているので、Visual Studioよりは気が楽かも知れません。
基本的にはどの言語でも使えるようです(言語によっては「// #region」になったり「」になったりするようです)。
ただ試してみたところ、Markdown文章やJSONファイル内では使えない(使ってどうするんだ)みたいなので、言語によっては使えないなどあるかもしれません
このブログは、【みんなのITもくもく会】自己紹介 Advent Calendar 2020 - Adventar1日目の記事です。
こちらのカレンダーでは自己紹介と言うことで、何からはじめればいいか分かりませんが、とりあえずカレンダーのタイトルのとおり自己紹介ということで記事を書いてみようと思います。
さて、最近わたしは、最近、月・木Discordで開催しているもくもく朝会に参加しています。朝に弱いので参加できないこともおおいのですが、出来る日はなるべく。
原則各自やるべきことをやるもくもく会で、8:00~8:15, 9:00~9:15, 9:45~10:00の休憩時間以外はそれぞれ黙々と作業をする会となっています。
ただ、Discordなのでもちろんテキストでのチャットはできますし、最近はYouTubeの音声をそのまま流す(ときどき動作が怪しい?)GroovyというBOTがいたり、読み上げ用のShovel BlueというBOTがいたりと、オンラインならではの特徴あるもくもく会になっています。
オンラインもくもく会のいいところは、なによりPCがメインに使っているデスクトップPCであることかなと思います。
持ち歩き用のノートPCではないからいちいち環境構築をする必要がないし、ノートに比べれば断然ハイスペックなので無茶が効く。
そして終了後も同じ環境でそのまま作業ができる。やり残した作業を続けるときにいちいち作業が中断されない。
作業環境だからこそすぐに分からないときにスクリーンショットをチャットに貼ったり、画面共有できるのもいいところですね。
このもくもく会は基本的にマイクオンリーです。カメラの映像を使うことはありません(月一の週末会など、使うときはありますが)。
マイクオンリーのなにがいいかというと、PCのスペックをあまり消費しないことです。
そのため、多少重い作業を行ったり、ちょっとスペックで劣るサブマシンを使ったりしても、問題なく並行で作業ができる ということです。
Discord自体ゲーム向けのチャットサービスだからというのもあってか、ときどき他のチャットツールにはない独特の挙動をしたりします。
他のアプリがスピーカーデバイスを使ってるとき、スピーカーの取得に失敗して音が鳴らなかったり、勝手に別のデバイスを使ったり。
とくにスマートフォン版のDiscordだとときどき挙動が怪しいみたい(今は解消されたのでしょうか?)で、利用者によってかなり好みが分かれるのがこのDiscord*1。Slackと違って新しいコミュニティに関わる度に新しいアカウントを作る必要がないため、楽にはじめられるのもありますしね。
最近個人事業主の人たちとで集まるコミュニティにも関わっており、ここでもIRUという別の音声チャットを使っています。
Zoomなどでビデオまで出すとなると、どうしても身支度に時間を割かなければいけないし、場合によってはグリーンバックを用意しなければならず、面倒くさかったりしますが、音声だとそういうのも気にしなくていいし、結構いいのではないか と思っています。バックグラウンドに隠していていても普通に使えますしね。
ZoomやAirmeetなどでしっかり話すのもいいですが、それはそれでいろいろな意味で「重い」。普段から関わるような場所は音声だけのほうが気軽には入れるし、作業しながらできるし、むしろ楽じゃないのかな と、最近思っています。
また、最近はすっかりご無沙汰になってしまった顔をつきあわせてのミーティングも。なんだかんだ持っていかなければいけないものがあったり、なにより移動しなくちゃいけなかったり。たしかにオンラインでの会話に比べればやりとりできる情報が多いかもしれないけど、それを補ってあまりあるくらいデメリットが多かったな と。
音声だけのコミュニケーションは、実は結構いろんなところで使えるし、関わる人のリソースも思ったより使わない。インターネット上の新しいコミュニケーションのかたちとして、結構使える範囲が広いのでは?と思っています。
だからもっとこういう場は増えて欲しい。そうしたら気軽に雑談できる場ももっと増えるのではないか? などと思ったりしました。
*1:わたし自身は嫌いではないですが。扱いにさえ気をつければ使えるので
さてさっそく。
わたしは最近、PDFリーダーにFoxit Readerというものを使っています。
Adobe ReaderにはないPDF上に矢印や自由なパスなど様々な図形を簡単に書き込む機能があり、結構重宝しています(書籍の編集さんにオススメされて、以来便利で使ってます)*1。
で、このFoxit PDFで書き込んだPDFですが、そのままだとAdobe Readerに情報が反映されないことがあります。具体的にはチェックマークなど一部のテキストが表示されないみたい。
もし、確実にそれらの情報を反映させたいときは、面倒ですがFoxit Readerで再度Microsoft Print to PDFで印刷する必要があります。出力されたPDFを見ると編集された内容が完全に埋め込まれている。Paint.NETなどでレイヤを結合した感じ。
基本的にはFoxit Readerで書き込みを入れたPDFを送るときは、書籍の校正など注釈を読んで欲しいときになりますので用途は限られますが、そうでないものを出したいときには使えそうなのでおためしあれ。
*1:本来PDFにはそういう仕様もあるし、Adobe Readerにもそういう機能はあるのですが、結構使いづらいんですよね…