一般社団法人 全国個人事業主支援協会

MEMBER メンバー

  • Rustにはデフォルトで自動テストツールがcargoに搭載されている。
    ベーシックなテスト機能が一通りそろっているので、これらでガリガリテスト書いていけばよいと思う。

    基本的には以下のコマンドで実行する。
     

    cargo test
     

    関数へ#[test]で注釈することで、テスト関数へと変更することが出来る。
     

    #[test]
    fn hoge() {
    …[…]

  • Rustの型での共通のふるまいを定義できる機能。他言語のインターフェースに近い。
    定義としては以下

    pub trait Hoge {
        fn hogehoge(&self) -> String;
    }

    上記トレイトを実装するとこのような形になる

    pub struct Fuga {}

    impl Hoge for Fuga {
        fn hogehoge(&self) {}
    }

    トレイトは実装する際には、トレイ[…]

  • 抽象的な型の概念。

    Javaとかでも実装されている機能。Vecなどの、宣言時におけるTという抽象的な型。(Tには何の型でも入力できる)

    関数シグニチャで用いた場合、以下のように宣言する。

     

    fn hoge(list: &[T]) -> T {

     

    慣習として最初のジェネリクス型へは、T(Typeの頭文字)を用いる。

    同一の文字列で定義した型には同一の型が入力される。同一文字列のジェネリクス型へ別の型を入力した場[…]

  • Rustには例外機能が存在しない。
    そもそも例外とは
    私が業務経験した中だとJava、Python、C#と多くの言語で存在している機能。
    プログラムを実行した際に発生しうる特定エラーを検知し、プログラムを終了することなく処理を続行する。
    構文としては以下のようなイメージ

    try {
        hogehoge();
    } catch Exception {
        fugafuga();
    }

    tryブロック内でエラーが発生[…]

  • 各データ構造はヒープ領域にデータを確保する為、実行時に要素数の変更等が行える。

    ベクタ

    特定のデータ型を挿入可能な可変長のリスト。

    let vector: Vec = Vec::new();
    let mut vector = vec![1, 2, 3]; // マクロを利用した初期化

    // 更新する際にはpushメソッドを使用する
    vector.push(4);
    vector[…]

  • クレート
    Rustのコンパイルの単位。コンパイラの開始地点となるクレートルートを保持し、
    コンパイルすることで関連した機能群を一つのスコープにまとめることが出来る。

    パッケージ
    ある機能群を提供する1つ以上のクレート。Cargo.tomlでパッケージをどのようにビルドするかを定義する。
    0個か1個のライブラリクレートを保持する(2個以上はダメ)。バイナリクレートはいくらでも持っても大丈夫。
    ライブラリでもバ[…]

  • Rustでは値が存在するか不在かという概念をnullではなくenumで実現する。
    pub enum Option {
        None,
        Some(T),
    }
    上記のNoneはあくまでenumの列挙子であり、[…]

  • 列挙型(enum)…型が取りうる値をすべて列挙しパターン化することが出来るデータ型。各列挙子へ値を格納できる。例えばIP。

    enum IpAddr {
        V4(u8, u8, u8, u8),
        V6(String),
    }
    let home = IpAddr::V4(127, 0, 0, 1);
    let loopback = IpAddr::V6(String::from(“::1”));[…]

  • Rustにはクラスの概念はない。C言語と同様に構造体が存在する。
    構造体…データの集合に名前を付けることで型として扱うことが出来る。オブジェクト指向言語におけるメンバだけで構成されたクラス(アクセス修飾子は定義できない)。
    struct User {
        username: String,
        email: String,
        sign_in_count: u64,
        active: bool,[…]

  • 所有権
    Rustの特徴的な機能。ガベージコレクションとはまた違うメモリ管理機能。

    所有権のルール
     

    Rustの値は、所有者と呼ばれる変数と対応している
    いかなる時も所有者は一つである。ムーブで保証する
    所有者がスコープから外れたら、値は破棄される。dro[…]

  • 概要
    Cargoは、Rustのビルドシステム兼、パッケージマネージャである。(JavaだとMavenやGradle、Node.jsだとNpmやYarnあたりのツール)
    TOMLという、簡便な設定言語で記述したCargo.tomlファイルにライブラリの依存関係を記述し、同階層に存在するsrcディレクトリ内のソースと記述された依存関係に基づいたビルドを行う。
    cargo new
    新規プロジェクトをカレントディレクトリ内に作[…]

  • Rustの公式で、WSLインストール手順を実施し、HelloWorldプロジェクトを作成
    $ curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh
    $ source $HOME/.cargo/env
    $ cargo new hello-rust
    $ cd hello-rust/
    $ cargo run
    cargo run[…]

  • 便利な割に自分の周りで広まってないので、ここでメモしておく。
    PostgreSQLの現場でかなり使用していた。(mysqlは8以降でないと使用できないらしい…)

    基本構文
    WITH table_name AS (query)

    宣言した”table_name”で、クエリ内で一時ビューを作成することが出来る。

    例:①
    WITH tmp_hoge AS (SELECT * FROM hoge)
    SELECT[…]

  • 全体のシステムとして以下の2種類のサービスがある。

    マネージド型

    スケーリング、可用性などをAWS側で管理されているタイプのシステム
    AWS側で行うため管理が容易
    RDS、S3など

    アンマネージド型

    スケーリング、可用性の内容などをユーザーが独自で設定する必要があるタイプのシステム
    ユーザー自身で管理する必要がある
    EC2など[…]

  • Amazon VPC
     

    Amazon Virtual Private[…]

  • 初めまして。
    フリーのSEを営んでおります。渡邉と申します。

    今後、こちらのブログで、現在、私が生業としております、
    ITに関する話題を記載したいと思います。よろしくお願いします。

    拙い内容ながら、以下の内容を展開していこうと考えております。

    AWSに関するTIPS

    色々な事情で触れることが多いので備忘録も兼ねてます

    学習したいプログラミング言語に関するTIPS

    業務[…]

  • WATANABE REN さんのプロフィールが更新されました。 4年 11か月前

  • WATANABE REN さんがプロフィール写真を変更しました 4年 11か月前

  • さらに読み込む
一覧へ戻る