こんな時代だからこそ、幸せになる準備をしよう

f:id:aminaura:20200506025652j:plain

5/1、東京の空の様子です。

ゴールデンウィークが始まりますが、街の交通量が大きく減っていることもあり、よく澄んだ青い空です。もしかしたら、世界中で、同じように綺麗な空を見ることができているかもしれません。

先の見えない暗いトンネルにいるような状況の中、今だからこそ、少しでもポジティブになれることを願って、幸せについて書いていきます。

いまだからこそ「幸せの形」がわかる

今、あなたがいちばんしたいことはなんですか?思い浮かべてみてください。おそらく、多くの人が元の生活が戻ったら絶対にやりたいと思うことがたくさん浮かぶはずです。

それらは、あなたが「心から楽しいと思っていたこと、本当に幸せだと思っていたこと」なのです。

以前の生活を思い出してみます。ぼくたちが普段の生活の中でなんとなく感じていた幸せの定義といえば、【お金持ちになる、有名になる、社会的に成功する、みんなに認められる】みたいな感じだと思います。ぼくらはみんな、少しでも偉くなるために働いて、他人に承認されるためにアピールをして、それでもお金持ちになれない人生を悲観していました。多くの人が自分の幸福度は低いと感じていたと思います。

今ならわかるはずです。そんなことは自分の人生にとってはほんの些細なことなのです。それらはSNSの流行でこの狭い社会に蔓延してしまった通念であり、偽りの幸せの定義なのです。

あなたが幸せになる方法は、あなただけが知っているし、あなたが選ばなきゃいけないんです。

好きなお酒を飲みながらソファに座って友達と共通の趣味について話す、そんな時間があなたを本当に幸せにすると気づいたのなら、これからの人生はその時間をなにより大切にしなければいけません。たとえそれが社会に蔓延する幸せの定義とずれていても、インスタグラムにアップできるような見栄えではなくても。

今の状況になったからこそ得られた気づき、自分だけの幸せの形をよく覚えておけば、これからの人生はより豊かになるはずです。幸せになるために、本当にやりたいことを自分で選び、行動し、必ず生きて会いましょう。

お題「#おうち時間今週のお題「カメラロールから1枚」

ジム・キャリー映画という薬 (5月病とひとりの連休を過ごす人に贈る)

後ろ向きなこの時期の気持ちを変えてくれる、ジム・キャリーの映画を紹介。 全てAmazon prime videoから観ることのできる作品です。

『マン・オン・ザ・ムーン』(Man on the Moon)

http://www.domenica-poster.com/simg/1174.jpg

実在した伝説のコメディアン、アンディ・カウフマンジム・キャリーが虚構と現実の境目が曖昧になるほど感情移入して演じた伝記映画。 エンターテイメントを追求するあまり誰にも理解されずに孤立しながらも、なお最高のショーを続ける男の物語。 グレードギャッツビーを丸々朗読するだけのショーをしたり、女性を相手にプロレスをしたり、テレビで差別用語を連発したり、だんだん客もついていけなくなる。 罵倒され、厄介者扱いされ、嫌われるが、結局は誰も本物のスターである彼を無視することはできない。死までエンターテイメントに変えるコメディアンの一生を見れば前向きな気持ちになれるはず。

イエスマン “YES”は人生のパスワード』(Yes Man)

http://dougahaishinreview.com/wp-content/uploads/2015/08/yesman.jpg

https://i1.wp.com/genmaistation.com/wp-content/uploads/image-20130727065950.png

www.youtube.com

妻に振られ、銀行員を続けるも、プライベートでも仕事でも「NO」と言いあらゆることを断る生活を送っていたカールが、自己啓発セミナーに通い、あらゆることに「YES」と答えだすことで人生が変わっていくストーリー。このあらすじで90%は想像しうる展開の映画だけど、 「YES」によって出会い、2人で子供のように遊びまくることになる、ズーイー・デシャネル「この世は遊び場、子供の頃は知ってたのに皆忘れちゃう」という一連のシーンが予想できないほど強烈に良い。 「やってみる」ことで何かが変わるという単純なことがはっきりと刺さる映画。

