SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
takemikamiʼs note ‒ http://takemikami.com/
rdflintのvscode拡張の紹介とその実装⽅法
RDF language support via rdflint について
Copyright (C) Takeshi Mikami. All rights reserved. 1
三上 威 - @takemikami
アーリース情報技術株式会社 代表取締役 社⻑
VS Code Meetup #14 - 拡張機能作る、作った編
2021.8.30 @online
takemikamiʼs note ‒ http://takemikami.com/
はじめに
• テーマ
rdflintのvscode拡張の紹介とその実装⽅法
• 内容
• rdflintとvscode拡張の紹介
• rdflintのvscode拡張の実装⽅法
Copyright (C) Takeshi Mikami. All rights reserved. 2
本LTで紹介する内容を説明します
RDF language support via rdflint
https://marketplace.visualstudio.com/items?itemName=takemikami.vscode-rdflint
takemikamiʼs note ‒ http://takemikami.com/
⾃⼰紹介 業務と経歴
• 三上威 (@takemikami)
• データエンジニア・サイエンティスト
• 分析・予測モデル開発・基盤構築 etc
• 対象: マーケティングデータ etc
• 略歴
• 甲南⼤学理学部応⽤数学科 卒
• EC, CRM等のシステム構築 @ NEC系SIer
• ECサイトのマーケティングデータ分析 @ DeNA
• データ分析・予測モデル開発・基盤構築 @アーリース情報技術(株)
Copyright (C) Takeshi Mikami. All rights reserved. 3
発表者のプロフィールを紹介します
※フリーランスの法⼈成り
takemikamiʼs note ‒ http://takemikami.com/
⾃⼰紹介 開発プロダクト/技術同⼈誌
• 開発プロダクト @GitHub
• rdflint
• RDFデータのチェックツール
• https://github.com/imas/rdflint
• digdag-plugin-shresult
• ワークフローエンジン「Digdag」のプラグイン
• シェルスクリプトの標準出⼒を変数に格納するオペレータ
• https://github.com/takemikami/digdag-plugin-shresult
• 技術同⼈誌 @Booth/技術書典
• Apache Airflow ワークフロー プログラミング⼊⾨
• Apache Spark ビッグデータクエリチューニング
• Apache Hadoop & Spark ビッグデータプログラミング⼊⾨
Copyright (C) Takeshi Mikami. All rights reserved. 4
発表者が作成したプロダクト/執筆した同⼈誌を紹介します
https://takemikami.booth.pm/
takemikamiʼs note ‒ http://takemikami.com/
rdflintとvscode拡張の紹介
Copyright (C) Takeshi Mikami. All rights reserved. 5
takemikamiʼs note ‒ http://takemikami.com/
rdflintとは
• 次のチェックが⾃動化出来る
• XML/RDF、Turtle(ttl)ファイルの⽂法チェック
• 未定義の主語が、⽬的語として使われていないかのチェック
• SHACLによるデータ制約に違反していないかチェック
• GitHubでCIを⽤いたデータチェック運⽤にも利⽤可能
Copyright (C) Takeshi Mikami. All rights reserved. 6
rdflintについて説明します
RDFデータの⾃動検査ツール
リポジトリ → https://github.com/imas/rdflint
※RDF(Resource Description Framework): Linked Open Data を記述するための枠組み
takemikamiʼs note ‒ http://takemikami.com/
RDFデータの作成プロセス
• rdflintによるRDFデータの作成プロセスの違いを⽰す
Copyright (C) Takeshi Mikami. All rights reserved. 7
RDFデータの作成プロセス(rdflint有無)を説明します
XML
Turtle
fuseki
等 XML
Turtle
rdflint
ロード
データ作成 データ作成
クエリ実⾏
(SPARQL)
クエリ実⾏
(SPARQL)
ロード
⾃動検査
サーバ構築・データロードの⼿間と知識が必要 →確認作業が簡単できるチェックツールの整備
rdflintがある場合
rdflintが無い場合
takemikamiʼs note ‒ http://takemikami.com/
rdflintのvscode拡張 基本機能
• vscode拡張で、
データ作成の各作業を
vscode内で完結出来る。
• データの作成
• リロード指⽰
• ⾃動チェック実⾏
• クエリ実⾏
Copyright (C) Takeshi Mikami. All rights reserved. 8
rdflintのvscode拡張の基本機能を紹介します
データの作成
リロード指⽰
⾃動チェック実⾏
クエリ実⾏
takemikamiʼs note ‒ http://takemikami.com/
rdflintのvscode拡張 LanguageServer連携機能(Experimental)
• rdflintのLanguage Server機能で
指摘事項をvscodeに連携出来る。
• 右図では次を指摘
• リテラル末尾に空⽂字がある
• 年齢が負の値
Copyright (C) Takeshi Mikami. All rights reserved. 9
rdflintのvscode拡張のLanguageServer連携機能を⽰します
takemikamiʼs note ‒ http://takemikami.com/
rdflintのvscode拡張の実装⽅法
Copyright (C) Takeshi Mikami. All rights reserved. 10
takemikamiʼs note ‒ http://takemikami.com/
TerminalでREPLを動かす実装
• package.jsonにコマンドを定義
• extension.jsにコマンドの処理を実装
Copyright (C) Takeshi Mikami. All rights reserved. 11
TerminalでREPLを動かす場合の実装⽅法を⽰します
"commands": [
{
"command": "rdflint.interactiveMode",
"title": "rdflint interactiveMode: SPARQL playground"
}
],
// rdflint interactive mode startup command
let disposable = vscode.commands.registerCommand('rdflint.interactiveMode', () => {
※省略※
let terminal = vscode.window.createTerminal(`rdflint`, javaHome + javaExe, ['-jar', '' + jar, '-i']);
terminal.show(true);
※省略※
});
context.subscriptions.push(disposable);
Ctrl+Shift+Pメニューに追加
createTerminalでrdflint(Java)を実⾏
commandに処理を登録
takemikamiʼs note ‒ http://takemikami.com/
LanguageClientの利⽤部分実装 1/2
• package.jsonに対象⾔語を定義
• package.jsonに対象⾔語と拡張⼦の対応を定義
Copyright (C) Takeshi Mikami. All rights reserved. 12
LanguageClientの利⽤部分の実装⽅法を⽰します
"activationEvents": [
"onLanguage:turtle",
"onLanguage:rdfxml"
],
"languages": [
{
"id": "rdfxml",
"extensions": [
".rdf"
],
※省略※
},
※省略※
],
rdfxml, turtle形式の時に拡張を利⽤
takemikamiʼs note ‒ http://takemikami.com/
LanguageClientの利⽤部分実装 2/2
• extension.jsでLanguage Serverとクライアントを起動
Copyright (C) Takeshi Mikami. All rights reserved. 13
LanguageClientの利⽤部分の実装⽅法を⽰します
let serverOptions: Executable = {
command: javaHome + javaExe,
args: ['-jar', '' + jar, '-ls']
};
let clientOptions: LanguageClientOptions = {
documentSelector: [
{ scheme: 'file', language: 'turtle' },
{ scheme: 'file', language: 'rdfxml' }
]
};
client = new LanguageClient(
'rdflintLanguageServerExperimental',
'RdfLint Language Server',
serverOptions,
clientOptions
);
client.start();
rdfxml, turtle形式の時にLanguageClientを利⽤
LanguageServerの実⾏
(rdflintを-lsオプション付きで起動)
LanguageClientを開始
(同時にLanguageServerも実⾏される)
takemikamiʼs note ‒ http://takemikami.com/
まとめ
• RDFデータ作成プロセスに課題がある
• 確認作業(サーバを⽴ち上げて、データをロード)に⼿間と知識が必要
• RDFデータ作成プロセスの課題をrdflintで軽減した
• rdflintによって確認作業を簡単にできるようにした
• vscode拡張によって作成〜チェックをvscode内で完結できるようにした
• TerminalでREPLを動かすくらいのvscode拡張は簡単に作成できる
• ⼀連の作業をvscode内で完結させるには簡単な⼿段
Copyright (C) Takeshi Mikami. All rights reserved. 14
本LTのまとめです

