TwitterFacebookRSS Feed

Anti-Pattern Inc. Engineering Blog

Anti-Pattern Inc.(株式会社アンチパターン)のエンジニアブログです。

「自分がやらなきゃ」から始まったPOSSEフェス。仲間とつくり上げる中で気づいたこと

はじめに こんにちは!株式会社アンチパターンの内定者インターンとして、POSSEの運営をしている根岸です。 今回は、2026年10月24日に開催された「POSSEフェス2026」の企画・運営を通じて感じたことや、学んだことについてお話ししたいと思います。 POSSEについて まずは、私が普段活動しているPOSSEについてご紹介します。 POSSEは、大学生がプログラミングを学びながら、チーム開発やさまざまな活動を通して成長していくコミュニティです。 私はPOSSEの4期生として約4年間活動してきました。また、先ほど述べたように現在は株式会社アンチパターンの内定者インターンとして、POSSEの運営にも携わっています。 普段は、POSSE生一人ひとりが活動を通してさまざまな経験や学びを得て、よりよい人生を歩んでいけるよう、カリキュラムやイベントの企画・運営などに取り組んでいます。自分自身もPOSSE生として活動しながら、ほかのPOSSE生にとって価値のある経験や学びの機会をつくることに関わっています。 POSSEの詳細はこちら↓ https://posse.community/
根岸旺花
根岸旺花
12 min read
Ontology

SaaSを題材にしたオントロジーを作ってみようシリーズ #3.5 番外編 セマンティックレイヤー

作ったオントロジーは、結局どこで使うのか? セマンティックレイヤーという考え方を、手を動かして理解する 今回は番外編です。新しいクラスは1つも追加しません。 前回は、FeatureとEntitlementを導入しました。あわせて、Tenantから見たhasEntitlementと、Entitlementから見た entitledTenantという、逆プロパティのペアも定義しました。 ここでいったんクラスを増やす手を止めて、そこまでに作った語彙が実際どこで役に立つのか を確かめます。というのも、ここまで3回クラスを増やしてきて、そろそろこう思っている方がいるはずだからです。 これ、作ったはいいけど、結局どこでどう使うの? たとえば、実際の業務では次のような問いが出てきます。 株式会社ABCというテナントは、SaaSの機能としての販売管理機能を使えるのか? この質問に答えるために、あなたは今、どうしますか? ・請求管理システムの契約画面を開いて確認する? ・社内の管理DBにSQLを投げる? ・Slackでカスタマーサクセスに聞く? どの方法でも答えは出ます。
Akihiro YAGASAKI
Akihiro YAGASAKI
30 min read

Japan AWS Jr. Champions から Top Engineers へ

アンチパターンのryudaiです! 昨年の2025 Japan AWS Jr. Championsとしての活動を、今年2026 Japan AWS Top Engineersに選出いただいた視点から振り返っていこうと思います。
Ryudai Anada
Ryudai Anada
2 min read
Ontology

SaaSを題材にしたオントロジーを作ってみようシリーズ #3 どの機能が使えるのか?

オッス!おらやぎぃ! 第3回目になりました! ここまで読んでいただいている方は、きっとSaaSというものの構造についてかなり詳しくなっているのではないでしょうか?! 第2回は、テナントをベースとしたさらなる深掘りをしてみました。 第3回は、そのテナントがどんな機能を使えるのか?使っても良いのか?というのを考えていきたいと思います。 よくあるSaaSは、料金プランやオプションなどがあって、契約しているプランによって、テナントごとに使える機能や量が決まっていたりすると思います。それをどのように表現していくのか?を考えていきたいと思います。 0. 権限があっても使えない? FeatureとEntitlementで「契約上使える機能」を表現する 前回までに、B2B SaaSの利用構造と権限構造を作りました。 Organization └── usesTenant └── Tenant ├── Membership │ └── User │ ├── Workspace │ └── Re
Akihiro YAGASAKI
Akihiro YAGASAKI
40 min read
Ontology

SaaSを題材にしたオントロジーを作ってみようシリーズ #2 組織の単位など

