Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 859 - AVSpeechSynthesizer

オリジナルアプリ... どうしようか考えています。

色々アイディアはあるけど、複雑なアプリばかり考えてしまって形にできません。

そこでとてもシンプルなアプリを作ることにしました。

そのために資料集めをします。今日はAVSpeechSynthesizerです。本当に簡単に喋らせることができました。こういうテストコードも簡単に理解できるようになった自分に驚きです。

f:id:yataiblue:20161201231316j:plain

Viewに設置するオブジェクトは「UITextView」と「UIButton」です。そしてUIViewControllerに次のコードを書くんです。

import UIKit
import AVFoundation

class ViewController: UIViewController, 
                UITextFieldDelegate,  
                  AVSpeechSynthesizerDelegate {

    @IBOutlet weak var speechText: UITextField!
    
    var talker = AVSpeechSynthesizer()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.speechText.delegate = self
        self.talker.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
        // Dispose of any resources that can be recreated.
        
    }
    
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        
        speechText.resignFirstResponder()
        
        return true
    }

    @IBAction func speech(_ sender: UIButton) {
        
        // 話す内容をセット
        let utterance = 
               AVSpeechUtterance(string: self.speechText.text!)
        
        // 言語を日本に設定
        utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP")
        
        // 話す速度(0.0 - 1.0)
        utterance.rate = AVSpeechUtteranceMinimumSpeechRate
        
        // 声の高さ(0.5 - 2.0)
        utterance.pitchMultiplier = 1.0
        
        // 実行
        self.talker.speak(utterance)
        
    }
    
    // 以下のメソッドがデリゲートメソッドです。
    func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, 
                      didStart utterance: AVSpeechUtterance) {
        print("開始")
    }
    
    func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, 
                     didFinish utterance: AVSpeechUtterance) {
        print("終了")
    }

}

Swiftで遊ぼう! - 858 - ブログ記事をランダムに改訂中5

デザイン・パターンの復習は進んでいます。Swift 3に対応させているだけですが、疑問に思っていたことが今は理解できます。

間違っている内容も多かったので修正しています。

yataiblue.hatenablog.com

Swiftで遊ぼう! - 857 - ブログ記事をランダムに改訂中4

デザインパターンの復習をしているので、シングルトン・パターンの記述をSwift 3向けに書き直しました。

以前疑問に思っていたplaygroundでのアクセス・コントロールの問題点も解消されていたので、不必要な記述はカットしました。

アクセス・コントロール、Swift 3から拡充されていますね。まだ勉強していないのでちょっと勉強します。

yataiblue.hatenablog.com

Swiftで遊ぼう! - 856 - ブログ記事をランダムに改訂中3

ランダムに昔の記事を改訂しています。

今日はタイプ・メソッドのコードを書き直していて、昔の疑問点が解消されていなかったことが判明しました。誰も教えてくれないので、初めてQitaで投稿してみました。

タイプ・メソッドの利用法 - Qiita

誰かコメントしてくれないかな...

修正した記事は次です。

yataiblue.hatenablog.com

Swiftで遊ぼう! - 855 - ブログ記事をランダムに改訂中2

ランダム改訂中の1記事、デザイン・パターンの話題に取り組んでいます。

「まえがき」だけ改訂しました。

yataiblue.hatenablog.com

デザイン・パターンはSwift 3向けに書き直します。

Swiftで遊ぼう! - 854 - ブログ記事をランダムに改訂中1

私のブログ記事も大量になっています。自分で書いた内容も忘れてしまうほど多くの話題に触れています。

基本的に初心者レベルを超える内容も含まれています。

まだまだフレームワークの勉強ができていないため個別のフレームワークの利用の勉強を始めます。

しばらく自分の記事の内容をSwift 3向けに書き換えていきます。

テーブルビューコントローラーを使った記事を改訂中です。

まだできていないけど、記事の内容が徐々に変わっていく現象に遭遇するかも。

Swiftで遊ぼう! - 853 - 復習は進んでいます

今までの勉強したことの復習には時間がかかりませんね。やっぱり1回勉強した内容は簡単に理解できます。どんどんSwift 3向けに書き直しをします。

yataiblue.hatenablog.com

Swift 3向けに書き直しました。