2014年11,12月開発状況

2014年11,12月開発状況

11月

クラウドストレージから読み込み機能作成中

語学学習支援プレイヤー」をアップデートすべく、開発中。
作成中の機能 : クラウドストレージ(Dropboxなど)のオーディオファイルを読み込んで使用できるようにする

  • クラウドストレージから読み込むさい、フォルダ指定できるようにする。
  • クラウドストレージから読み込み中、他の曲を選択して再生することができる。
  • 読み込みを途中でキャンセルできる。

ファイル管理画面をどうするか?
いままでは、
たとえば、アルバムタブだと、
アルバム一覧ー>各アルバム詳細
のように、一覧ー>詳細
の2層構造。
(「曲」タブのみ、一層)
「ミュージック」アプリの形式に合わせていた。

「クラウドストレージから読み込み」でのファイル管理。
クラウドストレージは、フォルダの中にフォルダをもてる階層構造なので、それを表現できる画面にする必要が有る。
読み込んだ後の「ローカルでのファイル管理」でも階層構造をもつこととする。
ローカルでのファイル管理画面では、フォルダの新規作成、ファイル名変更、アイテム移動(ファイル、フォルダの移動)ができるようにしよう。
まずは、ファイル管理画面で階層構造をもつことができるようにした。
CustomTableViewControllerのテーブルのセルをタップすると、新たなCustomTableControllerのインスタンスを作成し、navigationControllerにpushするようにした。

Dropboxのファイルを扱うには、Dropbox APIを使う。調べた。

Drop-ins
簡単にDropboxファイルにアクセスできる仕組み。Dropbox上のファイルを選択する画面があらかじめ用意されている。
Drop-insにはChooserとSaverがある。
Chooserで、ファイルをひとつ選択すると、複雑なURLを生成する。
これをダウンロードするなりなんなりする。

インターネットとの通信がでてきた。いままでやっていなかったこと。
iOSで、インターネット上のファイルをあつかう機能を調べてみよう。
iOS 7 から登場したNSURLSessionを使うと、URLを指定してその内容をダウンロードする処理が扱いやすい。
NSURLSessionを使って、インターネット上のファイルのダウンロードの実験をやってみた。
NSURLSEssionでは、アプリを閉じてもダウンロード処理できる。複数のタスクをダウンロードできる。
あつかいやすい。

Drop-insのchooser。これは、クラウドストレージの選択画面があらかじめ用意されていて簡便だ。しかし、複数のファイルを選択する方法、フォルダを選択する方法がみあたらない。

そこで、Dropbox APIのCore APIを使うこととした。

12月

Core APIを使ってDropboxからアイテム読み込み

Core APIを使ったダウンロードだと、アプリ終了後のダウンロードはNSURLSessionのようにはできないようだ。
アプリ終了後しばらく動作できるbackground task(iOS 7だと3分間)を使うこととする。

Dropboxからアイテムを読み込む際、フォルダが選択できるようにしたい。
Core APIで、フォルダに相当するURLを指定してもエラーになる。
なので、フォルダの中を順繰りにめぐってファイルpathを取得するようにした。

また同名のアイテムがあった場合、上書き確認の必要。ー> つくった。

途中経過をテーブルに表示する。ー> 読み込み中は、セルにインジケーターとプログレスバーを表示すようにした。

「クラウドストレージから読み込み」では、「アイテム(ファイルもしくはフォルダ)の選択」をおこなう。
フォルダセルをタップしたとき、どう動作するか悩む。
「クラウドストレージから読み込み」では、「アイテム選択」のみ行うので、セルの左2/3ぐらいをタップした場合は、フォルダを選択。セルの右1/3をタップした場合はフォルダの内容を展開することとした。
どこが境界かわからないと、操作に納得感がなかったので、点線をいれた。

ローカルでのフォルダ・ファイルの扱い。

ローカルでは、ファイルのみ選曲できるようにしていたのでこれを踏襲。
編集モードは、アイテム選択して、削除、名前変更、移動ができるようにした。また、フォルダの作成ができるようにした。

削除 : アイテムを削除する。このさい、確認メッセージをだすこと。そのさい、「ファイルひとつ」「フォルダひとつ」「複数ファイル」「複数フォルダ」「複数アイテム」で分けた。
名前変更 : アイテムの名前を変更する。
移動 : アイテムの移動。新たなnavigationControllerを作成。移動用tableControllerをルートフォルダ分から現在表示しているフォルダ分まで作成し、navigationControllerにpushする。そして、naviagationControllerを現在のviewからモーダルに表示するようにした。

フォルダの作成 : 新たなフォルダを作成する。末尾が’.’のフォルダ名などは作成できないようにして、メッセージを表示するようにした。

ここまで、できた。

ブログのデザインを変更した

Twenty Fifteen

WordPressのテーマを変更した。
テーマ”Twenty Fifteen”を使うことにした。

Twenty Fifteen – WordPress Codex 日本語版

スーパークリーンで、コンテンツに焦点をあて、私達のブログにもう少しシンプルさをもたらすようにデザインされています

