書いてイミュータブルなオブジェクトを実装しようイミュータブルという言葉を知っていますか?プログラミングにおける重要なキーワードの1つらしいのですが、私は知りませんでした。例にとって考察しようと思います。イミュータブルとはイミュータブル(immutable)とは、日本語で「不変」という意味の言葉です。イミュータブルなオブジェクトと言ったら、状態が変わらないオブジェクトのことを指します。イミュータブルなオブジェクトは状態が変えられないため、変数のオブジェクトを更新する場合は、オブジェクトを作り直さなければいけません。イミュータブルなオブジェクトにするのかなぜわざわざオブジェクトを作り直すのでしょうか。イミュータブルなオブジェクトを使用する利点は、いくつか考えられます。以前の状態を簡単に再現できるイミュータブルなオブジェクトは、状態が変化しないことが保証されているため、そのオブジェクトを保持しておくだけでいつでも元の状態を再現することができます。データの更新を簡単に検出できるイミュータブルなオブジェクトは、前と同じオブジェクトを参照している限り、状態も変化していないことがわかります。そのため、オブジェクトが持っているすべての状態を1つずつ取り出して比較する必要がありません。構築することで、効率的な再レンダーが可能になります。※詳しくは、Reactのガイドで説明されています。おいて、文字列や数値、真偽値等のデータは絶対的にイミュータブルです。そのため、これらのデータを扱う場合はイミュータブルを意識する必要はありません。※こちらの資料で詳しく説明されています。一方で、オブジェクトや配列は中の状態が変えられるため、基本的にイミュータブルなデータではありません。3]オブジェクトや配列をイミュータブルなデータとして扱いたい場合は、少し工夫が必要です。基となるオブジェクトの状態は変えずに、新しい状態を持った別のオブジェクトを作成し、古いデータと置き換えて使用します。使えるようになった新しいメソッドです。(1段階の深さのコピー)した新しいオブジェクトを返します。メソッドを使うことで、元の配列を変更せずに要素を結合したり、元の配列を変更せずに要素を切り取ったり、非破壊的な配列操作が可能になります。等のメソッドは元の配列を直接変更してしまうため、イミュータブルな配列には使用できません。他に、オブジェクトのプロパティや配列の要素に値を直接代入するようなコードも、イミュータブルなデータ更新では使うことができません。データの変化を伴うメソッドのことを破壊的メソッド、データの変化を伴わないメソッドを非破壊的メソッドといいます。イミュータブルなオブジェクト操作では非破壊的メソッドを使いましょう。上記のメソッドは、コピー元のプロパティがオブジェクトを参照している場合、参照の値のみをコピーします。オブジェクトを別の変数に代入する際も、参照の値をそのまま代入して、同じオブジェクトを参照するようにしています。trueこのように同じオブジェクトを参照することで、オブジェクトの状態が等しいかどうかを簡単に調べることができます。オブジェクトを1から作り直すわけではないので、メモリが無駄に使用されることもありません。スプレッド構文でより簡潔にオブジェクトや配列をイミュータブルなデータとして扱うコードは、スプレッド構文を使ってより簡潔に書くことができます。使えるようになりました。まとめオブジェクトの状態は変えず、新しく作り直すようにすることで、イミュータブルなオブジェクトを実現することができました。使えるようになった新しいメソッドやスプレッド構文を活用して、イミュータブルなオブジェクトを実装しましょう。サービスをご存知でしょうか。Googleあるイベントサイトを作成して、このサービスで読み込み時間を計測したところ、17秒という非常に悪い結果が出てしまいました。静的なサイトを作成して、画像の総容量も1MB以下なのになぜ...とずっと悩んでいたのですが、画像を圧縮しなおしてみたところ、すんなり5秒以下に改善しました。画像の圧縮がうまくできていなかっただけのようです。当日スタッフとして参加してきました。ついでに、大阪観光もしてきました。松本から高速バスで大阪まできました。電車で名古屋まで行って乗り継いだ方が早いのですが、私は特急しなのの揺れが苦手で耐えられません。大阪に着いたらノープランで歩き回ってましたが、結構楽しかったです。一蘭のラーメンは2回替え玉したが...ホテルに戻って少ししたらお腹がピーピーでした6月2日:WordCampWordCampはとても盛り上がりました!お世話になった方やはじめましての方、多くの方とお話できましたグッズもたくさんもらいましたスタッフとしての参加ですがセッションもいくつか見られました懇親会の写真は撮るの忘れました二次会もあったみたいですが、前日に調子こき過ぎてお腹の調子が悪いのと、WordCampでも調子こき過ぎて周りに無礼を振り撒いてしまったので、自重して寝ます。ありがとうございました。ライセンスの話をしました。自分自身、登壇したことでとても勉強になったので、内容を整理したいと思います。できるソフトウェアのことです。目的を問わないというところがミソでして、営利目的でソフトウェアを販売したり軍事目的でソフトウェアを実行したりできるわけです。ソースコードをオープンソースとして利用するにはオープンソースライセンスが必要です。オープンソースライセンスとは、ソースコードの利用に対する許可または許可証のことです。オープンソースライセンスには、ソースコードの著作権情報や利用条件等の内容が含まれています。基本理念として、以下に挙げる4つの自由を保証しています。自由というのは、これらのことをしてもいいししなくてもいいという意味です。これらの自由がすべての利用者に与えられるように、コピーレフトという手法を採用しています。ソフトウェアを再配布する際には、同じライセンスを適用しなければなりません。コピーレフトは、利用者の自由を保証するために著作権を使います。著作権表示も、ソフトウェアを配布するのに必要です。いう表記が必ず含まれます。ここでいう配布とは、一般公衆に利用可能とすること等を指し、Webサービスとして実行することやクライアントに納品することは含まれません。著作権表示が必要になるわけではありません。いう表記は消さないようにしています。リンクを推奨しています。減るものでもないし、これくらいの表記は残してあげてもいいんじゃないかなと思います。ようなファイルには適用されません。以外のファイルには、どのようなライセンスでも適用することができます。呼び、強く推奨しています。逆に、ファイルによってライセンスを使い分けることをスプリットライセンスと呼びます。テーマ等をスプリットライセンスで配布することは、法的には問題ありません。保証する4つの自由の良さが薄れてしまいます。あることが条件になります。これほど発達したと、創始者の方も仰っていたそうです。派生物を安心して利用しましょう。どのような目的で実行、研究、コピーや共有、改変しても良い。適用して、利用者の自由を保証しなければならない。移行したことで運用コストが全体的に下がりました。無料なので、ほぼ独自ドメインにかかる費用だけで運用できるようになりました。導入したりメールを送れるように設定したり、導入時の手間は増えました。更新したりプラグインやテーマをインストールしたり、楽になった部分も大きいので、やはり結果的には運用しやすくなったと思います。(1)四次元のおともだちホームブログお問い合わせこのサイトについて「四次元のおともだち」は、二次元ではないけどマニアックな情報を発信するサイトです。