B-Teck!

お仕事からゲームまで幅広く

【Rust】Rust勉強-1 普遍的なプログラミング概念

普遍的なプログラミング概念 - The Rust Programming Languageの勉強メモ

1.1.1. 変数

変数宣言には let。デフォルトで不変でmutをつけると可変になる。
変数の参照には & をつける。参照も &mut とすることで可変にできる。
つまり、下記のようにすることで、Stringとして宣言したguessを可変の状態でread_line()に渡す事ができる。

let mut guess = String::new();
io::stdin().read_line(&mut guess)
    .expect("Failed to read line");

1.1.2. Result型

標準ライブラリにはResultと名前のついた型を返す。
Result型はenumで、成功した場合はOkを、失敗した場合はErrを保持する。
enumなのでそれぞれの列挙子から取り出すことも出来るが、Result.expect()を用いることで、
Okを取り出したのと同じ効果を得ることが出来る。
Result型は、Errが返却されたときの挙動を記述していない場合はコンパイラが警告を出す。

1.1.3. println!マクロのプレースホルダ

Rustのprintln!のプレースホルダは、文字列中に含めた{}で表現する。
変数は複数渡すことができ、渡した数に応じて文字列の先頭から{}に相当する値が挿入されていく。

1.1.4. crate

crateはRustのパッケージ。
ライブラリとして読み込んで利用できる。
cargoを利用したプロジェクトであれば、tomlのdependenciesに定義を足すだけで利用できる。
crate内の個別のtraitを利用するときには、スコープ内でuse rand::Rngなどしてやる必要がある

1.1.5. シャドーイング

Rustでは同じ名前の変数に値を上書きして置き換えることが出来るシャドーイングを利用できる。
値の変換などで利用される事が多い。
宣言済みの変数名に対してletで再度宣言することで行える。

1.1.6. タプル

複数の型をひとまとめにする型。パターンマッチングで分解もできる。
let tup: (i32, f64, u8) = (500, 6.4, 1);
タプルの要素に直接アクセスする場合はこう書く

tup.0 // 500
tup.1 // 6.4
tup.2 // 1

1.1.7. 配列型

同じ型をひとまとめにする型。Rustの配列は固定長であることに注意。

let months = ["January", "February", "March", "April", "May", "June", "July",
              "August", "September", "October", "November", "December"];

配列の要素にアクセスする場合は下記。

months[1]; // January

配列外アクセスを行った場合はpanicして終了する。

1.1.8. 関数

関数は文と式を含んだ形で定義される。
式の戻り値は値を返すので格納出来るが、文は戻り値が無い。
関数スコープの末尾の式の戻り値が関数の戻り値となる。
スコープの末尾の式は、行末にセミコロンを書かないことに注意。(書くと文として認識される)
returnキーワードを利用すればアーリーリターンを行うことも出来る。

【雑記】累計50万PVを超えました

実は結構経っちゃったんですが、去る8/5に当ブログのアクセス数が50万を超えていました。
新卒の夏、現場に送り込まれた時期にインプットをまとめる場所として始めたこのブログを、
6年経っても継続できているとは思っていませんでした。

記事の内容こそ雑多で、技術、趣味、人生の事…みたいに適当に書き散らしておりますが、
これからもゆったり続けて100万、200万とこうやってご報告できればいいなと思っています。

あ、あとせっかくの節目なので、ブログのドメインを独自ドメインに切り替えました。
旧アドレスからもリダイレクトで飛べるんですが、一応。
ドメイン変わってからGoogleにうまく認識してもらえずAdSenseはちゃんと動いてないんですが、
そのへんは倒せたらまた記事にでもしようかな…と思ってます。

ともあれ、今後とも宜しくお願いいたします。

f:id:beatdjam:20190824111858p:plain

【雑記】休息、取れていますか?

みなさん、きちんと休息を取れていますか?
4月に異動があった人、研修が終わって配属された新人...
そうでなくても連日のこの暑さで疲れ気味の人は多いと思います。

自分自身の疲れには鈍感になりがちなものです。
「まだ頑張れる」、「もう少しで終わるから」、
そんな言葉で自分をどうにか動かしていませんか?
私はそうでした。

自分の体験。

異動と責任範囲の拡大

4月に異動があり、担当している持ち物が変わりました。
これに付随して、今までよりも広い領域で俯瞰することが求められるようにもなりました。
責任を持って自分が案件や、調査を推進する場面、苦手としていてあまり自分でやってこなかった社内の調整など…

これらはもちろん年齢的にも仕方ない業務ではあるのですが、
その重要度や、元々あまり得意としていなかったことから、
思っていた以上に精神が摩耗していたようです。

疲労の兆候

慣れない業務もあるものの、弱音を吐いてられないなと、
どうにか踏ん張るように仕事をしていたのですが、徐々に疲労の兆候が目に見えて出てきます。

  • 平日、不安や、何かしなければという焦燥感でなかなか寝付けない
  • 土日は疲れからどっぷり寝てしまう
  • 頭の回転が鈍くなり、物事の動き出しが徐々に遅くなる

これらの兆候が出ているにも関わらず、自分自身では「最近ちょっと調子が良くないな」程度にしか感じていませんでした。

少し早めの夏休みを一週間程度取ってみた

職場が夏休みを比較的広い範囲で自由に取得できるので、家庭の事情と合わせつつ少し早めに一週間程度取得しました。
休みの間はあまり仕事について考えず、自分のやりたいことやゆっくり休むことを優先していた結果、
休みが終わる頃にはだいぶ思考がスッキリし、言いようのない焦燥感などが少なくなっていました。 具体的には

  • 思考がクリアになったことで、「自分が疲れていること」を理解できた
  • 自分の疲労状態から、対応できる範囲を検討できるようになった
  • 無理をしないという判断ができることで、精神的な負担の軽減から生活リズムが改善

といった感じです。

業務上仕方ないこともあるけど。。。

業務の上で残業や、踏ん張らなければならないところが現れるのは必然で、避けられないものです。
でも、その波が終わったあとは、一度自分を客観的に見てあげながらメンテナンスしてあげる必要があるのではないでしょうか。
人間は、常に頑張り続けられるようにできてはいません。一度しっかりとした休息を取り、回復させてあげることで、より効率よく仕事をこなすことが出来るはずです。
何より、自分自身が壊れてしまったら元も子もないですからね。

しっかり休んで、効率よく働いていきましょう。