朝日ネット 技術者ブログ

朝日ネットのエンジニアによるリレーブログ。今、自分が一番気になるテーマで書きます。

AWS LambdaとAmazon EventBridgeを利用してAWSリソース削除/停止を自動で定期実行する

はじめまして、サービス基盤部のmokzkmです。今回はAWSについての内容です。

私が取り組んでいる、「AWSリソース削除/停止の自動定期実行」についてご紹介します。 今回はAWSについてあまり馴染みのない方でもわかるように参考資料も載せているので、そちらも是非ご参照ください。

続きを読む

オブジェクト指向を5年間理解できなかった人間がオブジェクト指向を説明する(第2回)

※9/16 タイトルを変更しました。

こんにちは。開発部社員のjiweenです。

前回 は本連載の概要とモチベーション、前提知識について解説しました。今回は本連載の結論として、オブジェクト指向を実践する上で重要な3つのルールを提案します。今回提案するルールが実際にどう応用されるのか、既存のパターンをどう説明できるのかは第3回以降で説明します。

今回の記事は抽象的な記述で言語機能を否定する分かりづらい部分があります。抽象的な記述に慣れない方は、今後公開される第3回以降も併せて読むと分かりやすいかと思います。

続きを読む

オフショア開発を4年間続けた成果と課題

開発部のm1calです。過去にオフショア開発について言及している記事がありますが、開発部における取り組みについてもう少し詳しく紹介しようと思います。

開発部では2018年度よりオフショア開発を採用しており、ベトナムのソフトウェア開発会社と契約しています。 私は昨年8月に前任者より引継ぎオフショア担当となり、オフショア開発案件の全体的な管理を担当しています。

  • オフショア開発採用の目的
  • オフショア開発体制
  • オフショア開発の進め方
  • オフショア開発を採用した成果
  • オフショア開発の課題
    • 認識齟齬による不具合増加
    • 案件依頼時の負担
  • 課題解決への取り組み
    • 認識齟齬による不具合増加への対策
    • 案件依頼時の負担への対策
  • 採用情報

オフショア開発採用の目的

開発コスト低減の目的以外に、大規模開発案件で朝日ネット社員のみでは要求されている期日にスケジュール的に難しい場合や並行して複数の開発案件を進める必要がある場合など開発活動の量産体制を強化するためにもオフショアを利用しています。

続きを読む

GHC 9.2 で導入されたQuick Look型推論アルゴリズムについて

初めまして、朝日ネット開発部の hogeyama です。 今回は Haskell の中級的なトピックとして、 GHC 9.2 で導入された Quick Look 型推論アルゴリズムを取り上げようと思います。

概要

Haskell のデファクトスタンダードなコンパイラである GHC では通常の多相(ジェネリクス)の一般化である非可述的多相(impredicative polymorphism)を実装していますが、その型推論アルゴリズムは長らく「型推論が弱い」「実装が不安定でコンパイラのバージョンアップでデグレが起きる」といった問題を抱えていました。

しかし昨年10月、Quick Look という新しいアルゴリズムが GHC 9.2 に実装されたことでこの問題が解決しました。 本記事ではこの Quick Look によって何が変わるのか、利用する際に何に気をつければよいのかを非可述的多相の概要から始めて説明していきます。

  • 概要
  • 復習:いわゆる普通の多相について
  • 可述性による制限
  • これまでのGHCにおける非可述的多相
    • 型推論が弱い
    • コンパイラバージョン間で互換性がない
  • Quick Look 型推論アルゴリズム:これからのGHCにおける非可述的多相
    • アイデア
    • 型推論能力の高さ
      • Maybe の例
      • -> の例
    • GHCの変更への強さ
  • 推論に失敗するケースと対処方法
    • ヒントの探索が打ち切られてしまう場合
    • 間違ったヒントを見つけてしまう場合
  • 代償
  • まとめ
  • 参考文献
  • 採用情報
続きを読む

オブジェクト指向を5年間理解できなかった人間がオブジェクト指向を説明する(第1回)

※9/16 タイトルを変更しました。

はじめまして。朝日ネット2021年度新卒社員のjiweenです。

オブジェクト指向は今や普通にプログラミングをしていれば必ずと言っていいほど遭遇するありふれた概念ですが、とても一筋縄ではいかない奥の深いプログラミングパラダイムでもあります。オブジェクト指向に悩まされ夜も眠れない全ての人のために、本連載ではなるべく初学者の目線からオブジェクト指向を分析し、オブジェクト指向を実践するための考え方を提案します。6回程続く長い連載になりますがお付き合いいただけると幸いです。

第1回 (今回) では全体の概要とモチベーションについての話をさせていただき、前提知識や仮定の確認を行います。第2回では本連載の結論として、オブジェクト指向設計における重要な考え方を説明します。第3回以降では、結論の具体的な説明と実践的な知識のため、GoFデザインパターンと呼ばれる設計パターンの分析を行います。

続きを読む

Haskellと余代数(Coalgebra)

ここではHaskellの中級者向けのトピックを簡単に取り上げたいと思います。

今回は余代数(Coalgebra)についてです。Haskellを書いていると『余(なんとか)』という言葉をみかけることがあります。これは英語の接頭辞 Co- の訳で、ここでは代数(Algebra)の双対(Dual)という意味で余代数と呼ばれています。

さてHaskellやOCamlのデータ型は一般に代数的データ型(Algebraic data type)と呼ばれます。このデータ型にパターンマッチングを加えて、(オブジェクト指向言語などと比較したときの)関数型言語の特徴と紹介されることも多いと思います。実はこのデータ型にはもともと余データ(Codata)と呼ばれるような相方がいたのですが、人類が扱うには早すぎたのか、データ型に比べると余データは長らく影の存在でありました(ちなみに余データは口語上はコデータと呼ぶかもしれませんが、ここでは文章なので余データと書くことにします。)

続きを読む

Haskellで図を作成してみましょう (その3)

開発部のgedokuです。

HaskellをeDSLのホスト言語として使うことの魅力を、作図を通じて伝えるシリーズの第二弾です。

  • 前書き
  • 図結合入門
  • 今回使う図結合の仕方
  • 目標に近づける
    • ノード二つを配置
    • ノードの塗りつぶし(寄り道)
    • 3つ以上のノードの配置
    • ノード配置の相対的な指定
      • 合成可能性 (1) の修正
      • シフトのハードコード (2) の修正
      • さらなる改善?
  • まとめ
  • 次回予告
続きを読む