飴屋

開発日記/2023年の日記

2023/11/3

WordPressの予約投稿での一幕です。最近、WordPress導入サイトもいろんな構成をしてることが多くて、WP Cron絡みで予約投稿失敗してケースが増えてそうですね。wp-cron.phpが外から叩けないケースとかあって、今回もそれが関連した問題かなと思ったら・・・関係なかった・・・。

post_updated っていうアクションフックがあって、記事更新時に投稿ステータスの変化を確認できるので重宝していました。

future
予約投稿状態
draft
下書き状態
pending
承認待ち状態
private
非公開状態
trash
ゴミ箱の中
publish
公開状態
auto-draft
自動保存されたリビジョン
inherit
親の投稿に状態依存

↑投稿ステータス8種類もある!ステータスが「publish」になったときに合わせて実行したい処理とかチョコチョコあるので「post_updated」アクションにフックをかけて「publish以外」から「publish」に変化したときを狙って、その時だけ実行される処理を追加していました。が、予約投稿(future)に予約時間が訪れて、公開状態に切り替わるとき・・・「post_updated」アクション発生しないのか・・・。管理画面で記事を「投稿」するボタンを押したときのアクションフックと考えておくのがよさそうです。

では予約の時間が来た時のアクションフックは?となってググったのですがパッと出てきませんでした。そしたら、とりあえずChatGPTに聞くか、って最近なりましたね。Google先生からAI様へお尋ねする対象が変遷しています。AI様、たまに妄言を吐くので、Google先生で裏は取るようにしてますけど。この場合、「publish_future_post」アクションフックがよいようです。WP Cronで予約時間の到来を察知したとき、記事を公開(publish)して、その記事のIDを渡してくれるアクションみたいですね。

アクションフック、大量にあって把握が大変ですね。歴史的な経緯もあって、アクション名からだけではわからない実行時期とかあります。アクション名を逆引きするのもちょっと難易度高いのでAI様とは今後とも仲良くしていきたいです。

2023/7/4

Rust用のゲームエンジンにbevyというのをみつけて触っています。最近の更新でAndroidアプリの対応が進んだらしいので書き出してみようと思ったらハマりました。デスクトップアプリはすんなりいったんですが、またちょっと勝手が違うらしく・・・。

rustup target add aarch64-linux-android armv7-linux-androideabi

アプリの出力対象にAndroidのCPUを足しました。Cargo.tomlにも設定を追加します。bevyのサンプルを見ながら半分理解せず黙って真似しました。

build_targets = ["aarch64-linux-android", "armv7-linux-androideabi"]

そしてアプリ書き出しプログラムをインストールします。順調です。

cargo install cargo-apk

では早速、アプリを書き出してみましょう。

cargo apk run

すると環境変数ANDROID_HOMEが空だと怒られました。Android Studioを入れたときのSDKのパスをいれればいいか。すると次は環境変数ANDROID_NDK_ROOTが空で怒られました。Android NDKには手を出してなかったので、Android StudioのSDKマネージャーを通して最新版をダウンロードして、その場所を環境変数に突っ込みました。

これでビルドが進み始めました・・・が、なんかclangでライブラリをリンク中にシンボルが見つからないものが出てきたようです。

ld: error: undefined symbol: freeifaddrs
ld: error: undefined symbol: getifaddrs

しばしの間にらめっこしてもわかりませんでしたので、ググったのですが似た症状が見当たりません。詰んだのか・・・。そんな状況が数週間続き、たまに時間を見つけてはいろいろ試してはみるのでした。

cargo apk run --lib

そしてさっきコンパイルパラメータをいじったら、よくわかんないですがコンパイルが進みだしました。「--lib」って何の指定なのかは後で調べるとして、今は先に進むことに飢えているのです。しかし、環境変数JAVA_HOMEが空だとやはり怒られるのでした。これはAndroid StudioについてきたOpen JDKの場所でいいようです。パスはjreって書いてあるけど、それで十分なのか。これでやっとapkファイルが出来上がりました。長かった・・・。これから開発を進める方法とか、配布の方法とかいろいろ調べる必要がありそうですが、一旦満足しました。