Weitere ähnliche Inhalte

Was ist angesagt?

JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜
JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜
JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜Masakazu Muraoka
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)y_uuki
 
自動化ツールの違いを探る
自動化ツールの違いを探る自動化ツールの違いを探る
自動化ツールの違いを探るToshiya Mabuchi
 
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例Joni
 
Riot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングRiot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングKeisuke Imai
 
Web制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみたWeb制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみたMasakazu Muraoka
 
Bot Builder V4 SDK + QnA Maker / LUIS
Bot Builder V4 SDK  + QnA Maker / LUISBot Builder V4 SDK  + QnA Maker / LUIS
Bot Builder V4 SDK + QnA Maker / LUISYoshitaka Seo
 
20151029 ヒカラボ講演資料
20151029 ヒカラボ講演資料20151029 ヒカラボ講演資料
20151029 ヒカラボ講演資料Daisuke Ando
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはJun-ichi Sakamoto
 
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめPyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめJun Okazaki
 
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法Yuta Matsumura
 
One-time Binding & $digest
One-time Binding & $digestOne-time Binding & $digest
One-time Binding & $digestHayashi Yuichi
 
react-jsonschema-formについて
react-jsonschema-formについてreact-jsonschema-formについて
react-jsonschema-formについてMasakazu Muraoka
 
