Javaから見たSwiftとの違い ~for文編~
こんにちは。今回はSwiftネタです。
最近C#とSwiftに一気に手を出してしまったため、苦悶の日々を過ごしております(笑)
両方ちょっとだけ触ってみる予定だったのに…
そんなわけでSwiftに挑戦しているわけですが、よく分からないところが多い!
さらに、Swiftはバージョンがどんどんあがってるようで、今使われているのはSwift3というものだそうです。
そのため、ググってみても古い情報だった、なんてことがよくあります。
『ちょっと手を出したかっただけなのに、苦しめやがって、このやろう!』な気分なので、苦しめられたところをメモしていこうかな、と思います。
今回は、第一回としてfor文を扱っていこうと思います。
本記事をお読みの方へ
ここで注意点ですが、この記事はJavaなどのC言語的文法をもった言語から見ての感想が大いに含まれています。なぜなら私はJavaしか使ったことがない趣味のプログラマーだから。
ほかのもっとモダンな言語使いのプロフェッショナルな方々には、鼻で笑われてしまうような内容となっておりますので、これを読まずにもっとましなものをお読みください。
それでは参りましょう!
for文の基本構文
みなさん、for文使いますか?
うんうん、そうですよね、使いますよね!
巷では、for文を使わなきゃプログラミングしてるとは言わない、と言われてるとか言われてないとか。
ということで、Swiftでfor文を書こうと思うわけですが、これが一癖あります。
Javaではfor文は以下のようになります。
int a = 0; for(int i = 0; i < 10; i++){ a += i; }
aに0から9までを足し続けるという、びっくりするぐらいのくそコードですが、その際そんなことはどうだっていいんです(笑)
C言語もC#もほとんど一緒です。しかし、Swiftではこうなります。
var a = 0 for i in 0 ..< 10{ a += i }
for文が全然違うじゃないか!ってなりませんか!?
あっ、なりませんか。すいません。
少なくとも私はそう思いました。
forをいつものように書くとXcodeが怒ります。
おい、Cっぽい書き方をやめないか!的なエラーがでて驚かされます。
ここでぐぐってみると、Swiftにはモダンなforの書き方があって、上のものがそうだ、と知りました。
ちなみに、0..<10 は 0≦i<10 を、0...10は 0≦i≦10 を表すそうです。
上のソースを見ると、ちゃっかり型推論が使われています。varってなんかすごいなー、という気分になります。
色々なfor文
上に書いた書き方は、1ずつ増やして処理したい(i++する)時でしか使えません。ではそのほかの場合ではどうなるのでしょうか。
Javaと比較しながら書いておきます。見出しがJava的な書き方となっております。
for(i = 0; i < 10; i +=2)と書きたいとき
for i in stride(from : 0, to : 10, by : 2)
for(i = 0; i <= 10; i +=2)と書きたいとき
for i in stride(from : 0, through : 10, by : 2)
for(i = 10; i >= 0; i -=2)と書きたいとき
for i in stride(from : 0, through : 10, by : 2).reversed()
まとめ
stride()を使えば、刻み幅を変えることができます。toなら~未満を、throughなら~以下を表しています。
徐々に減らしていく処理では、最後にreversed()を付ければよいそうです。
ネットの記事ではよくreverse()とされていますが、そう書くとXcodeに怒られました。
最後に
いかがでしたでしょうか。今後もよく分からないところが出ましたら、その都度書いていこうと思います。
こういう書き方もあるよ!とかここは違うよ!といったアドバイスをいただけると、大変助かります。
ではまた。
Shawn MendesのThere's nothing holding me backを和訳してみた
There's nothing holding me backを和訳してみました。
訳がしっくりこないところが少しありますが、良い訳がありましたらご指摘いただけるとありがたいです。
There's nothing holding me back
I wanna follow where she goes
彼女の行くところについて行きたいな
I think about her
彼女のことを考える
and she knows it
それに、彼女もそれを知ってる
I wanna let her take control
彼女に僕を支配させたい思うんだ
'Cause everytime that
she gets close, yeah
だって、彼女はいつも寄り添ってるから
She pulls me
in enough to keep me guessing
彼女は僕が考えちゃうぐらいひっぱるんだ
And maybe I should stop
and start confessing
そして多分僕は考えるのをやめて打ち明け始めるべきだね
Confessing, yeah
打ち明けよう
Oh, I've been shaking
おお、震えてるよ
I love it when you go crazy
僕は君がクレイジーになるときが好きなんだ
You take all my inhibitions
君は僕の理性を奪う
Baby, there's nothing
holding me back
ああ、もう僕を引き止めるものは何もないよ
You take me places that
tear up my reputation
君は僕の名声を破るような場所に連れて行くよ
Manipulate my decisions
僕の決意を操るんだ
Baby,
there's nothing holding me back
ああ、僕を引き止めるものはもう何もないんだよ
There's nothing holding me back
僕を引き止めるものは何もないんだ
There's nothing holding me back
僕を引き止めるものは何もないよ
She says that she's never afraid
彼女は恐れたことなんかないって言うんだ
Just picture everybody naked
みんなが裸だって想像するだけ
She really doesn't like to wait
彼女はほんとに待つのが嫌いなんだ
Not really into hesitation
ためらったりしないんだよ
Pulls me
in enough to keep me guessing
彼女は僕が考えちゃうぐらいひっぱるんだ
And maybe I should stop
and start confessing
そして多分僕は考えるのをやめて打ち明け始めるべきだね
Confessing, yeah
打ち明けてしまおう
Oh, I've been shaking
おお、震えてるよ
I love it when you go crazy
僕は君がクレイジーになるときが好きなんだ
You take all my inhibitions
君は僕の理性を奪う
Baby, there's nothing
holding me back
ああ、もう僕を引き止めるものは何もないよ
You take me places that
tear up my reputation
君は僕の名声を破るような場所に連れて行くよ
Manipulate my decisions
僕の決意を操るんだ
Baby,
there's nothing holding me back
ああ、僕を引き止めるものはもう何もないんだよ
there's nothing holding me back
ああ、僕を引き止めるものはもう何もないんだよ
'Cause if we lost our minds
だってたとえ僕たちが理性を失って
and we took it way too far
突き進みすぎたとしても
I know we'd be alright,
大丈夫だって知ってる
I know we would be alright
大丈夫だって知ってるんだよ
If you were by my side
もし君が僕のそばにいて
and we stumbled in the dark
たとえ暗闇の中でよろめいたとしても
I know we'd be alright,
大丈夫だって知ってる
I know we would be alright
大丈夫だって僕は知ってるんだよ
'Cause if we lost our minds
だってたとえ僕たちが理性を失って
and we took it way too far
突き進みすぎたとしても
I know we'd be alright,
大丈夫だって知ってる
I know we would be alright
大丈夫だって知ってるんだよ
If you were by my side
もし君が僕のそばにいて
and we stumbled in the dark
たとえ暗闇の中でよろめいたとしても
I know we'd be alright,
大丈夫だって知ってる
I know we would be alright
大丈夫だって僕は知ってるんだよ
Oh, I've been shaking
おお、震えてるよ
I love it when you go crazy
僕は君がクレイジーになるときが好きなんだ
You take all my inhibitions
君は僕の理性を奪う
Baby, there's nothing
holding me back
ああ、もう僕を引き止めるものは何もないよ
You take me places that
tear up my reputation
君は僕の名声を破るような場所に連れて行くよ
Manipulate my decisions
僕の決意を操るんだ
Baby,
there's nothing holding me back
ああ、僕を引き止めるものはもう何もないんだよ
there's nothing holding me back
ああ、僕を引き止めるものはもう何もないんだよ
I feel so free
とても自由に感じるよ
when you're with me, baby
君が一緒にいるときはね
Baby,
there's nothing holding me back
ああ、もう僕を引き止めるものは何もないよ
思わず聞き入ってしまいますね。
ではまた。
Xamarin.Formsでlabelのテキストを動的に変更する
初歩中の初歩ですが、ググっても欲しい情報が一発ででなかったため、ここにメモします。
C#もxamlも初めて触るので、何もかも分からないのです。やっぱり最初は入門書を読むべきかな?!
方法
任意のxamlファイルに(今回はMainPage.xaml)Labelを追加します。
Textタグに記入した文字は、初期値として表示されます。
Nameタグにより、要素に名前を付けるようです。今回はLabelTextという名前にしました。
MainPage.xaml
<Label x:Name="LabelText" Text="Hello, world!" />
あとは、csファイルに処理を加えるだけです。
MainPage.xaml.cs
LabelText.Text = "Good job!"
(要素名).Textにて、要素内の文字列を制御できます。Buttonなど他の要素でも一緒です。
まとめ
非常に簡単です。AndroidのならfindViewByIdで、いちいちidを取得する、という行程を経なければなりませんが、C#ではこれがないため、すっきりとした見た目になったな、と感じます。
これを調べた際に、XamarinのSamplesが非常に役立ちました。今まで、分からないことはすぐググる、という手順で書いておりましたが、Xamarinの場合は、まずサンプルを見てみる、という方が良さそうです。
Samples - Xamarin
ではまた。
Milley CyrusのMalibuを和訳してみた
Malibuを和訳してみました。
Malibuとは、アメリカ カリフォルニア州の地名で、映画『猿の惑星』にて自由の女神像が登場するシーンの撮影が行われたそうです。
この歌のように、優しく美しいところなのかな?
Maribu
I never came to the beach,
私、ビーチに来たことなかったわ
or stood by the ocean
海のそばに立つことも
I never sat by the shore,
岸のそばで
under the sun with my feet
in the sand
足を砂に埋めながら太陽のもとに座るなんてしたことなかったわ
But you brought me here
でも、あなたがここへ連れてきたの
and I'm happy that you did
私はそれがうれしいのよ
'Cause now I'm as free
as birds catching the wind
だって今は風をとらえる鳥のように自由だもの
I always thought I would sink,
沈んじゃうんじゃないか、っていつも考えてた
so I never swam
だから泳いだことなかったの
I never went boatin',
ボート遊びに行ったことなかったし
don't get how they are floatin'
それがどうやって浮いてるかなんて分からないわ
And sometimes I get so scared of
what I can't understand
それに時々、分からないってことがとても怖いの
But here I am, next to you
でもここには私がいて、隣にはあなたがいるわ
The sky's more blue in Malibu
マリブの空はずっと青いの
Next to you in Malibu
マリブにはあなたが隣にいる
Next to you
あなたの隣
We watched the sun go down
二人で太陽が沈んでいくのを見たわ
as we were walking
一緒に歩きながら
I'd spent the rest of my life
standing here talking
残りの人生をここに立って話しながら過ごしたいわ
You would explain the current,
あなたが海の流れのことを説明するなら
as I just smile
私はただ微笑むのよ
Hoping that you'll stay
the same,
あなたはずっとそのままでいてほしい
and nothing will change
それに何も分からないでほしい
And it'll be us,
それは私たちだった
just for a while
たった少しの間
Do we even exist?
私たちは存在さえするの?
That's when I make the wish,
そう願ったのはその時なの
to swim away with the fish
魚と一緒に泳いだ時
Is it supposed to be this hot all summer long?
この暑い夏は長く続くはずだった?
I never would've believed you
あなたを信じることはなかっただろうな
if three years ago you told me
もし3年前あなたが私に言ってたら
I'd be here writing this song
ここでこの曲を書くって
But here I am, next to you
でもここには私がいて、隣にはあなたがいるわ
The sky's more blue in Malibu
マリブの空はずっと青いの
Next to you in Malibu
マリブにはあなたが隣にいる
Next to you
あなたの隣
Next to you
あなたの隣
The sky's so blue in Malibu
マリブの空はずっと青いの
Next to you
あなたの隣
We are just like the waves
that flow back and forth
私たちは後ろに前に流れる波のようね
Sometimes I feel like
I'm drowning
時々おぼれているように感じるわ
And you're there to save me
そしてあなたは私を救うためにそこにいるの
And I wanna thank you
with all of my heart
心からありがとうって言いたいわ
It's a brand new start
それは真新しい始まり
A dream come true in Malibu
マリブで夢はかなったわ
いい曲ですね。
ではまた。
Martin JensenのSolo Danceを和訳してみた
Solo Danceを和訳してみました。初めてやってみたので、間違った部分もあるかもしれませんが、ご容赦ください。
Solo Dance
In the faded light
薄暗い明かりの中
You touch my body
君は私の体に触れた
I can feel your hands on my skin
君の手を肌に感じたわ
Think you're got me right
Where you want me
君は思い通りに私をゲットしたと思ってるでしょ
But you're just in my way
でも、君はただ私の思い通りになったのよ
I came the party on my own
パーティーには一人できたの
Don't need nobody in my song
私の歌に誰もいらない
I get down to the beat
私の鼓動に集中して
I loose control
私はコントロールを失うの
Hey oh I go
So so lo
Boy you can cool it down
君、クールダウンしなよ
I'm here to fool around
私はバカ騒ぎするためにここにいるの
Just wanna dance, dance, dance
Dance, dance, dance
ただダンスしたいの
I know you want me
君が私をほしいのは知ってる
But I don't care baby
でもそんなの関係ないのよ、ベイビー
Just wanna dance, dance, dance
Dance, dance, dance
私はただ踊りたいだけなの
Dance, dance, dance
Dance, dance, dance
Dance, dance, dance
In the shade of light
明かりのかげで
You're moving closer
君は近づいてくる
We're on our way
to cross the line
一線を越えようとしてるわ
Think you've got me right
Where you want me
君は思い通りに私をゲットしたと思ってるでしょ
But it's all in your mind
でもそう思うのは君だけだよ
I came the party on my own
パーティーには一人できたの
Don't need nobody in my song
私の歌に誰もいらない
I get down to the beat
私の鼓動に集中して
I loose control
私はコントロールを失うの
Hey oh I go
So so lo
Boy you can cool it down
君、クールダウンしなよ
I'm here to fool around
私はバカ騒ぎするためにここにいるの
Just wanna dance, dance, dance
Dance, dance, dance
ただダンスしたいの
I know you want me
君が私をほしいのは知ってる
But I don't care baby
でもそんなの関係ないのよ、ベイビー
Just wanna dance, dance, dance
Dance, dance, dance
私はただ踊りたいだけなの
Dance, dance, dance
Dance, dance, dance
Dance, dance, dance
Dance, dance, dance
ではまた。