2023/5/6

古い方のAPIを使ってたTwitter連携スクリプトが4/26に呟いてから沈黙していることに気が付いたので、新しいバージョンに換装しました。去年と同じく書き込みパーミッションのないアクセストークンから呟こうとして一回ハマりましたがとりあえず呟けたのでOKです。Search APIはFreeプランからでは叩けなくなったので、検索機能を落としました。画像貼り付け APIについてこれから調べていきます。


なるほど、media関連のAPIはまだ整備されてなくて引き続きAPI ver.1.1 を利用しろとのことか。ver.1.1で画像をアップロードしたら、IDが返ってくるので、それと一緒にツイートすればいいだけとのこと。バージョンをまたぐとシンプルに実装できないんですが、いつか新しいバージョンで統一される・・・かな?

2023/4/11

Googleさんからメールがきて「アプリのポリシーに不備があったよ。」って教えてもらいました。調べてみると「データ セーフティ」のポリシーで取得したデータを申告にない使われ方をしている嫌疑がかかった、ということのようです。私は現在公開中のアプリから一切情報を送信させてませんので、多分、Admobさんが広告配信用にやりとりしている通信のことを指摘されたのだと思います。サードパーティのライブラリが行う通信についても、ちゃんと事前に申告してデータの使われ方の透明性を高めようというGoogleさんのチェックが入ったというわけですね。Admobさんが実際のところどんな通信を行っているかは正確にはわかりませんが、必須記入項目をまとめてくれている方がいらっしゃったので、それを真似させてもらいました。そして、今回指摘のなかったアプリもいつか指摘が来るだろうと思ったので、まとめて更新しておきました。「データ セーフティ」の入力フォームの内容はCSVエクスポートできるので、2つ目以降の設定はコピーで済みました。(楽ちん、楽ちん)これでもし再審査が通らなかったら、また別の原因を考えないと。ちなみに「データ セーフティ」ポリシーの更新期限はメールが届いた日から14日間でした。

2023/2/11

また朝が来てメールをチェックすると申請中のプラグインの審査が終了して、無事登録されたようです。割り当てられたSVNのURLを教わったので、そこにファイルをcommitすると自動的にwordpress.org にプラグインができるそうです。trunkディレクトリは基本的に最新の状態にして、バージョン管理はtagsでやるってことらしいです。assetsディレクトリにスクリーンショットを移して、とりあえず公開にこぎつけました。あと紹介ページのヘッダ画像とアイコンをassetsに入れて見た目をデザインできるそうです。

あと「寄付をお待ちしております!」みたいなリンクはreadme.txtの「Donate link」欄が自動的に反映されるようでした。さっと作ったamazon(jp)の欲しいものリストを貼っておいたいいものの、日本語わかる人しか伝わらなそうですね。本当はpaypalのリンクとか貼ってみたかったんですが、なんか資金決済に関する法律のあれやこれやで寄付ボタンが作れないんですってね。日本はお金を還流させるの下手なんですかね?とりあえず、うちのネコちゃんの生活が潤ったらいいなとご飯と猫砂の寄付、お待ちしております。

2023/2/10

朝起きたらWordpressのプラグインの件のお返事が届いてました。早い!

審査が次のステップに移ったようでプログラムソースに関して具体的な修正ポイントを指摘してもらいました。「例えばXX行目の処理がよくないね」みたいな例示までつけてくれるのでとても分かりやすい、親切!

  • echoする変数はesc_**コマンドで無害化しよう
  • 外部ファイル読み込み時はwp_enqueue_**コマンド使おう
  • パスを書くときはplugins_urlとかplugin_dir_pathとか使おう

こんな感じで3つ指摘をもらいました。WordPressのコマンドっていろいろ用意されているのは知ってましたが、使わなくても動くものは作れちゃうじゃないですか。ただ、こういったコマンドも伊達にあるわけじゃなくて、いろんな実行環境でも同じように動作するように作りこまれているわけなんですね~。たくさんの人に公開するとなると考えることが莫大に増えるわけですが、それらの作業を吸収してくれるのか、偉い!

