Object-Oriented Conference プロポーザル一覧

他イベントOK ロングセッション

Elmで学ぶ、フロントエンドにおける型とドメイン

IzumiSy sy_izumi
近年AltJS界隈で興隆を見せる関数型プログラミング言語であるElm。このトークでは、弊社で7万行の規模で採用されているElmのシンプルかつ必要十分な型システムが、いかにしてフロントエンドのビジネスルールを型で守り、そして型で表現しているかをご紹介いたします。単なる型アノテーションではない、真の静的型付言語がフロントエンドというドメインでどのように価値を発揮するかをご理解いただける内容です。

サーバーサイドと比較して、どのような観点から型レベルでドメインや状態網羅を守る必要があるのか。フロントエンドのドメインをどのように考え、どのように型で表現するべきか、などのトピックを簡単なコードとともにご紹介いたします。

※トークの内容はElmの文法知識などについての言及を少なめにし、Elmを知らない方でもご理解いただける内容にする予定です。
6
他イベントOK ショートセッション

UnitTestを効率的に作り・回す継承

sogaoh sogaoh
今やテストのないプロダクトは大きなリスクを抱えて当然な世情であり、
テストを整備しながら開発を進めることは普通に意識してなければならないと思います。
開発速度をなるべく落とすことなくこれを推進するには工夫が間違いなく必要ではないでしょうか。

自分が現在所属している開発プロジェクトでの実装過程で、UnitTestの量産を支援する、
かつテストデータのコードによる整備を必要最小限に抑えるちょっとした仕組みを編み出しました。

オブジェクト指向プログラミングの特徴の1つである継承を大いに利用したこの仕組みについて、
ご紹介させていただければと思います。
3
他イベントOK ショートセッション

Goのソースコードから読み解くオブジェクト指向プログラミング

adsholoko adsholoko
【概要】
本セッションでは、Go本体のソースコードを紹介しながら、オブジェクト指向プログラミングを解説します。

【背景】
いまやメジャー言語の仲間入りを果たしたGo言語。Go自体のソースコードはGitHubに公開されており、Russ Coxをはじめとする超一流のプログラマが実装に携わっています。そんなGoは構文自体がC言語に近いため、いわゆるオブジェクト指向とは一線を画すと思われがちです。しかし、ソースコードの随所にはオブジェクト指向のプラクティスが幾つか散りばめられています。「Goらしさ」と「オブジェクト指向」が共存したプログラミングの一例をご紹介します。

【こんな方におすすめ】
・ソースコードを見ながらオブジェクト指向を理解したい
・実用(言語処理系)の実装においてオブジェクト指向の使用例を知りたい
※ Goが未経験の方でも解説しながら進行するため、問題ありません
2
他イベントOK ロングセッション

【初心者向け】分かる!オブジェクト指向 ~結局オブジェクトってナニ?~

エンジニアカウンセラー白栁隆司 ShirayanagiRyuj
趣旨:
なんとなくオブジェクト指向を使ってるけど、結局オブジェクトって何なんだろう?
という人の為のセッションです
20年前に、僕がオブジェクトを体得した体験を基にお話します

内容:
3つのパートに分けてお話します
1) オブジェクトって何なのか?
2) オブジェクトとクラスとインスタンスの違い
3) こうすればオブジェクト指向になる、スモールステップ

継承や多態性等については、触れるかもしれませんが深堀はしません

詳細:
自作のスライド資料を使って話していく

(文字数エラーで弾かれたので割愛)

最後に、僕がオブジェクト指向の勉強に役立ったと感じたC/C++の書籍と、継承や多態性、DDD等の先の世界がある事を話して締めたい
2
他イベントOK ショートセッション

クソコード動画「switch文」