トゥルーマン・ショー』(The Truman Show)

http://livedoor.blogimg.jp/stainbeck/imgs/9/e/9eed3a9d.jpg

www.youtube.com

親権をテレビ局に買われ、無自覚のままリアリティショーとしてその一生をセットの中で、友人、家族、恋人役の俳優たちと過ごし、その様子を世界中に配信され続けてきた男の数年を描く映画。 予想をはるかに超えるハードなSFなうえ、映画を見ている人も『トゥルーマン・ショー』の視聴者になるなど複雑な設定の脚本だが、丁寧な演出とジム・キャリーの演技でウェルメイドな感動映画になっている。自分の環境を認識し、運命を変えようとする人間の探究心が見られる。

エターナル・サンシャイン

f:id:aminaura:20180430041800j:plain

もし気が滅入っている時期だったり、恋人がいなくて寂しい時間を過ごしているなら、この映画は絶対に見ない方が良い。 失った時間や思い出は二度と戻らないし、その美しさには失わないと気付けないことを分からせてくれる映画。

『マスク』

犬がかわいい

2017年、印象に残ったアイドルソングベスト20 (1位〜10位)

メジャーインディーズ問わず印象に残った20曲

去年2016年はこちら

2016年、印象に残ったアイドルソングベスト20 (1位〜10位) - 猪突猛進にっき

1位 『エキセントリック』欅坂46

作詞:秋元康 作曲:ナスカ

最も勢いのある欅坂46のファーストアルバムから。

サイレントマジョリティー」池田一真が監督、振付も同じTAKAHIROによるMV

来年もアイドル音楽を引っ張るのは欅坂と平手か

www.youtube.com

2位 『ミュージック 3、4分で終わっちまうよね』ゆるめるモ!

作詞:小林愛  作曲:田家大知・M87  編曲:M87

ゆるめるモ!の最高傑作アルバム 「ディスコサイケデリカ」から。 ジャケットはPrimal Screamオマージュっぽい

f:id:aminaura:20171231204407j:plain

ダークな詩でディスコティックな「モイモイ」、ミニマルテクノっぽい「我が名とは」もよかったけど圧倒的なこの曲。

Aメロが全てメンバーが実際に言われた罵倒のセリフで構成されてる

そこから、「そうかも僕らのミュージック気休めなんだ」「僕らに出来ることがあるとか思っちゃうちょこっとだけ思っちゃう」と続く。

4人になって、間違いなく今がいちばん良いゆるめるモ!に来年も期待

www.youtube.com

3位 『風船は生きている』乃木坂46(アンダー)

作詞:秋元康 作曲:泉佳伸/三好翔太

インフルエンサー」のカップリング、乃木坂のアンダー曲。 名曲を出しまくった今年の乃木坂の中でも一番好き

www.youtube.com

4位 『逃げない!!』ゆるめるモ!

作詞:小林愛  作曲・編曲:M87

ゆるめるモ!の最高傑作アルバム 「YOUTOPIA」から。

代表曲「逃げろ!!」のアンサーソング的に出された新曲、これからのゆるめるモ!のイメージソング。 PVの衣装は全てWEGOで買えるらしいから同じものを買おう

www.youtube.com

5位 「なないろ」私立恵比寿中学

作詞・作曲:池田貴史

松井りななんの誕生日7/16からとって「なないろ」

エビ中の再出発の曲、ずっと応援しよう

www.youtube.com

6位 『君だけじゃないさ...friends』 アンジュルム

作詞・作曲:星部ショウ  編曲:平田祥一郎

cuteの解散、カントリーは新体制、こぶしファクトリーは脱退など転換の年だったハロー、 その中で唯一絶好調のアンジュルムから。