というわけで一通り直してまたレビューを受けたいと思います。直しながら関係ないところまで気になって直しちゃったりして、そこが原因で別の問題が発生してたら謝るしかないかな。

2023/2/9

Wordpressのプラグイン公開の進捗の話です。先日、審査請求をwordpress.orgにお願いして3日くらい経ったらお返事がきました。

重要なところだけ要約して翻訳すると以下の感じです。

公式サイトを見に行ったら機能してなかったよ。
できたら返信頂戴ね。

おっ、そうでしたか。プラグイン本体のファイル冒頭の「Plugin URI」に書いたURLがプラグインの公式サイトURLになり、配布物とは別にそこも審査の対象になっているようです。ここに「under construction」とだけ書いたページを用意しておいたのですが、この状態で後悔すると作者自身の信用にダメージがでるかもと老婆心でチェックしてくれているようです。あんまり自分の見え方とか考えたことなかったので、なるほど、信用大事だよね、って頷きながらreadme.txtの内容でとりあえずページを作り直しました。

ページ作ったので再審査頼みます!と返信したので、またお返事を待ちましょう。まだ実際のプラグインの中身の審査はされてないそうなので、また3日後くらいにお返事をいただけるのかなぁ?

2023/2/5

最近、あんまり外向けの活動をしてなかったので、なんかコミュニティに貢献するようなことも必要かなとちょっと思い立った昨今です。WordPressを使ったサイト制作のお仕事も多くやってたので、書き散らかしてきたコードを一度まとめてWordPress.orgで発表してみようとちょっと調べ物をしています。私はWordPressを長くWordpress(Pが小文字)と綴ってきてしまったので、そも贖罪の意識もあるのでした。ブログ制作CGIがMovableTypeみたいなCMSに取って代わられ、強力なプラグインを備えたWordPressが台頭してきて、脱WordPressの流れも生まれつつプラグインの恩恵を捨てられない人たちが強固にWordPressを現役足らしめている、という印象です。むしろ、WordPressを動かすインフラ側の方がグングン変わってますよね。AIが記事を書いて、画像も生成する新種のCMSがでてくるまではWordPressも安泰なのかな?

それでこういうプラグインのライセンスってどうするのがいいんだろ、ってしばらく立ち止まってました。開発をやっていますが、そんなに詳しくライセンスのことを知らないのでした。緩そうなMITライセンスなんか自分にピッタリかな、なんて思ってましたが、WordPressの公式サイトでは「GPLv2 or later」推しのようでした。推しならそれでいっか・・・。GPLってバージョンがあるじゃないですか。あれが私の理解を妨げてくるんですよね。バージョン違いの互換性とかどう把握していけばいいんでしょうね。それで世代的に「GPL汚染」っていうワードが独り歩きを続けていて、何かの派生物の混入がえらい事態を引き起こさないか、イメージだけでおびえてしまいます。一度ライセンスに関するまとまった情報を読んでおかないとかも。

2023/1/14

今年もよろしくです!という感じでそろそろ精力的に活動していきたいこの頃です。コロナのことはどう着地するのか政府から号令がかからないまま、民間がおのおの判断して徐々に終わらせていくのかなって予想しています。やっぱりお金の巡りが悪いという体感はあるので、手探りで活路を見出していきたい所存です。

最近、自分の中の課題が「数学」です。一応、高校数学で歯が立つのですが、たまにポッとわからないトピックにぶつかって、立ち止まることになります。

  • 数式が読めない
  • 代数的に解けない
  • コンピュータの計算精度がでない
  • 計算をプログラムのソースコードに落とし込めない

壁に感じるのはこんな感じなんですが、ググりづらいし、数学の本も参考に仕方がわかりにくいし、ひたすら時間をかけて攻略していくしか手がないです。誰か先人が既に同じことを解いているだろうになぁ、って思いながらうなるのでした。ここに時間をかけるの嫌だなって思うんですが、似たようなことをやってる人がみつからないので、自分でやるしかないんですよね。ただ、ずっと考え込んで答えの道筋が見えた時に、脳から興奮物質が止めどなく出てきてヤバいですね、数学。

開発日記