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

iPhone/iPadアプリ「Repete」(レペテ)(旧「語学学習支援プレイヤー」)をアップデートしました。(ver 2.3.1 –> ver 2.4)

「Repete」(「語学学習支援プレイヤー」)は、語学学習の手助けをするオーディオプレイヤーです。ファイルの無音部分を分析し、流れる言葉が一区切りしたところで、あいだをおいて再生します
リピーティングに便利なオーディオプレイヤーです。

変更点

• iPhone 4sで、選曲後、アプリが強制終了する不具合を修正しました

• Non-stop再生ボタンの表示がおかしかったのを修正しました

• そのほか細かなバグを修正しました

よろしくお願いします。

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

iPhone/iPadアプリ「Repete」(レペテ)(旧「語学学習支援プレイヤー」)をアップデートしました。(ver 2.2 –> ver 2.3)

「Repete」(「語学学習支援プレイヤー」)は、語学学習の手助けをするオーディオプレイヤーです。ファイルの無音部分を分析し、流れる言葉が一区切りしたところで、あいだをおいて再生します
リピーティングに便利なオーディオプレイヤーです。

変更点

• iOS 10で使用時、「選曲」ボタンを押したさいに強制終了する不具合を修正しました。

• このバージョンからiOS 9.3以降対応となります。


よろしくお願いします。

2016年9月開発状況

前月に引き続きRepete Plusの開発中。

Repete PlusはRepeteの機能追加版です。
* オーディオファイルの区切り編集機能
* 曲送り・曲戻し
* 早送り・戻しでの秒数指定
* 歌詞表示

が主な追加機能です。

前半

今月は、iOS 10、Xcode 8がリリースされました。
Xcode 8からは、推奨されるSwiftのバージョンが2系から3.0になりました。
今月前半は、「Repete」「Rendow」「Repete Plus」をiOS 10、Swift 3に対応させる処理を行いました。
Xcodeの自動コンバートでは対応しきれないCore Graphicコードの書き換え用にRubyで簡易コンバーターを作成しました。
CoreGraphicsコードをSwift 3.0に変換する – nackpan Blog

後半

「区切り点編集機能」のプレイヤーへの組み込みを行いました。

再生中、停止中、待ち中に
* 区切り点の移動
* 区間の使用・不使用チェック
を行ったとき、プレイヤーにその操作が適切に反映されるようにしました。

スクロール直後に軽くpanしたときに、意図せず区切り点の移動になってしまう症状が出ていたのを直しました。

テキスト表示機能の試作をおこないました。

関連

2016年8月開発状況 – nackpan Blog

CoreGraphicsコードをSwift 3.0に変換する

Xcode 8.0が登場しました。
旧プロジェクトをXcode 8.0で開くと、Swift 3.0(あるいはSwift 2.4)に変換するよう促すダイアログが出現しました。

CoreGraphicsコードをSwift 3.0への自動コンバートにかけたところ、変換されない部分が残りました。

変換後、このようなコードになったのですが最終的には

と変換したい。

文字列の処理がやりやすいのはなにかしらと考えて、急遽Rubyを学ぶことにしました。


文字列操作とファイル操作の基本的なやりかたを知ったので、以下の変換プログラム converter.rbを書きました。
CGPathMoveToPoint(pathRef, nil, 20, 0)

pathRef.move(to: CGPoint(x: 20, y: 0))

CGPathAddLineToPoint(pathRef, nil, 200, 0)

pathRef.addLine(to: CGPoint(x: 200, y: 0))

CGPathAddCurveToPoint(pathRef, nil, 205.523, 0, 210, 4.435, 210, 10)

pathRef.addCurve(to: CGPoint(x: 210, y: 10), control1: CGPoint(x: 205.523, y: 0), control2: CGPoint(x: 210, y: 4.435))

と変換するものです。

converter.rb

変換したいswiftファイルがあるフォルダに、converter.rbをおき、Terminalでそのフォルダへ移動した後、

と入力するとプログラムが実行されます。
実行すると、

とたずねられるので、そこで変換したいファイル名を入力すると変換が行われます。
(このさい、”_元ファイル名.bak”というバックアップファイルも作成します。)
ファイル名を入力せずにreturnキーを押すと、プログラムは終了します。

関連

Autodesk Graphic(旧iDraw)はCore Graphicsのコードを生成できる – nackpan Blog

2016年8月開発状況

前半

前月に引き続きRepete Plusの開発中。

Repete PlusはRepeteの機能追加版です。
* オーディオファイルの区切り編集機能
* 曲送り・曲戻し
* 早送り・戻しでの秒数指定
* メイン画面の左右下部に設定変更ショートカットボタン
* 歌詞表示

が主な追加機能です。

今月は、7月に引き続き「区切り点編集機能」の作成を行いました。

スクロール、ズーム、区切り点の挿入・削除に加えて、
* 区切り点の移動
* 区間の使用・不使用チェック
機能を追加しました。

後半

Dropbox API

Dropbox APIが、従来のものが廃止されることになり、あらたなAPIを用いて書き直す必要が生じました。
API v1 is now deprecated | Dropbox Developer Blog
そこで、Repeteおよび作成中のRepete Plusの該当部分を書き直しました。

OneDrive API, Google Drive API

Repeteでは、他にOneDriveとGoogle Driveを連携できるクラウドストレージとして設定しています。
OneDrive、Google Driveともに、既存のアプリは従来のAPIを継続して使用できます。
新規に作成するアプリであるRepete Plusでは、最新のものを用います。
8月後半は、そのための書き換えを行いました。

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

iPhone/iPadアプリ「Repete」(レペテ)(旧「語学学習支援プレイヤー」)をアップデートしました。(ver 2.1.2 –> ver 2.2)

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

