Mac 環境で、音声編集ソフト Audacity に FFmpeg を導入する

Podcastの音声編集にAudacityを使用しているのですが、
とあるMac環境(64bit 2012 Macbook Pro)にAudacityをいれたらFFmepgがないと怒られました。

なので、その備忘録。

Audacity自体は下記URLの “Audacity macOS DMG” をダウンロード

https://www.fosshub.com/Audacity.html

audacity

ダウンロードが終わったら、Audacityをインストールしてアプリケーションフォルダにドラッグすれば完了。

で、アプリケーションフォルダのAudacityをダブルクリックで起動すると、
Application supportのAudacityにffmpegがないというエラーが出た。

確認してみると本当にない。ちなみにこのApplication supportフォルダを確認しようとターミナルで、
/Libraly/Application Support
ではアクセスできなくて一瞬あれ?となりました。
Finderで、
ライブラリ/Application Support
ですぐにアクセスできるので、どうでもいい話ですが。

audacity library

肝心のFFmpegを下記からダウンロードしてインストールすれば自動的にAudacityのlibに入るので、これで問題解決です。
今回の場合には、64bit Mac OS X用をダウンロードします。

https://lame.buanzo.org/#lameosx64bitdl

オプショナル型のアンラップについて Swift4

オプショナル型=変数にnilの代入を許すデータ型
宣言方法:変数のデータ型の最後に”?”か”!”をつける

var name: String?
var age: Int!

※オプショナル型の変数は宣言をしただけで初期化をしなかった場合、nilが入っている

暗黙的アンラップ型”!” =使用する際に自動でアンラップされる
オプショナル型の宣言には”?”か”!”を用いますが、”!”を用いて宣言したオプショナル型(暗黙的アンラップ型)は下記のように使用する際に自動でアンラップされます。

"?"で宣言したオプショナル型の場合、非オプショナル型とは計算できない
var x: Int  = 5 // 非オプショナル型
var y: Int? = 10 // "?"で宣言したオプショナル型
x + y
# => エラー

"!"で宣言したオプショナル型の場合、自動でアンラップされるため非オプショナル型と計算できる
var x: Int  = 5 // 非オプショナル型
var y: Int! = 10 // "!"で宣言したオプショナル型(暗黙的アンラップ型)
x + y
# => 15

暗黙的アンラップ型は、

最初はnilで宣言⇒使用時には絶対に値が入っている(nilではない)

という使い方の際に使用します。
そのため、使用するときに変数の値がnilのときにはエラーとなりますので要注意です。

 

アンラップ=オプショナル型から値を取りだす

アンラップの方法は下記3通り

1. Forced Unwrapping (強制的アンラップ)
オプショナル型を強制的にアンラップする方法で、
オプショナル型の後ろに”!”をつける

2. Optional Binding (オプショナルバインディング)
オプショナル型の変数に値が入ってる⇒アンラップ⇒処理{}を実行
オプショナル型の変数に値がない(=nil)⇒処理{}を行わない、もしくはelse{}の処理を実行

var test: String? // オプショナル型

if let testUnwrapped = test {
println(testUnwrapped)
}
else {
println("テストはありません")
}

if let 変数2 = 変数1{} はSwiftでよく使われるnilチェックの方法
if let hogehoge = hogehogeValue {
//nilでない場合実行される処理
}

※他にもあるエラーハンドリング
if let 変数2 = try? 変数1 {}
try?はエラーが発生するとnilを返すオプショナル型変数、この組み合わせでエラーにならないようにしています

3. Optional Chaining(オプショナルチェイニング)
オプショナル型の変数に続けてプロパティを取得したり、メソッドを呼び出す場合に使用する、戻り値はオプショナル型になる
戻り値がオプショナル型となるため、オプショナル型の変数の中身がnilの可能性があってもプロパティを取得したり、メソッドを呼び出せる。

使用方法:オプショナル型の変数のあとに”?”をつける
オプショナル型の変数?.プロパティ
オプショナル型の変数?.メソッド()

【例1】

var animal1: Animal? = Animal()
var animal2: Animal?

// nilでないためプロパティが取得できる
animal1?.type
// => "Optional(ねこ)"

// nilでないためメソッドを呼び出せる
animal2?.call()
// => "Optional(わんわん)"
var animal1: Animal? = Animal()
var animal2: Animal?

// animal1がnilの場合、nilが返る
animal1?.type
// => nil

// animal2がnilの場合、nilが返る
animal2?.call()
// => nil

【例2】

var x: String?
Var y = x?.uppercased()
// => nil

 

世界の通信機器市場で進む寡占化とセキュリティ

レノボ、ファーウェイなど中国企業の通信機器 悪意あるソフト、あらかじめ搭載

という記事が発表されましたが、だいぶ前から米国やヨーロッパ諸国が危険性を警告していました。
ですが、実際には世界の工場である中国に世界中が頼っており、
携帯電話やPCでの、中国企業の寡占化は進んでいます。

ということは、商品代金を払って、パスワードや個人情報、企業の機密情報まで”献上”してしまっているという状況が考えられます。
(あくまで想定です)

「私は日本のメーカーだから安心」

なんていうのは通用せず、ブランドは日本企業でもOEMで設計から製造まで中国企業に丸投げなんてこともあります。

通信チップ(部品)にスパイウェアが仕掛けられていたり、
OSインストール時に入れるバンドルソフトに仕掛けられていることもあり、
ブランドを見て安心するというのはナンセンスです。

要は”中身の部品”、”OSを誰がいれるか”が重要なのですから

特許に詳しい方は知っているかとは思いますが、
中国を代表する通信機器企業「ファーウェイ」「ZTE」の出願特許件数は世界トップクラスで
名実ともに世界の通信機器部品でのトップ企業になろうとしています。

つまり、知らずしらずのうちに自分の携帯電話やPCの中に
「インテル入ってる」のCMのように「ファーウェイ入ってる」状態になるということです。

実際、日本のPC販売シェアは40%近くをスパイウェアが何度かプリインストールされていたということで問題になっている
レノボが占めています。
Ref:日経トレンディ2015年4月20日 

NECはメイドインジャパンという機種がありますが、中身の部品はメモリやHDDを除き、ほぼ全て中国系企業の部品(中国製)で占められていますので、”組立”を日本でしているというだけにすぎません。

重要なのは”通信部品”、もしくは”OSを誰がいれるか”なのです。

と言っても、消費者である私達が通信部品やメーカーが行うプリインストールソフトの詳細を選べる状況ではないので、
通信機器部品の開発競争で日本企業に是非がんばってほしい次第です。