サイトに適用すると、こんな感じ

幅が広いとき
ss 2014-12-23 23.18.09

幅が狭いときss 2014-12-23 23.18.46

すっきりしてる。
幅を広げると、フォントサイズも徐々におっきくなっていくスタイル。 
ちょっと、本文がディスプレイの右に寄って見える。
自分でブラウザの幅を調整しながら、じーっと見ているからそう感じるんかしら。ぱっとページを開いて見た場合、そんな風には感じないのかな。
うーむ。
でも、まあ、サイドバー、もう少し狭くしよう。元テーマを生かして、改造するなら子テーマを使うとのこと。

子テーマ

子テーマ – WordPress Codex 日本語版

Child Themes « WordPress Codex

WordPressの子テーマとは、別のテーマ(親テーマ)の機能を継承し、その機能にさらに機能を追加したりその機能を調整したりすることのできるテーマです。

まずは、日本語版の解説を見た。
「このページ「子テーマ」は 原文が頻繁に更新されており、情報が古くなっている可能性があります」
とあるけど、まあ、このへん、やりかたは変わってないだろうと思って読み出した。今回やりたい「サイドバーを狭くしたい」に関しては、子テーマの最小構成であるstyle.cssの作成のみで対応できそうだ。子テーマ用style.cssを作って、その冒頭で親テーマをimportすれば良いとのこと。ではやっていこう。
その前にちょっと英語版の解説を確認。
すると、こんなこと書いてあった。
@importを用いた親テーマのインポート方法は、もう最良の方法ではない。子テーマ用のfunctions.phpに、wp_enqueue_script()を使って、親テーマ、子テーマを取り込むようにしましょう。

それにしたがって、子テーマ用フォルダに上記のコード書いたfunctions.phpを置いた。

そのあと、表示したページのサイドバーを右クリック(Ctrl + クリック)。
「要素の詳細を表示」して、クラスの見当をつけて、幅を調整した。

 

2014年10月開発状況

10月の開発状況

「語学学習支援プレイヤー」のアップデート(完了したもの)

「語学学習支援プレイヤー」をアップデートしました(ver 1.4.2) | nackpan Blog
・バックグラウンド再生機能
・再生速度変更機能
・iTunesファイル共有経由のオーディオファイル再生機能

「語学学習支援プレイヤー」をアップデートしました(ver 1.4.3) | nackpan Blog
・iPhoneイヤホンのセンターボタンによる再生、一時停止に対応

無音分割アプリ

無音部分で分割するアプリの製作を開始。iOS 8 + Swiftで作成。 画面構成を考えた。画面遷移がどのようになるのか試作。

「語学学習支援プレイヤー」のアップデート(作成中)

Dropboxなどのクラウドストレージからオーディオファイルを読み込む機能を作成開始。

 

「語学学習支援プレイヤー」をアップデートしました(ver 1.4.3)

iPhoneアプリ「語学学習支援プレイヤー」をアップデートしました。(ver 1.4.2 –> ver 1.4.3)

「語学学習支援プレイヤー」は、流れる言葉が一区切りしたところで、ユーザーが任意の時間ポーズをいれることができます。
リピーティングに便利なオーディオプレイヤーです。

「語学学習支援プレイヤー」のサポートページ

変更点

・iPhoneイヤホンのセンターボタンによる再生、一時停止に対応しました

ss2014-10-30-01 iPhoneのイヤホンではセンターボタンの操作でオーディオの操作ができるのですが、再生・一時停止に対応していなかった部分を修正しました。 修正後は、以下のような操作に対応しました。

再生・一時停止:センターボタンを1回押す
次の区間へ:センターボタンをすばやく2回押す
前の区間へ:センターボタンをすばやく3回押す

よろしくお願いします。

Repete(語学学習支援プレイヤー)、iTunesファイル共有機能の使いかた

Repete(旧名:語学学習支援プレイヤー)
・iTunesファイル共有でとりこんだオーディオファイルを再生する機能
について説明します。
iTunesファイル共有とは、iTunesを経由してアプリとPC間でファイルをやりとりできる仕組みです。
iOS:ファイル共有について | support.apple.com
この仕組みを使うことで、iPhoneの「ミュージック」に入れていないオーディオファイルを取り込み、再生できるようになります。

iTunesファイル共有の使いかた

1.iTunesで、iPhoneタブを選択(以下の画像はiTunes 12の場合です) ss 2014-10-25 16.58.22
2.Appタブを選択 ss 2014-10-25 16.58.50
3.スクロールすると、ページ下部に「ファイル共有」項目があります ssFileSharing
4.ここで、Repete(旧名:語学学習支援プレイヤー)を選択したのち、「追加」ボタンから、ファイルやフォルダ(なかにオーディオファイルが入っているもの)を追加することができます。 ssAddItems
5.ファイルやフォルダを追加すると、Repete(旧名:語学学習支援プレイヤー)の選曲画面「ストレージ」タブで選曲できるようになります。
写真 2015-04-26itunesFileSharing