変更点

• Dropboxの従来の接続方式が廃止され、新方式になりました。
API v1 is now deprecated | Dropbox Developer Blog
そこで、アプリ側も新方式を組み込んだものに書き換えました。
(そのため、Dropbox使用の際には、連携をあらためて許可してもらう必要があります。ご了承ください)

当面は従来の 選曲画面で、一番下のセルが選択できないケースがあったので修正しました。


よろしくお願いします。

Dropbox API v1からv2への移行

作成したiOSアプリ「Repete」(語学学習支援プレイヤー)には、Dropbox上のオーディオファイルを取り入れる機能があります。
Dropboxへのアクセスには、Dropboxが提供するAPIを使用しています。
API v1 is now deprecated | Dropbox Developer Blog
Dropbox API v1が廃止され、新たなアプリおよび既存のアプリはAPI v2を使ってDropboxと接続する必要があるとのことで、今回、移行処理を行いました。

File Type Permissionが廃止された

API v1には、File type Permissionという分類がありました。特定の種類のファイルのみアクセスできるというものです。
API v1 → API v2 migration guide – Developers – Dropbox
API v2では、File Types Permissionがなくなりました。移行にあたっては新たにアプリを登録して、ユーザーにもう一度認証してもらうことになります。

Tip: When messaging to your users the need to re-link their Dropbox account, we suggest the following language: “The Dropbox integration has changed. Please re-link your account to continue [syncing/backing up data/accessing files/etc].”

再リンクの必要を伝えるメッセージの例。

Fie Types Permissionのように特定の種類のファイルのみを取得するには、ファイル拡張子を用いて判別します。
Developer guide – Dropbox
こちらに、API v1でFile type判別に用いていた拡張子の一覧があります。

インストール

Swift製のライブラリをインストール。
Dropbox for Swift Developers | Install
こちらのページにそって、インストール。
AlamofireとSwiftyDropboxがインストールされます。
今回インストールしたバージョンは、
Alamofire: 3.3.1
SwiftyDropbox: 3.2.0

チュートリアル

Dropbox for Swift Developers | Tutorial
チュートリアルでは、アプリを登録して簡単なプロジェクトを作成しました。
チュートリアルプロジェクトでできること。
* Dropboxとの連携許可
* ユーザーのアカウント名を表示
* 指定したフォルダ直下の内容を表示
* ファイルのアップロード
* ファイルのdiskへのダウンロード
* ファイルのメモリへのダウンロード

おおよそやりたいことはできるのだけれど、そのほかに知りたい点がいくつか。
Tutorialを改造しながら、さぐりさぐりで調べていきました。

そのほか調べた事柄

ファイルの情報を知る

getMetadataを用いる。

フォルダかファイルか?

取得したmetadataがフォルダなのかファイルなのか知りたい。
Files.FolderMetadata、Files.FileMetadataを用いる。

ファイルの種類を限定

Dropbox for Swift Developers | Overview
こちらのページで紹介されているSample Appの”PhotoWatch”では、

という書き方をしています。
拡張子をチェックして判別しています。
参考:Developer guide – Dropbox
Dropbox API v1でFile type判別に用いていた拡張子の一覧あり。

フォルダ下のすべてのフォルダ・ファイルを取得する

listFolderのさいに、recursiveをtrueにすることで再帰的に調べてフォルダ下のすべてのフォルダ・ファイルが取得できます。

進行状況

進行状況を知るには?

参考:swift – SwiftyDropbox download progress – Stack Overflow

リクエストをキャンセルする

ダウンロードのリクエストをキャンセルするには?
swifty dropbox download cancel – Dropbox Community
こちらのページを読むと、初期はダウンロードキャンセル機能はなかったようです。
最新版ではあるとのこと。
SwiftyDropbox 3.2.0ではありました。

こんな感じでしょうか。
Storyboard側にキャンセル用ボタンを配置してViewController.swiftのcancelButtonPressedとactionでつないであるものとします。
Dropboxにリンクしている状態で、viewDidLoadが呼ばれると、ルートフォルダの”audio.mp3″のダウンロードが開始されます。
キャンセルボタンを押すと、ダウンロードがキャンセルされます。


以上、SwiftyDropboxの使い方について、いくつか知った事柄について記しました。

2016年7月開発状況

前月に引き続きRepete Plusの開発中。

Repete PlusはRepeteの機能追加版です。
* 歌詞表示
* 曲送り・曲戻し
* 早送り・戻しでの秒数指定
* メイン画面の左右下部に設定変更ショートカットボタン
* オーディオファイルの区切り編集機能
が主な追加機能です。

今月は、「区切り点編集機能」の作成を行いました。

7月初頭。UIScrollViewを使用しないで、グラフをスクロールさせる機能を作ったものの、UIScrollViewのスピードに乗ったスクロールやバウンドがない。やはり、UIScrollViewを使用することとした。

UIScrollViewのあつかいかたを学ぶ。重くならないように、必要なぶんだけグラフを描画する。

UIScrollView、スクロールすると、scrollViewのoriginが変化する。
scaleが変化すると、scrollViewが持つviewのframeのsizeも変化する。

スクロール、ズーム機能の実験

tapして点を消したり、加えたりする。Tap Gesture Recognizerを用いた。

スクロールとズームを横方向に限定

区切り点の編集機能を作成中

ここまで作ったところで、やはり指先tapでは位置がおおまかになってしまい、狙った点にいまいちtapできないなと感じました。
tapで点を置いた後、点をドラッグすると移動できることとしました。
その機能を作るのに難航して7月が終了してしまいました。