2000年に一人の美少女こと、上國料かみこのメイン曲。

www.youtube.com

7位 『最上級ぱらどっくす』 わーすた

作詞:鈴木 まなか・渡邉 シェフ 作曲:安藤 啓希・須藤 隼太

圧倒的メジャー感。kawaiiの秘密は努力です。 来年こそはわーすたの年、、!

www.youtube.com

8位『ribbonsora tob sakana

作詞・作曲: 照井順政

ハイスイノナサ照井順政プロデュース、sora tob sakana

ファーストアルバムではやりすぎ気味のバックが4人の歌と合ってきて、完成度高く盛り上がる曲に。 これはライブで聞きたい。

www.youtube.com

9位『=LOVE=LOVE

最高!

www.youtube.com

10位 『前髪』 アイドルネッサンス

作詞・作曲:小出祐介

www.youtube.com

2016年、印象に残ったアイドルソングベスト20 (11位〜20位)

11位 『RUN and RUN』 lyrical school

スマホジャックMV。

vimeo.com

花火シンクロMVもよかった。

サマーファンデーション/lyrical school【Sync with fireworks MV】#SummerFoundation - YouTube

12位 『次々続々アンジュルム

作詞:児玉雨子 作曲・編曲:平田祥一郎

www.youtube.com

13位『ゼッテーアナーキー私立恵比寿中学

名盤「穴空」から。

www.youtube.com

14位 「君の知らない物語」アイドルネッサンス

次のアルバムが楽しみ。

www.youtube.com

15位 『夢幻クライマックス』℃-ute

作詞・作曲:大森靖子 編曲:大久保薫

www.youtube.com

解散発表した℃-ute大森靖子の初提供曲。

絶対無双の女子力で、最強で、セクシーで、女として誰も勝負する気にもならないような、 かっこいい℃-uteが大好きです。 なので、踊りも歌も香りもオーラも顔面も、全てのレベルアップしまくった武器をフル活用 できるような曲をつくりたいと思いました。 例えば女性として、何もかもを得ても感じてしまう渇望を楽曲で描ければ、まだみたことのない彼女達の顔がみれるのでは…!と奮闘したので、この曲が、最後まで貧欲に成長し続ける ℃-uteのガソリンになることができれば幸いです。 解散が楽曲完成後に決まったので、歌詞を描きなおしました。 隠しコマンド的に、メンバーの名前も入っているのでみつけてくださると嬉しいです。 別れの歌ですが、クライマックスに向けての加速装置です。 魂だけ側において、強く生きていこう!と、私は大好きなメンバーがハロプロを卒業しても なお、がんばるモチベーションをもらい続けています。 こんな風に、永遠に良き方向に未来を運んでくれる彼女たちの煌めきに感謝して。

大森靖子

16位 『KARATE』BABYMETAL

www.youtube.com

YUIMETALのちょこっとLOVEがおすすめ。

www.youtube.com

17位『そうじゃない』 モーニング娘。'16

作詞:つんく 作曲:つんく 編曲:平田祥一郎

つんくにしか書けないやつ。

www.youtube.com

18位 『Dream Road~心が躍り出してる~』Juice=Juice

作詞:つんく 作曲:つんく 編曲:江上浩太郎

アンジュルム次々続々』といい、EDMは終わってるけどアイドルEDMはこれから始まりそう。

www.youtube.com

19位 『雨と涙と乙女とたい焼き』乙女新党