ミノ駆動 MinoDriven
「オブジェクト指向など知ったこっちゃない」と言わんばかりに、何も設計せずただただswitch文を書き連ねて行った先の地獄を、実体験を踏まえ、面白おかしく皮肉った動画です。
(参考:クソコード動画「共通化の罠」 https://twitter.com/minodriven/status/1127539251761909760 )

動画の中で何がマズかったのか、設計やチームワーク等の観点で解説致します。
そしてこの動画を他山の石として、実際のチーム開発での活用ポイントについても説明します。
9
ロングセッション

Frontend

kahirokunn kahirokunn
フロントエンドで各タイミングで抱える課題をいくつかリストアップし、項目毎に効果的であろうアプローチを現代エコシステムと合わせて駆け足で紹介しようと思います。
1
他イベントOK ロングセッション

PHPで何でもオブジェクトとして実装したところレスポンスタイムが30秒

樋口雅拓 mahiguch1
リミア株式会社でLIMIAというメディアサービスを開発しています。
サービス開始前、ドメイン設計して、PHPでJavaのように何でもオブジェクトとして実装しました。
すると、レスポンスタイムが30秒程度かかりました。
原因を調べると、オブジェクトの生成に大半の時間がかかっていることが分かりました。

本発表では、初めに上記事例を使って問題定義します。
次に各プログラミング言語におけるオブジェクトの生成コストを比較します。
最後に解決した事例を説明します。

PHPは学習コストが低いため採用が容易で、標準機能が豊富なため開発速度が速いという特徴があります。
しかし、想定外の動きをすることがあります。
この事例を発表することにより、適切な開発言語選択するための情報を提供します。
それでもPHPが好きなんだぁぁぁ!
4
他イベントOK ロングセッション

Mathematicaで一から作り上げるオブジェクト指向プログラミング環境

kobayashikorio kozukorio
Mathematicaは、項書き換え型言語と呼ばれますが、オブジェクト指向言語であるとはされていません。しかし、実は、基本的な関数の組み合わせだけで、一切のスクリプトを用いることなく、OOPを実現することができます。その核心部分がMathematicaで記述された関数の二重呼び出しです。
実現されたクラスそして内部に置かれるメソッドは関数型で表現されるゆえに、コンストラクションはクラス関数の呼び出しとして表され、結果としてインスタンスも関数型で表現されます。
関数型として表現されるゆえに、コンストラクションには連想配列(辞書型)を極めて容易に導入でき、メモリの許す限りの多数の初期化されたインスタンスを生成することができます。
このトークで、たとえMathematicaを知らなくとも、OOPがどのように構成されているかを知ることができます。なぜならば、Mathematicaの関数によりOOPを構成していく過程を見ることで、クラスとメソッドはどのような関係にあるかを知り、どうしてカプセル化が実現されるのかを知り、クラス関数の実行でコンストラクションとインスタンスの関係を知り、複数のクラスの関係から継承とは何かを知り、関数呼び出しの形式からポリモルフィズムを知ることができるからです。ラムダ計算を通じて、クロージャがOOPに包含される様子も目にすることができるでしょう。
そして、OOP環境が関数型として表現されるゆえに、強力なMathematicaのソルバーやグラフィックスと容易に組み合わせることができて、さらには、インスタンスをマルチコアにデプロイすることで並列計算への扉が開かれることを、実例でお示ししましょう。
1
他イベントOK ロングセッション

数理的システム設計-ビジネスと技術制約を繋ぐ手法-

kyon_mm kyon_mm
ビジネスとしても技術としても合意できる、ビジネス対して十分な拡張性を持ったシステムアーキテクチャがほしい。
これを実現するために設計手法をつくってみました。数理的システム設計と呼んでいます。
自分が作りやすい、自分がマネジメントしやすい「やりやすい設計」を避けるための手法となります。
これは既存手法とは異なり、システムレベルでのよい設計をめざすものです。

この実現のために、パタンランゲージの始祖であるクリストファーアレグザンダー氏の理論をソフトウェアシステム設計に取り入れました。
まずシステムレベルでの分析と設計においては、15の幾何学的特性(美しい設計の根源には15の幾何学的な特性があるとアレグザンダーがみいだしたもの)を活用します。
全体性を重んじ、全体と部分をいったりきたりしながら、設計をすすめていきます。そして、その後にパタンランゲージを適用していきます。
他イベントOK ショートセッション

デザインパターンの使い方をパタン・ランゲージとの比較から考える

東口 和暉 hgsgtk
GoF(Gang of Four)のデザインパターンは、我々が日々行う設計行為において基礎的な要素を占めています。ですが、一方で「デザインパターンをなんとなく知っている」状態から「デザインパターンを正しく使う」状態へ向かうには、大きな壁があると感じています。
その壁をどうよじ登れるかを考える上で、デザインパターンが何に影響を受けたのかを理解することは大きなヒントになるはずです。それは、建築家アレグザンダーの「パタン・ランゲージ」という概念です。「パタン・ランゲージは何を解決しようとしたのか」・「デザインパターンとパタン・ランゲージの差異は何か」といった点を理解することで、デザインパターンのより深い理解に繋がります。
そこから、デザインパターンにおいて「理解すればいい点」と「実践値から磨くべき点」がそれぞれどこなのかを抑える、使い方の言語化を試みます。
13
  • 1
  • 2
  • 3
  • 4 (current)
採択者