逆に細かく分割してファイル1つあたりを軽量にしたり、ファイルをminifyしてファイルのサイズを小さくしたり。asarに固めたElectronアプリでは効かない。本当にまったく効果なかった。効果がないので、余計な手間がビルド時に発生する分、マイナスまである。何度となく諦めきれずに試したが、そのたびにまったく効果がないと知ることとなった。私はきっとまた試すよ。コールバック・PromiseコールバックとPromiseは、コールバックの方が早い。世間の流れと逆方向でありますね。アプリの起動時には、ほんの僅かでも速度が欲しいのであります。同期で設定ファイルを読み込む方がかなり早い。早いが、もちろんデメリットあり。アプリの処理によっては、処理がブロックされて逆に遅くなるでしょう。同期での設定ファイル読み込みより更に早かったのですけど、これはセキュリティ的な問題があるでしょうな。同期であろうと非同期であろうと、ものすごく遅くなる。その描画中の範囲を外して設定ファイルを読み込むようにするとめちゃくちゃ早くなる。自分の環境では、同じ処理が実行タイミングの違いで、これくらい効いた。0.002秒Electronのバージョンを変更する少し効く。Electronのバージョンを3から4にする。何度も計測した結果、ちょっぴり早くなっていると思う。Electronのバージョンは、あまり選択可能な要素ではないですね。私はまだElectron4で安定動作させられなかったので、Electron3に戻しちゃいましたけど、いろいろ問題解決したら、もちろんElectronのバージョンを上げておきたい。Electronの5が出てる?気のせいでしょ。画面がちらちら更新されて、体感、アプリの起動が遅く感じる。一括でパッと表示した方が早く感じる。操作できるまでの時間変わらなくても。手間暇かけると、アプリの起動時間の体感は良くなる。javascriptいろいろgulp3にタスクを連続で実行するrun-sequenceというライブラリがありました。gulp.seriesには、run-sequenceにあった、発生したエラーを受け取るcallbackが用意されていませんでした。try-catch文を使っても、gulp.series内で発生したエラーを拾うことはできない。gulp4と書き換える際、run-sequenceをどのように書き換えるべきか。run-sequenceのコードrun-sequenceでは、こんな感じで発生したエラーを拾えていた。gulp.seriesのコードエラーを拾うコールバックがgulp.seriesに用意されていないので、すんなりgulp4に書き換えられない。エラー処理が抜けてしまう。'_package-debug'));gulp.seriesのコードを追ってみるgulpの各タスクの処理はtaskWrapperで包まれる。arguments);}gulp.seriesを作成時、createExtensionsが呼ばれる。},最終的にgulpでエラーを拾えるつまり、gulp.series内で発生したエラーは、次のようなコードで拾える。run-sequenceの処理を、なるべくそのままgulp4.seriesに置き換えれるようにするnpmモジュールhttps://www.npmjs.com/package/gulp-task-err-handlerちゃんとgulp4に合わせて書き換えろ?うん、そういう意見もあると思う。sample.このモジュールを使うと、このように置き換えられる。}));おわりおわりなのだ。動作しないと自分の中で評判だった、Electronの無限アラート防止機能"safeDialogs"の問題が修正。Electronバージョン5から動作するようになった。BrowserWindowのsafeDialogsオプションElectronのBrowserWindowに、"safeDialogs"というオプションがあります。このオプションは、例えば、アラートダイアログが無限に繰り返し表示されるような処理が見つかった時、そのループを停止してくれる機能です。})無限アラートを検知した時に、ループを停止するチェックボックスが表示されます。Macでは長らく動作していなかった。この機能、オプション導入直後から、MacのElectronでは長らく動作していませんでした。誰も試してなかったのかな。無限アラートがあっても、スルーされてました。XにWAVファイルを取り込んだ時に、こうなってしまう。空のオーディオロールが振られてしまうことが判明したのです。</TRACK_LIST></BWFXML>今度は、このように無駄なナンバリングサフィックスのついた、オーディオロールが振られてしまうようなのです。X上で、手動でオーディオロールを設定した時と同じように、dummy-trackという名前でロールを1つ設定して欲しいのですね。手動でなら設定できる。iXMLチャンクでWAVファイルのオーディオロールの情報を設定しようとした時、うまく設定できるiXMLのデータ構造がどうにも分からない。Xには、オーディオファイルを読み込んだ時に、オーディオロールを自動的に設定する機能があります。その仕様の詳細がよくわからなかった。このたび、試行錯誤の末、なんとか動作する仕様を特定したので、まとめておきます。次のようなChunkの構造を、wavファイルの最後に突っ込む。Chunkを追加する時は、そちらのサイズも増やさないとダメです。Xで動作する、最小のiXMLメタデータの定義は次の通りです。nameと入っている場所)で、自動割り当てしたいオーディオロール名を指定します。("&"、"<"、">"を値に使う場合はエスケープが必要。確認した限りでは、ファイルの拡張子は.wavでないと動作しない。別の拡張子を当てたかった(-_-;).bwfとか。subroleはiXMLチャンクで指定できますが、親のオーディオロールは指定できない(断言)。デフォルトでは、ダイアログ(dialogue)の子ロールに割り当てられてしまう。環境設定でデフォルトで割り当てるロールを変更する、と良い。一度、取り込んでから、正しいロールに統合するのでも良いとは思います。一時でも、ダイアログ(dialogue)に割り当てられちゃうと面倒くさい使いづらいその他、やったことまず、npmモジュールを作ってみたnpmモジュールを作った。X用の、iXMLチャンクをwavファイルに追加できる。作ったnpmモジュールを利用して、wavファイルを変換するAutoMatorのアクションと、フォルダに入れられたwavファイルを変換処理するフォルダアクションを作った。https://github.com/taku-o/fcpx-audio-role-workflowこれで、フォルダに音声ファイルを突っ込むだけで、ファイル名のパターンに従って、オーディオロールが自動設定されるようになったのである。AquesTalk呼び出し機能を、ライブラリに切り出した。Macで、Electronで、AquesTalkな読み上げアプリを作るなら役に立つでしょう。このaquestalk-macライブラリを使うにあたって大変なのは、ライブラリの使い方より、導入までだと思うので、この記事では、その話をする。ライブラリそのものではなく、このサンプルアプリを動かすまでの手順が、このライブラリで一番価値があるものです。Pythonのバージョンを確認するMacのデフォルトのsystemバージョンが望ましい。installで失敗することが多い。electron-rebuildでnative系のライブラリを作り直すelectron-rebuildしないと動かない。サンプルアプリを動かすこれでElectronのサンプルアプリが起動すると思います。サンプルアプリでは入力した文字列を、AquesTalkを使って音声として再生したり、wavファイルとして保存したりできます。動画の音声作成ソフトのタグには"テキスピ"使おうぜ、って話が出ている。Actionsでいろいろ困ったところと対応方法。rejectされる問題。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。