Month: August 2018

Swift:NSImageをアイコン名で処理

Assets.xcassetsに入れたイメージをそのアイコン名で処理する方法についてのメモです。

Image20180809.012

やっていることは初期処理で、次の2点。

  1. helpE0〜helpEn、helpJ0〜helpJnの登録済みのイメージの名前で配列を作ります。
  2. 作成したイメージ名配列に従い、イメージの配列を作成します。

Screenshot 2018-08-20 10.43.08

Swift:Help実装

全部のmacOSアプリにHelpを実装しました。

方式はNSSplitViewを使い、左側にwebページ(PagesのUser’s Guide)、右側にscreenshotを用意しこれをdefaultとしました。

出来はそう悪くありません。Pagesをviewerとする方法も悪くありません。Acrobatが古いせいか、PDFの品質がイマイチだったことを思うと、Pagesを使う案は捨てたものではありません。どの道、macOSだけに有効なので問題なしと感がています。

ひとつだけ気になり不満を感じるのは、NSSplitViewの制御ができなかったことです。境界線deviderを動かしたとき、そのイベントが拾えれば良かったのですが、actionでもとれませんでした。

秋のはじまり

Swift:Sandbox + WKWebView

ヘルプの実装を検討中にSandboxでNetworkにもチェックを入れなければならないことを再認識しました。

webページの読み込みがうまくいかないのでMesaClip for macOSを調べたら、NetworkのOutgoing Connectionにチェックが入っていました。これは要注意と思った次第です。

Image20180809.005

Helpの実装に際して、サマリーとしてscreenshot画面を表示し、User’s Guideの詳細を見たり検索したいユーザーはPagesからファイルを読み込む方式にしたい、と考えたのです。

2画面アクセスにするかどうか少し迷ったのですが、NSSplitViewで実現することにしました。切り替えに少し時間がかかりましたが、妙手は見つかりませんでした。web pageとscreenshotの切り替えは、それぞれのviewの横幅が大きい方に合わせることにしました。

使い勝手は、まあまあです。Image20180809.007

Swift:Qiitaの活用

来年の2月でwordpress.comのプレミアム契約を解約し、継続しないことにしました。

Qiitaの無料版でやりたいことができることがわかり、少しガックリしてしまいました。これでは、wordpress.comの有償版を使う意味がありません。

例えばこんなことがコードをcopy and pasteするだけで簡単にできます。Qiitaのブログ例はここにあります。

Screenshot 2018-08-09 22.33.38

どうすれば?

  • “`swiftのあとで改行、⑵ Swiftコード、⑶ “`で閉じる。
  • 特殊文字はバックスラッシュ\のあとに置けば表示される(前の行参照)。
  • 文字の色付<font color=”red”></font>で囲む。html表記。
  • URLリンク埋め込みQiitaは、[Qiita](http://qiita.com)と書く。

wordpress.comの良いところもあるのですが、swiftを使った開発メモの場合、コードが簡単に取り込めること、視認性が高いことが必要です。その点、wordpress.comは有料契約であるにも関わらず、フォントのハンドリングに制限があり、使用に耐えません。残念。

今後半年間でwordpress自体をやめるかどうかを含めて検討したいと思います。

Swift:コンテンツブロック

コンテンツブロックのソースコードをDropboxにアップしました。

Source dode: Ads-Blocks Sample code

The sample code is written to evaluate so-called json filters for Safari. MesaViewController is just a test program main, but MesaBlockFileter is developed for MesaClip for iOS. You can manage ads-blocks with the filters on memory. If your users want to customize filters, write the memory filters and read them after their customization, then rewrite them. As the filters are converted from macOS version, there would be my misunderstanding. I hope it is helpful for some app developers. Please refer to iOS 11 WKWebViewで広告などのコンテンツブロックをする by Mr. Shingo Fukuyama as well. The page is very good though it is written in Japanese. In regard to copyright, please refer to the source code.

  • このサンプルプログラムはフィルタの評価をするために作成しました。
  • MesaViewControllerは、フィルタ読み込んだあと、webページを表示し、フィルタが妥当かチェックするための暫定評価プログラムです。
  • MesaBlockFileterは、実際にMesaClip for iOSで使っています。
  • メモリだけで処理した方がプログラム上の操作性がいいので、Swiftに組み込む.jsonファイルの中身は最小限で動作するようになっています。
  • メモリ上のフィルタをカスタマイズしたい場合、これをファイルに書き出し、カスタムフィルタ対応ができるようになっています。
  • フィルタはMesaClip for macOSアプリで使っているものをコンバージョンしました。macOS版は力づくでコンテンツブロックを実装したので、フィルタの互換性がありません。そのため勘違いや間違いがあるかもしれません。

謝意: コンテンツブロックの処理はShingoFukuyamaさんのコードを参考にしています。詳細はiOS 11 WKWebViewで広告などのコンテンツブロックをするを参考にしてください。ShingoFukuyamaさん、ありがとうございます。

Image20180809.002

Image20180809.003

Swift:MesaClip for iOSをリリース

開発着手からとても長い月日が流れてしまいましたが、ようやくMesaClip for iOSをリリースしました。

途中でリリースを諦めようかとも考えたのですが、踏みとどまり、今朝、Appleからアプリの承認がおりました。審査では、スクリーンショットが引っかかり修正が必要でした。また、iTunesファイル共有が必要な理由を説明しました。

スクリーンショットを修正しているとき、ATS(http対応)をNOに変更し、メモ書きのバグが見つかったので修正しました。早く見つかってよかったです。

あとは大きな問題はありませんでした。

iOSについては、またひとつ勉強してしまったというのが今の感想です。

今後は、すでに最新OSに対応済みのMesaWater、MesaExif、MesaAnalyzerのアップデート版をリリース予定です。MesaWaterだけはドキュメント修正がたくさんあるので、先に着手しています。ほかはリリースノート対応で可能です。

あとから思いついたのですが、MesaMeterの出力であるCSVファイルをメールで送れるようにするか、共用ファイルにして、Windows PCのExcelから直接引き出せるようにすれば、手離れがよくなるので、いずれ、検討したいと考えています。

また、次のテーマは、教育か介護がおもしろいのではないかとぼんやり考えています。

スクリーンショット 2018-08-03 00.48.09