はじめての UWP アプリ開発
はじめての UWP アプリ開発はじめての UWP アプリ開発
はじめての UWP アプリ開発hiyohiyo
 
いつでもどこでも .NET
いつでもどこでも .NETいつでもどこでも .NET
いつでもどこでも .NETYuta Matsumura
 
FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?Masakazu Muraoka
 
Blazor 触ってみた
Blazor 触ってみたBlazor 触ってみた
Blazor 触ってみたOda Shinsuke
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜bitbank, Inc. Tokyo, Japan
 
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 ClojureYoshitaka Kawashima
 

Was ist angesagt? (20)

JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜
JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜
JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)
 
自動化ツールの違いを探る
自動化ツールの違いを探る自動化ツールの違いを探る
自動化ツールの違いを探る
 
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
 
HTML5 のお話
HTML5 のお話HTML5 のお話
HTML5 のお話
 
Riot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングRiot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディング
 
Web制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみたWeb制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみた
 
Bot Builder V4 SDK + QnA Maker / LUIS
Bot Builder V4 SDK  + QnA Maker / LUISBot Builder V4 SDK  + QnA Maker / LUIS
Bot Builder V4 SDK + QnA Maker / LUIS
 
20151029 ヒカラボ講演資料
20151029 ヒカラボ講演資料20151029 ヒカラボ講演資料
20151029 ヒカラボ講演資料
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめPyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめ
 
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
 
One-time Binding & $digest
One-time Binding & $digestOne-time Binding & $digest
One-time Binding & $digest
 
react-jsonschema-formについて
react-jsonschema-formについてreact-jsonschema-formについて
react-jsonschema-formについて
 
はじめての UWP アプリ開発
はじめての UWP アプリ開発はじめての UWP アプリ開発
はじめての UWP アプリ開発
 
いつでもどこでも .NET
いつでもどこでも .NETいつでもどこでも .NET
いつでもどこでも .NET
 
FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?
 
Blazor 触ってみた
Blazor 触ってみたBlazor 触ってみた
Blazor 触ってみた
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
 
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
 

Ähnlich wie rdflintのvscode拡張の紹介とその実装方法

サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)Takeshi Mikami
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)TIS Inc.
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018Yoshio Terada
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
20170809 AWS code series
20170809 AWS code series20170809 AWS code series
20170809 AWS code seriesAtsushi Fukui
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+Ryusuke Kajiyama
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]David Buck
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)シスコシステムズ合同会社
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC EnterpriseYusukeKuramata
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkSho Yoshida
 
Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下Koyo Takenoshita
 
Testing and packaging WebRTC Stack
Testing and packaging WebRTC StackTesting and packaging WebRTC Stack
Testing and packaging WebRTC StackAlexandre Gouaillard
 

Ähnlich wie rdflintのvscode拡張の紹介とその実装方法 (20)

サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門
 
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
 
第9回しゃちほこオラクル倶楽部
第9回しゃちほこオラクル倶楽部第9回しゃちほこオラクル倶楽部
第9回しゃちほこオラクル倶楽部
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
20170809 AWS code series
20170809 AWS code series20170809 AWS code series
20170809 AWS code series
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
 
Try IoT with Node-RED
Try IoT with Node-REDTry IoT with Node-RED
Try IoT with Node-RED
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
 
Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下
 
Testing and packaging WebRTC Stack
Testing and packaging WebRTC StackTesting and packaging WebRTC Stack
Testing and packaging WebRTC Stack
 

Mehr von Takeshi Mikami

適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介Takeshi Mikami
 
OAuth 2.0による認可の流れ
OAuth 2.0による認可の流れOAuth 2.0による認可の流れ
OAuth 2.0による認可の流れTakeshi Mikami
 
MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方Takeshi Mikami
 
データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」Takeshi Mikami
 
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成Takeshi Mikami
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウTakeshi Mikami
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方Takeshi Mikami
 
HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題Takeshi Mikami
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介Takeshi Mikami
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)Takeshi Mikami
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Takeshi Mikami
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本Takeshi Mikami
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Takeshi Mikami
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Takeshi Mikami
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介Takeshi Mikami
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介Takeshi Mikami
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門Takeshi Mikami
 
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Takeshi Mikami
 
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法Takeshi Mikami
 

Mehr von Takeshi Mikami (20)

適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介
 
OAuth 2.0による認可の流れ
OAuth 2.0による認可の流れOAuth 2.0による認可の流れ
OAuth 2.0による認可の流れ
 
MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方
 
データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」
 
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
 
HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
 
SPARQL入門
SPARQL入門SPARQL入門
SPARQL入門
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門
 
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
 
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法
 

rdflintのvscode拡張の紹介とその実装方法

  • 1. takemikamiʼs note ‒ http://takemikami.com/ rdflintのvscode拡張の紹介とその実装⽅法 RDF language support via rdflint について Copyright (C) Takeshi Mikami. All rights reserved. 1 三上 威 - @takemikami アーリース情報技術株式会社 代表取締役 社⻑ VS Code Meetup #14 - 拡張機能作る、作った編 2021.8.30 @online
  • 2. takemikamiʼs note ‒ http://takemikami.com/ はじめに • テーマ rdflintのvscode拡張の紹介とその実装⽅法 • 内容 • rdflintとvscode拡張の紹介 • rdflintのvscode拡張の実装⽅法 Copyright (C) Takeshi Mikami. All rights reserved. 2 本LTで紹介する内容を説明します RDF language support via rdflint https://marketplace.visualstudio.com/items?itemName=takemikami.vscode-rdflint
  • 3. takemikamiʼs note ‒ http://takemikami.com/ ⾃⼰紹介 業務と経歴 • 三上威 (@takemikami) • データエンジニア・サイエンティスト • 分析・予測モデル開発・基盤構築 etc • 対象: マーケティングデータ etc • 略歴 • 甲南⼤学理学部応⽤数学科 卒 • EC, CRM等のシステム構築 @ NEC系SIer • ECサイトのマーケティングデータ分析 @ DeNA • データ分析・予測モデル開発・基盤構築 @アーリース情報技術(株) Copyright (C) Takeshi Mikami. All rights reserved. 3 発表者のプロフィールを紹介します ※フリーランスの法⼈成り
  • 4. takemikamiʼs note ‒ http://takemikami.com/ ⾃⼰紹介 開発プロダクト/技術同⼈誌 • 開発プロダクト @GitHub • rdflint • RDFデータのチェックツール • https://github.com/imas/rdflint • digdag-plugin-shresult • ワークフローエンジン「Digdag」のプラグイン • シェルスクリプトの標準出⼒を変数に格納するオペレータ • https://github.com/takemikami/digdag-plugin-shresult • 技術同⼈誌 @Booth/技術書典 • Apache Airflow ワークフロー プログラミング⼊⾨ • Apache Spark ビッグデータクエリチューニング • Apache Hadoop & Spark ビッグデータプログラミング⼊⾨ Copyright (C) Takeshi Mikami. All rights reserved. 4 発表者が作成したプロダクト/執筆した同⼈誌を紹介します https://takemikami.booth.pm/
  • 5. takemikamiʼs note ‒ http://takemikami.com/ rdflintとvscode拡張の紹介 Copyright (C) Takeshi Mikami. All rights reserved. 5
  • 6. takemikamiʼs note ‒ http://takemikami.com/ rdflintとは • 次のチェックが⾃動化出来る • XML/RDF、Turtle(ttl)ファイルの⽂法チェック • 未定義の主語が、⽬的語として使われていないかのチェック • SHACLによるデータ制約に違反していないかチェック • GitHubでCIを⽤いたデータチェック運⽤にも利⽤可能 Copyright (C) Takeshi Mikami. All rights reserved. 6 rdflintについて説明します RDFデータの⾃動検査ツール リポジトリ → https://github.com/imas/rdflint ※RDF(Resource Description Framework): Linked Open Data を記述するための枠組み
  • 7. takemikamiʼs note ‒ http://takemikami.com/ RDFデータの作成プロセス • rdflintによるRDFデータの作成プロセスの違いを⽰す Copyright (C) Takeshi Mikami. All rights reserved. 7 RDFデータの作成プロセス(rdflint有無)を説明します XML Turtle fuseki 等 XML Turtle rdflint ロード データ作成 データ作成 クエリ実⾏ (SPARQL) クエリ実⾏ (SPARQL) ロード ⾃動検査 サーバ構築・データロードの⼿間と知識が必要 →確認作業が簡単できるチェックツールの整備 rdflintがある場合 rdflintが無い場合
  • 8. takemikamiʼs note ‒ http://takemikami.com/ rdflintのvscode拡張 基本機能 • vscode拡張で、 データ作成の各作業を vscode内で完結出来る。 • データの作成 • リロード指⽰ • ⾃動チェック実⾏ • クエリ実⾏ Copyright (C) Takeshi Mikami. All rights reserved. 8 rdflintのvscode拡張の基本機能を紹介します データの作成 リロード指⽰ ⾃動チェック実⾏ クエリ実⾏
  • 9. takemikamiʼs note ‒ http://takemikami.com/ rdflintのvscode拡張 LanguageServer連携機能(Experimental) • rdflintのLanguage Server機能で 指摘事項をvscodeに連携出来る。 • 右図では次を指摘 • リテラル末尾に空⽂字がある • 年齢が負の値 Copyright (C) Takeshi Mikami. All rights reserved. 9 rdflintのvscode拡張のLanguageServer連携機能を⽰します
  • 10. takemikamiʼs note ‒ http://takemikami.com/ rdflintのvscode拡張の実装⽅法 Copyright (C) Takeshi Mikami. All rights reserved. 10
  • 11. takemikamiʼs note ‒ http://takemikami.com/ TerminalでREPLを動かす実装 • package.jsonにコマンドを定義 • extension.jsにコマンドの処理を実装 Copyright (C) Takeshi Mikami. All rights reserved. 11 TerminalでREPLを動かす場合の実装⽅法を⽰します "commands": [ { "command": "rdflint.interactiveMode", "title": "rdflint interactiveMode: SPARQL playground" } ], // rdflint interactive mode startup command let disposable = vscode.commands.registerCommand('rdflint.interactiveMode', () => { ※省略※ let terminal = vscode.window.createTerminal(`rdflint`, javaHome + javaExe, ['-jar', '' + jar, '-i']); terminal.show(true); ※省略※ }); context.subscriptions.push(disposable); Ctrl+Shift+Pメニューに追加 createTerminalでrdflint(Java)を実⾏ commandに処理を登録
  • 12. takemikamiʼs note ‒ http://takemikami.com/ LanguageClientの利⽤部分実装 1/2 • package.jsonに対象⾔語を定義 • package.jsonに対象⾔語と拡張⼦の対応を定義 Copyright (C) Takeshi Mikami. All rights reserved. 12 LanguageClientの利⽤部分の実装⽅法を⽰します "activationEvents": [ "onLanguage:turtle", "onLanguage:rdfxml" ], "languages": [ { "id": "rdfxml", "extensions": [ ".rdf" ], ※省略※ }, ※省略※ ], rdfxml, turtle形式の時に拡張を利⽤
  • 13. takemikamiʼs note ‒ http://takemikami.com/ LanguageClientの利⽤部分実装 2/2 • extension.jsでLanguage Serverとクライアントを起動 Copyright (C) Takeshi Mikami. All rights reserved. 13 LanguageClientの利⽤部分の実装⽅法を⽰します let serverOptions: Executable = { command: javaHome + javaExe, args: ['-jar', '' + jar, '-ls'] }; let clientOptions: LanguageClientOptions = { documentSelector: [ { scheme: 'file', language: 'turtle' }, { scheme: 'file', language: 'rdfxml' } ] }; client = new LanguageClient( 'rdflintLanguageServerExperimental', 'RdfLint Language Server', serverOptions, clientOptions ); client.start(); rdfxml, turtle形式の時にLanguageClientを利⽤ LanguageServerの実⾏ (rdflintを-lsオプション付きで起動) LanguageClientを開始 (同時にLanguageServerも実⾏される)
  • 14. takemikamiʼs note ‒ http://takemikami.com/ まとめ • RDFデータ作成プロセスに課題がある • 確認作業(サーバを⽴ち上げて、データをロード)に⼿間と知識が必要 • RDFデータ作成プロセスの課題をrdflintで軽減した • rdflintによって確認作業を簡単にできるようにした • vscode拡張によって作成〜チェックをvscode内で完結できるようにした • TerminalでREPLを動かすくらいのvscode拡張は簡単に作成できる • ⼀連の作業をvscode内で完結させるには簡単な⼿段 Copyright (C) Takeshi Mikami. All rights reserved. 14 本LTのまとめです