「語学学習支援プレイヤー」をアップデートしました(ver 1.4.2)

iPhoneアプリ「語学学習支援プレイヤー」をアップデートしました。(ver 1.3.0 –> ver 1.4.2)

「語学学習支援プレイヤー」では、流れる言葉が一区切りしたところで、ユーザーが任意の時間ポーズをいれることができます。 リピーティングに便利なオーディオプレイヤーです。

「語学学習支援プレイヤー」のサポートページ

変更点

・バックグラウンド再生に対応しました

jp_background_setting

「設定」画面から、「バックグラウンド再生」をオンにすることでバックグラウンド移行後も動作するようになりました。
(オフの場合は、従来通りホームボタンを押した段階で再生は停止します)
バックグラウンドでは、コントロールセンターから「再生・一時停止・ひとつ前の区間へ・次の区間へ」操作ができます。
(コントロールセンターは、iPhone画面下部から指でスワイプすることによって表示されます)

controlCenterImage

・再生速度が変更可能になりました

jp_playbackRate_setting 「設定」画面–>「再生速度」から、再生速度を変更できます。

・iTuensファイル共有でとりこんだオーディオファイルを再生できるようになりました

iTunesファイル共有とは、iTunesを経由してアプリとPC間でファイルをやりとりできる仕組みです。

iOS:ファイル共有について | support.apple.com

この仕組みを使うことで、iPhoneの「ミュージック」に入れていないオーディオファイルを取り込み、再生できるようになりました。
詳しい手順は、こちら–>語学学習支援プレイヤー、iTunesファイル共有機能の使いかた

よろしくお願いします。

[Yosemite]メニューバーの半透明を解除する

macのOSをYosemiteにアップデートした。

すると、上端のメニュー部分や、Safariのメニュー部分が半透明になった。

これを解除するには?

ss 2014-10-17 22.29.05
メニューのリンゴマークから、「システム環境設定」を選択

ss 2014-10-17 22.24.11
「アクセシビリティ」を選択

ss 2014-10-17 22.24.32.2
ディスプレイ–>「透明度を下げる」にチェックを入れる

これで、半透明は解除された!

2014年9月開発状況

9月が終わった。

「語学学習支援プレイヤー」のアップデート、ついに完成した!
・バックグラウンドでのオーディオ再生ができるようになった
・再生速度変更機能がついた!

ようやくできた。よかった。

できあがるまでの状況をふりかえってみよう。

6月終わった時点での状況

アプリ開発、2014年6月進捗状況 | nackpan Blog
この時点で、再生速度の変更の試作、バックグラウンド再生の試作ができた。
また、無音位置を保存しておくことによって同じファイルの2回目以降はすばやく無音位置を調べる機能を作成した。

7月、8月

選曲してすぐにバックグラウンドへ移行した場合、background taskを用いてその間に無音位置を調べる処理を行うようにした。
初回の無音位置を調べる処理を高速化。
2分程度のファイル45個を選曲した場合、90秒くらいかかっていたのが40秒くらいになった。
その後は、seekしたあと再生箇所がずれて始まってしまう問題と、バックグラウンドへ移行して再生が継続されず止まってしまう問題を解消しようとするがなかなかうまくいかない。8月末には、seekの問題は解消する。

9月

バックグラウンドへ移行して再生が継続されず止まってしまう問題の解消。

バックグラウンドでは、できることに制限がある。オーディオ再生は可能。無音位置の調査部分はバックグラウンドではできない。
ということから、バックグラウンドでの再生について、当初は無音位置の調査が終わってからバックグラウンド再生ができるようになる、としようとしていた。しかし、それでは、選曲時に2分のオーディオアイテムを50個選んだ場合だと、初回数十秒、2回目以降も5,6秒たたないとバックグラウンド移行できない。実際に試してみると、選曲してすぐにバックグラウンドへ移行できないのは、使いづらい。
選曲してすぐにバックグラウンド移行するには?
バックグラウンドに移行時、beginBackgroundTaskWithExpirationHandlerを宣言すると、限定された時間ではあるが(iOS7だと180秒)、処理を継続することができる。
このbackground taskを使って無音位置の調査を継続する。これで、選曲後にすぐホームボタンを押して、バックグラウンド移行しても大丈夫。無音位置の調査が終了したら、background taskを終了して、バックグラウンドオーディオ再生オンリーに移行するようにした。

バックグラウンド移行時に、再生が止まってしまう現象が発生。
これの対処に苦労する。
たとえば。「設定画面」で、ホームボタンを押してバックグラウンドに移行しようとすると
再生がとまってしまう。これに関しては、「基本画面」のviewControllerにバックグラウンド用コントロールを書いていたので、resingActive時にpopToRootViewControllerして「基本画面」に戻るようにした。しかし、それでも、うまくいかない。よく調べてみるとpopToRootViewControllerをアニメーションなしでやっても、元の画面に戻るまでいくらか時間がかかるので、「基本画面」に戻って来たのを確認してからプレイヤーを再生するようにした。そうしたら上手くいった。
などのように対処していってきちんと動くようになった。