タグ

ブックマーク / techblog.kayac.com (73)

  • Perlでいかにして短いコードを書けるかを考えてみる - KAYAC Engineers' Blog

    この記事はTech KAYAC Advent Calendar 2020の9日目の記事です 技術部1年目サーバサイドエンジニアのkoluku(コルク)です。 この記事ではPerlでコードを書くための思考過程や実践的なテクニック(やっちゃだめなテクニック)を織り交ぜながらいかにしてコードを短くできるかを紹介してみたいと思います。 FizzBuzz問題 みなさんはFizBuzz問題をご存知でしょうか。 FizzBuzz問題とは、 1〜100までの数字を順に出力を行い、その数が3で割り切れるならFizz、5で割り切れるならBuzz、そのどちらでも割り切れるならFizzBuzzと代わりに標準出力(文字表示)する という問題です。プログラムを書くことがある人は一度は書いたことはあると思います。 この問題では出力が改行ありなしの指定が無いのでここでは(都合がいいので)改行ありということにしておきます。

    Perlでいかにして短いコードを書けるかを考えてみる - KAYAC Engineers' Blog
    peketamin
    peketamin 2020/12/10
  • Lambdaを使ったサーバレス構成の社内アプリのデバッグのためにX-Rayを使ってみた - KAYAC Engineers' Blog

    12月も終盤、2019年も終盤、令和元年も終盤です。みなさんいかがお過ごしですか。ソーシャルゲーム事業部ゲーム技研の谷脇です。 この記事はTech KAYAC Advent Calendar 2019の24日目の記事です。 Migration Trackの方で結構書いたので、こっちは何書こうかなーとなったんですが、あえて小ネタでAWS Lambda使う時のTipsな感じで行きます。 AWS Lambdaのデバッグがしんどい件 僕はサーバレス・コンテナ以前からWebのサーバ開発をやっている人間なもので、動いているやつをダイレクトにソースコードいじってバグを直した経験があります。そこまで野蛮な方法を取らなくても、sshで入ってリクエスト叩きながらログを読んだり、プリントデバッグを仕込むなどの手段を使って、とにかくなんとか直す手段を持っていました。 しかし、コンテナでsshを封じられ、サーバレス

    Lambdaを使ったサーバレス構成の社内アプリのデバッグのためにX-Rayを使ってみた - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/24
  • GoのDBライブラリと俺たち、それからsqlla - KAYAC Engineers' Blog

    年末ですね。カヤックでは360度評価の時期でもあるので、みんな振り返りだとか内省などの言葉がいたるところで飛んでいます。この記事でも今年の出来事を振り返りしてみたいと思います。どうも、ソーシャルゲーム事業部ゲーム技研の谷脇です。 この記事はTech KAYAC Advent Calendar 2019 Migration Trackの20日目の記事です。19日目はAWS Lambda Node.js runtime の EoL に疲れたので Go にしていっている話でした。 この記事のあらまし あるWebサービスを作るプロジェクトORMを切り替えた 開発言語はGo言語 DBライブラリ/ORMgithub.com/xo/xoを使っていました ですが開発途中から、私が作成したライブラリであるgithub.com/mackee/go-sqllaに乗り換えました どっちもコード生成系だけれど、

    GoのDBライブラリと俺たち、それからsqlla - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/21
  • ひたすらWebサイトを見るのが趣味な私が独断と偏見で選ぶ今年「良い!」と思ったWebサイト16選 - KAYAC Engineers' Blog

    どうもみなさまおはようございます。あるいはこんにちは。あるいはこんばんは。 KAYAC Advent Calendar 2019の18日目の記事を担当します、フロントエンドエンジニアのたがみです。普段はwebサイトを作ったり動かしたりぶっ飛んだものにしたりしなかったりしています。 去年は私のその時の推しライブラリだったVuetifyについてこのブログを通じて布教したのですが、今年も今の推しライブラリの話をするぜ!・・・と、意気込んでいたのですが。「というか日頃からWebサイト事例収集しまくってるから、今年の素敵だと感じたサイトを振り返るか」と思いついちゃいましたので今年は推しのWebサイトの話をしようと思います。 というのも、私は去年入社してからデザインや演出や作りが素敵なWebサイトを見つけては自分のツイッターに「このWebサイトが良い!」というのをひたすら垂れ流すというのを日常的にやっ

    ひたすらWebサイトを見るのが趣味な私が独断と偏見で選ぶ今年「良い!」と思ったWebサイト16選 - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/19
  • カレーライスを綺麗に食べる方法 - KAYAC Engineers' Blog

    はじめに この記事はTech KAYAC Advent Calendar 2019の19日目の記事です。 こんにちは。 技術部の中山といいます。 普段は、ぼくポケチームで、 開発・運用をする上で必要な作業の自動化をしたり、効率化できる部分を改善するという仕事をしています。 要するに仕事の無駄をなくすということをしているのですが、そういう仕事をする中で、 大学3年生のときに学で「カレーを綺麗にべる方法」というのを 研究していたことを思い出したので紹介しようと思います。 仕事の効率化もカレーを綺麗にべるのも「無駄をなくす」という点では同じです。 べ物で遊んでいるように感じる方もいらっしゃるかもしれませんが、 ここで述べる方法は「美味しく綺麗にべる」というのを大事にしています。 決して遊んでいるわけではありません。 実際の写真 まずこの画像をご覧ください。 これは、弊社が手がけるまちの

    カレーライスを綺麗に食べる方法 - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/19
  • AWS Lambda Node.js runtime の EoL に疲れたので Go にしていっている話 - KAYAC Engineers' Blog

    SREチームの藤原です。Tech Kayac Advent Calendar Migration Track 19日目の記事です。いよいよ年も押し詰まってきましたね…! AWS Lambda、使ってますか?最近はサーバーレスという文脈で取り上げられることも多い Lambda ですが、カヤックではそこまでサーバーレスにこだわることはせず、主にイベントドリブンな処理に適切なユースケースに使用しています。 Lambda のリリース当初に用意されていたランタイムは Node.js のみでした。カヤックで最近使うことが多い言語である Go, Ruby のランタイムがサポートされたのが比較的最近だったということもあり、Node.js の Lambda function が比較的多く存在している状況でした。 Node.js EoL (End of Life) ところで、技術基盤チームのリポジトリで「La

    AWS Lambda Node.js runtime の EoL に疲れたので Go にしていっている話 - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/19
  • マルチテナントなサービスにおける認証と権限管理 - KAYAC Engineers' Blog

    こんにちは!技術部の小池です。 この記事は Tech Kayac Advent Calendar 15日目の記事です。気付いたらもう12月も半分じゃないですか…もう今年の営業は終わりにしてお酒飲んで年越しを迎えたい気分ですね〜。 今回はマルチテナントなサービスにおける認証と権限管理についてのお話です。 要件 今回お話するサービスはカヤックグループ全体に提供する予定のマルチテナントのサービスです。カヤックの文化を支える 360度フィードバック、スマイル給 などの複数のサービスが協調して動作するというサービス指向的なアーキテクチャで、既存のカヤック社内サービス群のリニューアルプロジェクトでもあります。 カヤックグループ向けに提供するサービスなので、認証をしないことには利用することはできません。また、カヤックの社員が他のグループ会社の情報を見れてしまうというのも困ったことになってしまうので、組織

    マルチテナントなサービスにおける認証と権限管理 - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/16
  • Unityで80年代風を表現してみる - KAYAC Engineers' Blog

    80年代風作例。ユニティちゃんモデル及びシェーダーを使っています。© UTJ/UCL こんにちは! CL事業部の原です。 この記事は Tech KAYAC Advent Calendar 2019 の13日目です。 今回はUnityで80年代風を表現するということにチャレンジしてみました。 80年代風と言っても、レトロゲームを再現するという意味ではありません。 80年代風イラストの雰囲気を表現したいと思います。 80年代リバイバルブームとは ここ数年、80年代リバイバルな表現がファッションやデザイン、映画などでブームになっていたことはこれを読んでいるみなさんにも思い当たるところがあると思います。しかし、この現象を包括的にまとめたような記事文献は見つけることができませんでした。なので、個人的体験から80年代リバイバルブームを追ってみます。 80年代リバイバル表現との出会い:tofubeats

    Unityで80年代風を表現してみる - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/13
  • 10年以上続いたサービスを終了させた - KAYAC Engineers' Blog

    SREチームの竹田です。Tech Kayac Advent Calendar Migration Track 12日目の記事になります。 今年2019年9月にTHANKSというサービスを閉じました。 実はこのサービス、10年以上前に自分が設計開発したサービスなのです。 運営・開発が入れ替わる形で自分の手は離れていましたが、最後は自分の手元に戻りクローズ作業をすることになるとは...感慨深いものがあります。 全世界に向けて「ありがとう」を発信!「THANKS」リリース (ニュースリリースは2006.11.28ですが同年の7月にサイトは公開されたような記憶がある。13年近く続けていたってことですね。) リリース当時の事を思い出してみると フロントはFlashでサーバサイドはAPIのみ ブログバーツ(なつかしい!)にもAPIを提供 1台のサーバ内に複数サービスが同居 リリース直後にブログパーツが

    10年以上続いたサービスを終了させた - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/12
  • ゲーム内お知らせをHugo+Netlify CMS+CircleCIで作りました - KAYAC Engineers' Blog

    鎌倉は寒いです。みなさんはいかがですか。ソーシャルゲーム事業部のゲーム技研チームの谷脇です。 この記事はTech KAYAC Advent Calendar 2019 Migration Trackの10日目の記事です。9日目はデーモン管理をdaemontoolsからsystemdに移行させるでした。 ゲーム内お知らせとは みなさんは、スマートフォンのゲームをされますか。ええ、そこのあなたはよくされる。しかし、そちらの方はあんまりされない。なるほどなるほど。 では分かる人にはおさらいとして、あまりピンとこない方にはそんなことがあるのか〜となってもらうために説明させていただきます。 我々カヤックでゲームを運営している人々が「お知らせ」を指した場合、ゲーム内のある機能を示しています。他のゲームではニュースなどとも呼ばれています。 カヤックで作っているゲーム「ぼくらの甲子園!ポケット」(以下ぼく

    ゲーム内お知らせをHugo+Netlify CMS+CircleCIで作りました - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/11
  • 誰も置いていかないシェーダーはじめの一歩 - KAYAC Engineers' Blog

    この記事はTech KAYAC Advent Calendar 2019の10日目の記事です。 こんにちは! jsdo.itCreativeCodingの世界を知り、jsdo.itに惚れて入社を決め、jsdo.itの譲渡とともに入社し、jsdo.itの終了とともに退職した有給消化期間中の浅利(@kasari39)です! 今回はシェーダーの世界へ一歩踏み出してみませんか?という内容です。 *1 シェーダーコーディングの世界 作品例として手前味噌ですが、このような映像をシェーダーのみで生成できます。 http://glslsandbox.com/e#59292.1 http://glslsandbox.com/e#59293.0 これらは100行にも満たないシェーダーから生成されています。 こんな短いのにこんな豪華な見た目が出るなんて面白いですよね。 それでは一歩踏み出してみましょう! 開発

    誰も置いていかないシェーダーはじめの一歩 - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/10
  • 人間の行動を操るために覚えておきたい科学 - KAYAC Engineers' Blog

    この記事はTech KAYAC Advent Calendar 2019の4日目の記事です。 こんにちは。技術部平山です。 この記事では、人の行動を操る、つまり、人の行動を予測したり、望みの行動を取らせるために役立つ科学について 軽く紹介いたします。プログラミングの話はございませんが、 プログラマに読みやすい味付けにはしておきました。 なお、「人を操る」とか言っていますが、実際それで思うように操れるのであれば、 私はもっと裕福だったでしょうし、高い地位を得ていたことでしょう。 理屈と実践は異なるということです。 ただ、これを知って気が楽になる方もいらっしゃるかもしれませんし、 もしかしたら、実際に何かを改善させられるかもしれません。 基的には与太話ですので、お暇な方のみお付き合いください。 予測に使える理論は、制御にも使えるかもしれない 何かしらの理論によって現象が予測できるのであれば、

    人間の行動を操るために覚えておきたい科学 - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/04
  • 【Go】同名フィールドを持つ構造体をEmbeddingするとどうなるのか - KAYAC Engineers' Blog

    この記事はTech KAYAC Advent Calendar 2019の3日目の記事です。 新卒サーバサイドエンジニアの宮村 紅葉です! 普段はGoゲームサーバをゴリゴリ書いています。 はじめに GoにはEmbeddingと呼ばれる機能があります(日語では「埋め込み」と書かれることが多いと思いますが、この記事ではEmbeddingと記述します)。このEmbeddingは便利ですが「複数の構造体を使ってEmbeddingした際に同名のフィールドが存在する」と思わぬ罠にハマります(私は最近ハマった笑)。ハマったからにはネタにせねば!ということで書いていきます!! Embedding 同名フィールドを明示的に参照 まずEmbeddingして埋め込んだ構造体のフィールドを参照してみましょう。以降は S1 S2 Embedding 構造体を前提に説明します。なお説明のためにあえて Duplic

    【Go】同名フィールドを持つ構造体をEmbeddingするとどうなるのか - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/03
  • 秘伝のredash v1.0.3 から redash v8.0.0 on ECSになるまで - KAYAC Engineers' Blog

    この記事はTech KAYAC Advent Calendar 2019 Update/MigrationTrack 3日目の記事です。 昨年のAdvent Calendarで闇のredash の記事を書いていたゲームコミュニティ(Lobi)事業部の自称データエンジニアの池田です。今回も、redashについて記事を書いていきたいと思います。 redashは様々な種類のデータソースにアクセスできる、OSSの素晴らしいダッシュボードツールです。 2017-01-31にv1.0.0-rc.1のリリースされて以来開発が続けられており、この前の2019-10-27にv8.0.0 がリリースされました。 今後もビジネスインテリジェンスの現場でのダッシュボードツールの選択肢として利用され続けることでしょう。 ゲームコミュニティ事業部でのRedashの課題 私の所属するゲームコミュニティ事業部でも、以前

    秘伝のredash v1.0.3 から redash v8.0.0 on ECSになるまで - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/03
  • MongoDBであるメリットが無くなってしまったのでMySQLに移行したはなし - KAYAC Engineers' Blog

    SREチームの長田です。 この記事はTech Kayac Advent Calendar Migration Track 1日目の記事です。 今回はLobiで使用していたMongoDBMySQLに移行したはなしです。 MongoDBを何に使っていたか DAUなどのKPIレポートや、サービスの状況を把握するための各種集計結果を保存するために使っていました。 サービス開始直後はこれらの数字を色々と試行錯誤しながら追加したり、減らしたりしていました。 頻繁な追加削除があるデータ構造を保存するために、スキーマレスなデータベースであるMongoDBはちょうどよかったようです。 (当時スキーマレスデータベースが流行っていたというのもあるでしょう) なぜ移行したのか MongoDBに保存されたドキュメントは、スキーマ管理がされていませんでした。 スキーマレスであることをいいことに、その時時によって様々

    MongoDBであるメリットが無くなってしまったのでMySQLに移行したはなし - KAYAC Engineers' Blog
    peketamin
    peketamin 2019/12/02
    もんご
  • C#に潜むstructの罠 - KAYAC engineers' blog

    こんにちは。技術部平山です。 この記事ではC#のstructを使った際にはまった罠について書きます。 Unityでの体験を軸にお話しますが、Unityに限ったことではないかと思います。 お急ぎの方のために結論を申しあげますと、structを使うなとなります。 どうしてもstructを使いたい気分になった時に、罠にはまって時間を無駄にする覚悟をした上で使いましょう。 未来に活きる良い失敗ができると思いますし、最終的には製品の性能も上がるとは思いますが、 structを使わないといけない理由は、たぶんありません。なくても製品は作れます。 しかし、一回もstructと書かなかったとしても、C#で書く限りstructからは逃れられないのです。 (2019/04/10) 末尾に話を単純化しすぎた点について補足をいたしました。 structとは C#の型にはclassとstructがあります。 ...

    C#に潜むstructの罠 - KAYAC engineers' blog
    peketamin
    peketamin 2019/04/10
  • Unityの複数解像度SafeArea対応で楽をするためには - KAYAC engineers' blog

    モバイル向け開発は機械が様々です。 解像度は様々、アスペクト比も様々です。 最近は一部画面が欠けていて、ある範囲(SafeArea)に収めないと映ること保証しないよ、 という機械まで出てきました。 さて、これにどう対応するのが楽か? 技術部平山が、 弊社東京プリズンで行った手法をベースに、一つの例を示します。 こんなの ここではこんな例を見てみます。 この画面には5つの要素があります。 緑の楕円ウィンドウ。上寄せでsafeArea内にボタンを置きたい。画面幅に対する比率を一定にしたい。 青の楕円ウィンドウ。左寄せでsafeArea内にボタンを置きたい。画面高さに対する比率を一定にしたい。 赤の楕円ウィンドウ。safeArea内の中央に置きたい。どんな解像度でも画面内に収めたい。 右のキャラ絵。safeArea無視して右下寄せで置きたい。どんな解像度でも画面内に収めたい。 背景。画面全域を埋

    Unityの複数解像度SafeArea対応で楽をするためには - KAYAC engineers' blog
    peketamin
    peketamin 2019/02/18
  • Vueでもっと幸せになりたいあなたへ。VueのUIコンポーネントライブラリVuetifyのススメ - KAYAC engineers' blog

    どうもみなさまおはようございます。あるいはこんにちは。あるいはこんばんは。 KAYAC Advent Calendar 2018の12日目の記事を担当します、今年1月に中途入社しましたエンジニアのたがみです。 前職ではサーバーサイドのSEとして業務系のwebアプリを開発したり運用したりしていましたが、今はクライアントワークのフロントのエンジニアとしてwebサイトを作ったり動かしたりぶっ飛んだものにしたりしなかったりしています。 今回は、そんな私がフロントエンドになったばかりの頃に仲良くなった思い入れのある言語、Google App Scriptの話を!・・・・・・と、つい二日前までは、思っていたのですが。 Google先生を訪ねて色々と検索していたところ「あれ・・・なんか・・・Vuetifyについての日語記事、実は少ないのでは・・・?」と気づいてしまったのです。 (もしかしたら気のせいか

    Vueでもっと幸せになりたいあなたへ。VueのUIコンポーネントライブラリVuetifyのススメ - KAYAC engineers' blog
    peketamin
    peketamin 2018/12/12
  • フロントエンド開発に Babel も Webpack も必要ない ※ - KAYAC engineers' blog

    できらぁ! 面白法人カヤックのエンジニアのごんです。 昨今のフロントエンドといえば、 Todo アプリを作るにも Webpack やら Babel やら必要だと脅され、 始める前にうんざりしてしまうと話題ですが、 実は、最新のブラウザに限って言えば、そんなことはなく、 ECMAScript の新しい構文や JavaScript Modules など、 多くの機能がネイティブの状態でも使えます。 もちろん、古いブラウザのサポートや、通信パフォーマンスのことを考えると、 ビルドツールを使ったほうが良いのは間違いないのですが、 JavaScript の新しい機能に触れてみたり、自分用のツールを作るぶんには十分でしょう。 ソースコードはこちら! そんなわけで、今回はビルドツールなしでウェブアプリを作ってみました。 ECMAScript に関するクイズゲームです。 最新版の Google Chrom

    フロントエンド開発に Babel も Webpack も必要ない ※ - KAYAC engineers' blog
    peketamin
    peketamin 2018/01/17
  • Dockerで開発環境構築を10倍楽にしたはなし - KAYAC engineers' blog

    Lobi事業部 サービス基盤チームの長田です。 最近プロジェクト内で使用する開発環境にDockerを利用するようになったので、その紹介をします。 Dockerにしたってどういうこと? 公開済みのWebサービスに変更を加えて動作確認をする場合、番環境でそれを行うわけにはいきません。 ほとんどの場合はローカルマシンでWebサービスの全体または一部のコピーを動かして動作確認を行うことでしょう。 その後ステージング環境などの他の開発メンバーも触ることができる環境で動作確認やQAを行い、 問題がなければ晴れて番環境に反映、という流れが一般的かと思います。 この「ローカルマシンでWebサービスのコピーを動かす」部分にDockerを利用している、ということです。 Dockerにしてどうなった? Before 開発環境構築に1〜2日かかっていた After 開発環境構築がランチに行っている間に終わるよ

    Dockerで開発環境構築を10倍楽にしたはなし - KAYAC engineers' blog
    peketamin
    peketamin 2017/10/27