こんにちは! 第1回目はいかがでしたでしょうか?!難しかったですかね? だとしても、第2回を読もうとしていただいて、ありがとうございます! 第2回は、さらにモリモリの内容になっちゃいましたが、テナントをベースとしたさらなる深掘りと、オントロジーの活用例の第一歩として実際にクエリをしてみたいと思います! クエリには、「SPARQL」というクエリ言語を使います。突然登場して混乱するかもなので、「SPARQL」を初めて聞いたという方は、 * SPARQLって結局何なの?実際にRDFデータに問い合わせしてみて勉強しよう! [https://tech.anti-pattern.co.jp/whatisspaeql/] という別のブログを書いておりますので、まずこちらをざっと眺めてみてください! そしてさらに!「SHACL」というものも登場してきます。これは、ざっくり言うと「RDFデータが期待する形になっているかを検証するための言語」なのですが、こちらについても * SHACLって結局何なの?実際にデータを検証してみて理解する [https://tech.anti-pat
Akihiro YAGASAKI
Akihiro YAGASAKI
27 min read
Ontology

SHACLって結局何なの?実際にデータを検証してみて理解する

オントロジー関連の記事を読んでいると、いきなり「SHACL」というものが当たり前のように登場します。 「SPARQL」と違うの?なにそれ?って感じになったりしますよね。 たとえば、 saas:WorkspaceShape a sh:NodeShape ; sh:targetClass saas:Workspace ; sh:property [ sh:path saas:workspaceBelongsToTenant ; sh:minCount 1 ; sh:maxCount 1 ; sh:class saas:Tenant ; ] . こういうコードが、説明なしにいきなり出てきます。 しかし、「これは何をしているのか」「これはどうやって動かすのか」が分からないまま読み進めるのは、正直つらいと思います。ぼく自身も、最初にこれを見たとき、完全においていかれました。 この記事は、そのおいていかれた気持ちを解消するための記事です。SHACLだけに絞って、それが何であり、どうやって実際に手
Akihiro YAGASAKI
Akihiro YAGASAKI
7 min read

自力でSQLチューニングした経験は、AIの答えを疑うための武器になる

サイロをプールに変える、という仕事 こんにちは、Anti-Patternの塚本です。 以前、サイロ化していたデータベースを共通のプール(統合基盤)へ移行するプロジェクトを担当した。 1つの基盤に集約すれば、当然そのぶん1つのテーブルが抱えるデータ量は一気に増える。データは繋がって扱いやすくなる一方で、それまで問題なく動いていたクエリが、量に負けて遅くなっていった。 当時、いまのようなAIは無かった。だから、やることは全部手作業だった。 * EXPLAIN ANALYZE を取って実行計画を読む * どこで Seq Scan が出ているか、Nested Loop が何回まわっているかを目で追う * インデックスを見直す * SQLそのものを書き換える * 不要になったテーブルの結合を削る 一つ直しては計画を取り、また直しては計画を取る。地味で、時間のかかる作業だった。 それでも、遅いクエリが速くなっていく手応えは確かにあった。 ----------------------------------------------------------------------
takeshi tsukamoto
takeshi tsukamoto
7 min read
Ontology

SPARQLって結局何なの?実際にRDFデータに問い合わせしてみて勉強しよう!

0. この記事の目的 「SPARQL」に関して書いてある記事等には、こういうコードが、特に説明もなく登場したりしますよね。 PREFIX saas: <https://example.com/ontology/saas#> SELECT ?workspace ?workspaceName WHERE { <https://example.com/data/tenant-abc> saas:containsWorkspace ?workspace . ?workspace saas:name ?workspaceName . } PREFIX、SELECT、WHERE、?workspace。見た感じSQLに似ている気もしますが、確信が持てないまま読み進めるのは、なかなかつらいものです。 この記事は、その手前の部分を埋めるための記事です。SPARQLだけに絞って、それが何であり、どうやって実際に手元で動かすのかを、説明します! ※この記事は、RDF・RDFS・OWL・Turtleについて説明済みの前提で書きます。まだの方は、先に RDF・RD
Akihiro YAGASAKI
Akihiro YAGASAKI
7 min read
Ontology

SaaSを題材にしたオントロジーを作ってみようシリーズ #1 テナント

0. このシリーズの目的 昨今、セマンティックレイヤー・オントロジーなどの記事がそこそこ盛り上がっている気がします。生成AIの時代になってきて、どちらも重要かつ実用的になってきたからかと思います。 しかし!いざ、オントロジーをやってみよう!と思っても、かなり内容が難しく、結局どうして良いのかわからない、これで正しいのかわからない、などハマりがちかと思います。少なくともぼくはハマりまくってます。 そこで!実際に自分たちが常に触れている、「B2B SaaS」を題材にしてオントロジーを作ってみて、使ってみて、理解を深めよう!というテーマで連載をしていきたいと思います。だいたい、10回くらいでまとめられればと思っておりますが、もっと多くなってしまうかもしれません。。。 そして、この連載が終わるころには、「SaaSっていったら、ベースとしてのオントロジーってこれだろ」っていうのがそこそこできているはずです。はずです。それを、「SaaSオントロジーv0」と呼ぼうと思います。そのうえで、v0を実際のみなさまのSaaSに当てはめて拡張して、おのおののSaaSのベースオントロジーを作って活用して
Akihiro YAGASAKI
Akihiro YAGASAKI
16 min read
Ontology

RDF・RDFS・OWL・Turtleの違いを整理して、ファイルで理解するオントロジー入門

「オントロジーを勉強し始めたけれど、RDF、RDFS、OWL、Turtleの違いが分からない」 これは、たぶんオントロジー初心者が最初につまずきやすいポイントです。少なくとも、ぼくはこれらが出てきたときに思考が止まりました。。。 なので、これらだけをザックリ解説する記事になっております。 特に混乱しやすいのが、次のような疑問です。 * RDFとOWLは別のファイル形式なのか * .ttlファイルはRDFなのかOWLなのか * ex:とは何を意味するのか * URIはどのように決めればよいのか * RDF/XMLでは、なぜURIの書き方が場所によって違うのか この記事では、社員と会社を表す小さなサンプルを使いながら、これらの関係を順番に整理します。 最初はつらいですが、がんばって途中まで読んでみてください!なんとなく、わかった気になるはずです。 そして意外だったのは、オブジェクト指向プログラミング言語を触ったことがある方々は、理解しやすいかもですので、その観点でも読んでみていただけますと幸いです。 ※途中で出てくるオントロジーのファイル(.ttl)を、グラフとし
Akihiro YAGASAKI
Akihiro YAGASAKI
13 min read

外部サーバー不要!Slack次世代プラットフォームでランダムメンションBotを作った話

Slack Platform @Bot メンション ▼ Trigger Event: AppMentioned ▼ Workflow 入力を受け渡すパイプライン ▼ Function コマンドパース・選出ロジック ▼ Datastore ▼ members メンバー管理 config 選出モード設定 round_robin_state ラウンドロビン状態 ※ 外部サーバー・DB不要。すべてSlack内で完結
Takashi Uchida
Takashi Uchida
5 min read

データベースストレージエンジン B+treeとLSM treeについて

こんにちは、アンチパターンの山本です。 現在「Build Your Own Database From Scratch in Go [https://build-your-own.org/database/#table-of-contents] 」という記事を読んで、原子性(全部成功するか何もしなかった状態にする)と耐久性(電源落ちても消えない)を持ったデータベースをGo言語で実装するというのを勉強中です。 その中でMySQL にも使われているB+treeと、もう一つのデータ構造であるLSM treeがとても面白かったためブログにまとめました! まず、そもそもデータベースの用途は、大きく分けてこの2つに分類されます。 * OLTP(オンライン・トランザクション処理) スマホアプリやECサイトのように、「1件の登録」 「1件の更新」など細かい大量の読み書きを捌くシステム。MySQLやPostgreSQLがそうです。 * OLAP(分析処理) 大量のデータから「過去1年間の顧客単価」などを計算するシステム。こちらでは「列指向(カラムナー)ストレージ」という全く別のデ
Ami Yamamoto
Ami Yamamoto
4 min read