技術ブログ株式会社エーピーコミュニケーションズの技術ブログです。エーピーコミュニケーションズの技術ブログです。>はじめに先進サービス開発事業部の山岡です。#6のレポートを書きたいと思います。SearchをJavaで書いたchannelが無いので汚くなるかと思ったが、CompletableFutureを使うことで案外奇麗に書けたただJavaだと複数のクラスを理解しないといけないので、初見だとGolangより手間がかかるchannelだけ知っていれば同等のコードが書けるGolangのシンプルさ凄いオブジェクト指向ではない構造体の埋め込み等を使えばそれっぽく書けるけど、闇が多そうわざわざオブジェクト指向で書く必要は無いんじゃないかな質疑ジェネリクスが欲しくなることはありますか?月に何度もあるが、Golangに入ってはGolangに入ろうと思っている真面目にある程度時間かけて向き合った言語はGolangだけで他の言語をよく知らないので興味深かったです。Searchを書いてみようと思います。GAEやDatastore使っててもよく感じますが「アレができない、他所のプロダクトではできるぞ」だけでなく、なぜそれができないのか・できない事によるメリットが何かについて意識を向けてみるのが良いのではと思っています。優れている」は必ずしも成り立ちません。Codeという概念は何度か聞き覚えがあり、自動化・効率化の話題でよく耳にする「機械にできることはなるべく機械にやらせて価値を生む時間を最大化しよう」を実現する方法の一つであると思います。GolangからHCLを扱えるライブラリがあるのは知らなかったので今度何かツールを作る機会があれば選択肢の一つに加えてみます。自分の理解を深めることも兼ねて少し私なりに解説します。長さは不変なもので、何らかの事情で長さが不足する場合はもっと長い別の配列を作り既存の内容をそこへコピーしなければなりません。いうarrayを可変長配列かのように扱える機能が提供されています。(cap)」の3つから構成されており、特段指定しない作り方をした場合はlenとcapが同じサイズで作られます(下記参考コード参照)。append()という関数を使うとsliceを拡張する(つまり内部のarray末尾へデータ追加する)ことができるのですが、capを超える拡張を行おうとした場合は新しいarrayが生成されポインターがそちらに変更されます。3https://play.golang.org/p/8_IBYZNaMN4そしてGolangの引数は基本的に値渡し(コピー)でありsliceも例に漏れませんが、このコピー時点では内部で持っているarrayへのポインターは同じアドレスになります。append時にcap不足でarrayが再生成されると元々同じarrayを参照していた2つのsliceが別のarrayを指すようになってしまうため、こういう挙動が発生します(この辺が文章だと大変ややこしいのですが......)。※冒頭にも書きましたが後日資料が公開されるそうなので詳しくはそちらを参照して下さいこの手のわかりにくい挙動は「どうすると何が起こるか?」よりも「どうしてこうなるのか?」をきちんと理解することが非常に重要です。いったストックが沢山あるほどハマった時に救われやすくなるので積極的に情報収集したいと思います。@kitasukeさん技術的に高度過ぎてついていけませんでした......。