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

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

異なるモデリングパラダイムから見るオブジェクトモデル

a-suenami a_suenami
オブジェクトとは一体何でしょうか?

モデリングパラダイムとしてはオブジェクトの他にもデータモデルの設計によく使われるERモデルやリレーショナルモデル、または関数型言語のベースになっているラムダ計算などがあります。

本発表ではオブジェクトとは抽象データ型であるという立場を基本とし、その他のモデリングパラダイムとどのような共通点・相違点があるのか考察し、異なるモデリングパラダイムの間に生じてしまうインピーダンスミスマッチをどのように最小化していくかについて述べていきたいと思います。
2
他イベントOK ロングセッション

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

クソコード動画

ミノ駆動 MinoDriven
「俺はオブジェクト指向をマスターしている」
そんな勘違いを発症すると何が起こるのか、実体験を踏まえ、おもしろおかしく皮肉った動画です。
動画の中で何がマズかったのか、どうするべきだったのかも解説致します。
1
ロングセッション

Frontend

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

既存プロダクトにも局部的に使えるオブジェクト指向の活用法(ECサイト編)

juriful juriful
※ECサイト: 通販サイト
私は2年間で6つのEC案件に携わった新卒4年目のWEBエンジニアです。短期間に多くのEC案件に携わり、「もっとこうやって実装すればよかった」「あのときこれに気付いていればよかった」と思うことが何度もありました。
ECサイトは、楽天やAmazonなどの通販サイトや、オンライン決済システムなど多くのシステムとの連携が必要です。それに加え、稼働後の追加要求が多いのも特徴です。
変更・追加の多いEC案件は、まさにオブジェクト指向の晴れ舞台です。今回は、ぜひオブジェクト指向を活用してほしいポイントを皆さんにお伝えしたいと思います。
他イベントOK ロングセッション

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

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

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

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

Mathematicaの関数で構築したオブジェクト指向プログラミング環境

kobayashikorio kozukorio
Mathematicaは、項書き換え型言語と呼ばれますが、オブジェクト指向言語であるとはされていません。しかし、実は、基本的な関数の組み合わせで、何らのスクリプトを用いることなく、OOPを実現することができます。
構築されたOOPは、カプセル化、継承、多態性を備えます。また、特別の構文を必要とせず、関数型で表現されます。クラス、メソッド、およびインスタンスも関数型として表現されるゆえに、他のMathematicaのソルバーやグラフィックスと容易に組み合わせることができます。
他イベントOK ロングセッション

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

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

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

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

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

オブジェクトは正義か

森川晃 ariaki4dev
今日、世界では毎秒数え切れない量のオブジェクトが生成・破棄されています。
C言語ではmalloc()を使い明示的にメモリを管理しますが、多くのオブジェクト指向言語ではメモリ管理が隠蔽され、知らぬ間に生成されたオブジェクトに対してメモリ確保と破棄を繰り返しています。
GitHub Octoverse(*)によると、人気言語TOP10(2018年)のうち8つが「オブジェクト指向言語」であり、これらの言語によって生み出されるオブジェクトの維持コストを世界経済視点に考えた場合、無視できないレベルと言えるのではないでしょうか。
私たちは、安易にオブジェクトを生み出すことで、システムリソースやパフォーマンスに悪影響を与えるだけでなく、電気代などを通じて貴重な天然資源を無駄にしているのかもしれません。
多くのプログラマは、自身が何を生み出しているか把握しておらず、また生存期間に対する理解も圧倒的に不足しています。
プログラムにおけるメモリアロケーションの態度を学ぶことは、すべてのエンジニアにとって重要な知識と言えるでしょう。
このセッションでは、代表的な言語を例に挙げ、「オブジェクト」そのものと、ライフサイクルマネジメントにフォーカスして理解を深めていきます。

* GitHub Octoverse
https://octoverse.github.com/projects#languages

2
採択者