作詞:高橋久美子(ex.チャットモンチ―) 作曲:日高央(THE STARBEMS/ex.BEAT CRUSADERS) 編曲:ヤマモトショウ(ex.ふぇのたす

解散発表した乙女新党

www.youtube.com

思えば、中3の冬から 「乙女新党」としてアイドル活動をはじめて 4年になります。 私の青春そのもである乙女新党が解散しても 「乙女新党は私のなかでも不滅です!みんな大好きです!」 今まで応援してきてくれた党員の方々とともに この幕はひきますが、 次の高橋優里花もどうぞよろしくお願いいたします!

高橋優里花

20位 Peach sugar snow 私キミに恋してる

作詞・作曲 小林清美 編曲 長谷泰宏

山梨の桃をPRしながら全曲ウイスパーボイスで歌うグループ、Peach sugar snow

www.youtube.com

2016年、印象に残ったアイドルソングベスト20 (1位〜10位)

メジャーインディーズ問わず印象に残った20曲

1位 『チョット愚直に!猪突猛進こぶしファクトリー

作詞・作曲:前山田健一 編曲:鈴木俊介

1月発売、鈴木俊介アレンジ、ヒャダインハロプロつんくリスペクト、赤羽橋ファンク。

www.youtube.com

同時リリースシングルのダンス☆マンとの対談もかなり面白い。

www.youtube.com

2位 『サイレントマジョリティー』 欅坂46

作詞 秋元康 作曲 バグベア

曲、映像、制服、ダンス、アートワーク全て揃った名曲J-POP。 2020年に向けて再開発まっただ中の渋谷駅、東急東横線改札口跡でのMV、渋谷川での『ラブ&ポップ』オマージュぽいジャケットが特に良い。

www.youtube.com

3位 『KEEP ON 上昇志向!!』Juice=Juice

作詞・作曲:前山田健一 編曲:ダンス☆マン

ヒャダイン×ダンス☆マン。 チョット愚直に!と曲構成はかなり似てるけど良いので3位。 あからさまな元ネタもブラスアレンジも良い。

www.youtube.com

Juice=Juiceは全員歌えてレコーディングが面白い。

www.youtube.com

4位 『 参枚目のタフガキ』私立恵比寿中学

作詞・作曲:前山田健一 編曲:CMJK

エビ中の間違いなく過去最高アルバム「穴空」から。 「ゼッテーアナーキ」、まんま乃木坂46の「全力ランナー」も素晴らしいんだけど、あえてアルバムの最後に収録されたこの曲です。

タイトルはUnderworldの「弐番目のタフガキ(second toughest in the infants)」から。 イントロはBorn Slippyっぽい。 変な詞に本気の曲作り、お金をかけたガチアルバムの最後にこの曲を持ってこれるのがエビ中の良さだと思う。

www.youtube.com

vimeo.com

www.sonymusic.co.jp

5位 「Savior」Especia

「堀江系ガールズグルーブ」という肩書で、衣装は大阪のおばちゃん風。洗練されたネオソウル、80年代フュージョンを20歳前後の普通の子たちがやっていたEspecia。 今年から上京して発足当時10人いたのが2人になり、新人ブラジル人が加入して、完全別グループに。 そんなEspeciaのニューアルバム『Mirage』から。 PVはSuchmos、Yogee New Wavesも手がける、yahyel、dutch_tokyo(山田健人)。 とにかくかっこいい。

www.youtube.com

6位 『泡沫サタデーナイト!モーニング娘。'16

作詞・作曲:津野米咲  編曲:鈴木俊介

ハロオタ、津野米咲(赤い公園)の初提供曲。 良くも悪くもハロプロつんくに縛られまくってる、けど良い曲。

www.youtube.com

7位 Lil Tomte / 校庭カメラガールツヴァイ

名前は略してコウテカ、オウテカっぽい名前にしようと決められた。 2014年から(当時は校庭カメラガール)から始まったが、とにかくメンバーが辞める、グループ名が変わる。 そしてとうとう今年限りで解散を発表、ラストアルバム"Night on Verse"からこの曲「Lil Tomte」。 クラブミュージックベースとラップで曲はずっとかっこよかったので終わらないで欲しかった。

www.youtube.com

8位 夢みるアドレセンス 『おしえてシュレディンガー

作詞・作曲: 志磨 遼平(ドレズコーズ)

www.youtube.com

「ふわふわ!」で、『SEXY BOY~そよ風に寄り添って~』を思い出した。

www.youtube.com

9位 僕だけのハッピーエンド 3776

説明不要の富士山ご当地アイドル3776。

知らない方はとりあえず1stアルバム (3776を聴かない理由があるとすれば)を聴こう。

ototoy.jp

そんな3776が新宿LOFTで行ったワンマンライブで、1stアルバムの曲をほぼやらずに、もともと一人なのにソロデビュー発表をして、さらに3776新メンバー募集をした時に歌った曲。

www.youtube.com

10位 『ひゃくぱーせんと』 生ハムと焼うどん

作詞 東理紗 作曲 東理紗

www.youtube.com

aminaura.hatenablog.com

Functional Swift 4章 "Map Filter Reduce" まとめ

引数に関数を取る関数を高階関数と呼びます。本章ではSwiftの標準ライブラリに実装されている高階関数を紹介します。

Map, Generic

Int型の配列を受け取り、全ての要素に1を加えて返す関数はfor文を使って簡単に書くことができます。

func incrementArray(xs: [Int]) -> [Int] {
    var result: [Int] = []
    for x in xs {
        result.append(x + 1)
    }
    return result
}

全ての要素を2倍にする関数も同様に書くことができるでしょう。

しかし、これらの関数をより汎用性のあるものにするためには、配列の各要素をとって計算し、Int型を返す関数を第二引数として受けとる必要があります。

func computeIntArray(xs: [Int], transform: Int -> Int) -> [Int] {
    var result: [Int] = []
    for x in xs {
        result.append(transform(x))
    }
    return result
}

しかし、このコードはまだ最も柔軟であるとは言えません。 例えば、配列の各要素を偶数であるか判定し、真偽値の値を配列に入れて返したい場合はどうすれば良いでしょうか。

この問題を解決してくれるのがジェネリクスです。

func genericComputeArray<T>(xs: [Int], transform: Int -> T) -> [T] {
    var result: [T] = []
    for x in xs {
        result.append(transform(x))
    }
    return result
}

これで任意の型で動作する関数を書くことができました。

この関数はさらに抽象化することができます。入力される配列は[Int]である必要はありません。

func map<Element, T>(xs: [Element], transform: Element -> T) -> [T] {
    var result: [T] = []
    for x in xs {
        result.append(transform(x))
    }
    return result
}

グローバルレベルでmap関数を定義するのではなく、Arrayの拡張として定義することでSwiftにうまくフィットします。

extension Array {
    func map<T>(transform: Element -> T) -> [T] {
        var result: [T] = []
        for x in self {
            result.append(transform(x))
        }
        return result
    }
}

map関数はSwiftの標準ライブラリに含まれているので自分で実装する必要はありませんが、map関数はやろうと思えば簡単に実装できることは示したのです。

Filter

あるディレクトリにこんなファイルがあるとします。

let exampleFiles = ["README.md", "HelloWorld.swift", "FlappyBird.swift"]

この中からSwiftファイルだけを取り出したい場合、シンプルな配列で書くことができます。

func getSwiftFiles(files: [String]) -> [String] {
    var result: [String] = []
    for file in files {
        if file.hasSuffix(".swift") {
            result.append(file)
        }
    }
    return result
}

これを抽象化するとFilter関数ができます。

extension Array {
    func filter(includElement: Element -> Bool) -> [Element] {
        var result: [Element] = []
        for x in self where includElement(x) {
            result.append(x)
        }
        return result
    }
}

Reduce

配列内の合計を計算する関数を作るのは簡単です。

func sum(xs: [Int]) -> Int {
    var result: Int = 0
    for x in xs {
        result += x
    }
    return result
}

抽象化してReduce関数ができます。

extension Array {
    func reduce<T>(initial: T, combine: (T, Element) -> T) -> T {
        var result = initial
        for x in self {
            result = combine(result, x)
        }
        return result
    }
}

Putting It All Together

締めとして、map, filter, reduceを使ったささやかな例を紹介します。

都市名と人口を持つ構造体があります。

struct City {
    let name: String
    let population: Int
}

都市をいくつか定義します。

let paris = City(name: "Paris", population: 2241)
let madrid = City(name: "Madrid", population: 3165)
let amsterdam = City(name: "Amsterdam", population: 827)
let berlin = City(name: "Berlin", population: 3562)

let cities = [paris, madrid, amsterdam, berlin]

ここで、100万人以上の人口を持つ都市を人口と一緒に出力したいと思います。

まず、人口の単位を返還するヘルパー関数を定義します。

extension City {
    func cityByScalingPopulation() -> City {
        return City(name: name, population: population * 1000)
    }
}

ここで本章で紹介したすべてのパーツを使って、次のようなコードが書けます。

cities.filter { $0.population > 1000 }
    .map { $0.cityByScalingPopulation() }
    .reduce("") { result, c in
        result + "\n" + "\(c.name): \(c.population)"
    }
Paris: 2241000
Madrid: 3165000
Berlin: 3562000

Swift標準ライブラリの持つmap, filter, reduceをうまくチェーンできました。

Functional Swift 3章 "Wrapping Core Image" まとめ

この章ではCore ImageをfunctionalにラッピングするAPIを構築することで、より実戦的に高階関数と関数合成を利用する方法を学びます。

Filter型

typealias Filter = CIImage -> CIImage

オリジナルの let filter = CIFilter(name: "CIVignette") などのkey値で初期化するCIFilterをカプセル化するためにFilter型を関数として定義。

フィルタの構築

Filter型を定義したので、個別のFilterを定義していく

全て func myFilter("パラメータ") -> Filter の形

Blur

func blur(radius: Double) -> Filter {
        return { image in
            let parameters = [
                kCIInputRadiusKey: radius,
                kCIInputImageKey: image
            ]
            guard let filter = CIFilter(name: "CIGaussianBlur", withInputParameters: parameters) else { fatalError() }
            guard let outputImage = filter.outputImage else { fatalError() }
            return outputImage
        }
    }

引数はぼかしの半径のみです。 CIImage型のimageをとり、新しいCIImageを返す関数(先ほど定義したFilter(CIImage -> CIImage))を返します。 同じパターンで様々なフィルタ関数を定義できます。

Chrome

func chrome() -> Filter {
        return { image in
            let parameters = [
                kCIInputImageKey: image
            ]
            guard let filter = CIFilter(name: "CIPhotoEffectChrome", withInputParameters: parameters) else { fatalError() }
            guard let outputImage = filter.outputImage else { fatalError() }
            return outputImage
        }
    }

*1

フィルタを合成

ここまで作成したぼかしとクロームのフィルタ関数を合成していきます。

let url = NSURL(string: "http://www.objc.io/images/covers/16.jpg")
let image = CIImage(contentsOfURL: url!)!
        
let blurredImage = blur(5.0)(image)
let chromedImage = chrome()(blurredImage)

一度ブラーをかけたimageに新たにクロームフィルタをかけて画像を生成しています。 もちろん一つにまとめることもできますが、括弧が増え途端に読めなくなってしまいます。

let result = chrome()(blur(5.0)(image))

そこで、カスタムオペレーションを定義することで読みやすさを保つことができます。

infix operator >>> { associativity left }

func >>>(filter1: Filter, filter2: Filter) -> Filter {
    return { image in filter2(filter1(image)) }
}


let filter = chrome() >>> blur(5.0)
let result = filter(image)

高階関数、関数合成を使用することによって、安全性、モジュール性、明瞭性を保ったAPIをデザインすることができます。

*1:本書では別のフィルタ関数を使っていますが、複雑になるので引数なしのChromeに変更