SlideShare a Scribd company logo
1 of 44
Download to read offline
VisualStudioCode
拡張機能作成入門
くれすと@thayamizu
目次
 自己紹介
 Visual Studio Codeとは
 開発環境の準備
 Visual Studio CodeAPI 概観
 拡張機能作成
 まとめ
自己紹介
 H.N クレスト
 博士(情報学),修習技術者
 SNS
 Twitter @thayamizu
 GitHub @thayamizu
 趣味
 プログラミング・カラオケ・イラスト・旅行
 よく使う言語
 C/C++, TypeScript, JavaScript, Python
勉強会(1)
 型システム入門
 型システム
 型無しλ計算
 型付きλ計算 etc.
 全30回.3年半かかりました.
 入門と言いつつ全く入門ではない
勉強会(2)
 次はこのあたり
勉強会(3)
 コンピュータの舞台裏
 あおおにくん主催
 コンピュータが動く仕組の基礎を解説
 これまでのトピック
 ○×を使った2進数の解説
 DBの解説
 PowershellによるWindows自動化
 人工知能の概説
 JPEGトリミング講座
 外字作成講座
VisualStudioCodeとは
Visual Studio
Code
 Microsoft が開発しているテキストエディタ
 Electoron, Node.jsがベース
 クロスプラットフォーム
 Windows, Linux, MacOS
 特徴
 プログラマ向けのエディタ
 デバッグ
 統合されたGitクライアント
 シンタックスハイライト
 インテリセンス
 スニペット
 リファクタリング
AtomとCode
 AtomエディタもVisualStudioCodeと同じくGitHub社の
Electronフレームワークを使用したテキストエディタ
 Visual Studio Codeは,VisualStudioOnline のMonacoがベース
となっており派生関係があるわけではない
 GitHubのIssueを覗いてみると互いに影響を及ぼし合っている
様子
拡張機能で
出来ること
 ファイルに別の内容のファイルを挿入する
 Emacs のInsert commandのようなもの
 Visual Studio Codeで編集したMarkdownファイルを変換して
Evernoteに追加する
 コーディング中にでてきたクラス・関数をMSDNで検索する
 ワンライナーのコマンドを実行する
開発環境の準備
Preparing
 Visual Studio Codeの拡張機能を作成するに当たっては以下の
拡張機能を予めインストール・設定しておく
 VisualStudio Code
 node.js
 Yeoman code generator
 Typings
 VSCE
 グループポリシーの設定
Node.js
Node.js
 インストール
 任意のインストーラー,パッケージマネージャ
 PowerShellからもOK
 PowerShellのPackageManagement機能で追加する
 apt-get,yum
 PowerShellv5.0 から
#PackageProviderで Chocolateyを追加
Get-PackageProvider Chocolatey
#Find-Packageでパッケージを検索
Find-Package –Name node
#Install-Packageでnodeを追加
Install-Package –Name node
Yeoman code
generator
#グローバルインストール
npm install –g yo generator-code
typings
 TypeScriptの型定義ファイルを管理するためのツール
 tsdは非推奨だそうです
#グローバルインストール
npm install –g typings
#環境が汚れるのが嫌いな方は次のようにする
npm install --save-dev typings
vsce
 作成したVisualStudioCodeの拡張をパッケージ化・公開する
ためのツール
#グローバルインストール
npm install –g vsce
#環境が汚れるのが嫌いな方は以下
npm install --save-dev vsce
グループ
ポリシー
 npmのパッケージ名は非常に長いためWindowsのパス制限を
すぐに超えてしまう
 NTFSの最大パスは260文字まで
 Windows 10 Anniversary Updateで,制限緩和
 ローカルグループポリシーの「Win32の長いパスを有効にす
る」有効にする
VisualStudioCodeAPI
概観
Promise
 Visual Studio Codeが提供しているAPIの非同期操作はpromise
 ES6, WinJS,A+
 戻り値の型は,thenable
 thenプロパティで継続して処理できる
Disposables
 Visual Studio CodeのAPIはエディタのリソース管理にDispose
パターンを適用している
 Event Listening,Commands,対話的なUI
Namespace
 vscode名前空間がルート
 Command
 Env
 Extensions
 Languages
 Window
 Workspace
command
 拡張機能のアクティベーション・既存のコマンドの呼び出し
 registerCommand
 executeCommand
window
 Visual Studio Code内で使用できるGUIのクラス・オブジェクト
が用意されている
 activeTextEditor
 createOutputChannel
 showErrorMessage
 showWarningMessage
 showInformationMessage
 InputBox
workspace
 Visual Studio Codeで現在開いているワークスペース(≓フォル
ダ)の情報を扱う
 rootPath
 getConfiguration
拡張機能作成
雛形の作成
 Yeoman code generator で 拡張機能のひな型を作成する
 New Extension(Typescript)
 New Extension(JavaScript)
 New ColorTheme
 New LanguageSupport
 New Code Snippet
雛形の作成
雛形の作成
雛形の作成  実際につくってみます
デバッグ
 F5キーでデバッグ実行
 ステップ実行
 Step Over, Step Into, Step Out
 実行中のコンテキストの変数
 変数のウォッチ
 コールスタック
テスト
 Yeoman code-generatorで生成したプロジェクトにはテストラ
ンナーがついている
 Mocha, Jasmineのようなテスティングフレームワークが使える
 Travis CI上で自動実行可能
 コマンド実行も可能、ただしVisualStudio Codeのインスタンス
が存在していると動かない
外部との連携
 Node.jsのchild_processを使う
 spawn, exec
 出力がShiftJISの場合、文字化けを起こすのでiconv-liteを導入
する
設定ファイル
 拡張機能に設定を持たせる場合は、package.jsonに設定を持
たせる
 持たせた設定ファイルは、vscode.workspace.getConfiguration
でconfigurationオブジェクトを取得
 取得したconfigrationオブジェクトのgetメソッドからデータ
を取り出す
パッケージ化
 vsceのpackageコマンドでVSIX形式にパッケージ化できる
#作成した拡張機能をパッケージ化
vsce package
#パッケージングした拡張機能をインストール
code –install-extension xxx.vsix
公開するには
 MarketPlaceに拡張機能を公開するには次の手順を踏む
 Microsoftアカウントを作成する
 VisualStudioTeam Serviceにアカウントを登録する
 VisualStudioTeam Serviceから、アクセストークンを取得する
 vsceコマンドで拡張機能を公開するアカウントを作成する
 vsceコマンドでpublishをたたく
下準備
下準備
下準備
Package.json
/*拡張機能名*/
"name": “test",
/*バージョン番号*/
"version": "0.0.1",
/*パブリッシャーアカウント名*/
"publisher": "crest-test",
/*vscodeのバージョン*/
"engines": {
"vscode": "^1.0.0" },
/*マーケットプレイスのカテゴリ*/
"categories": [ "Other"],
公開する
#publisherを作成する
vsce create-publisher crest-test
Publisher human-friendly name: (crest-test)
E-mail: crest.test123@outlook.jp
Personal Access Token:
****************************************************
Successfully created publisher 'crest-test'.
#Market Placeに公開する
vsce publish
まとめ
 Visual Studio Code の拡張機能作成について取り上げました
 VisualStudio Codeについて
 拡張機能の開発環境
 VisualStudio CodeAPIの概観
 拡張機能の作成~MarketPlaceへの公開
参考文献
 Visual Studio Code Docs
 GitHub Repository
 Electron
 vscode
 atom
ご清聴ありがとうご
ざいました

More Related Content

Similar to わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門

Processing.jsでおうちハック shorter version
Processing.jsでおうちハック shorter versionProcessing.jsでおうちハック shorter version
Processing.jsでおうちハック shorter versionsonycsl
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Fujio Kojima
 
デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化Katsuhiro Aizawa
 
20180119_AIを支えるクラウド技術
20180119_AIを支えるクラウド技術20180119_AIを支えるクラウド技術
20180119_AIを支えるクラウド技術康平 秋山
 
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPIWindows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPIOsamu Monoe
 
App017 power shellの新しい相棒_visual_studio_
App017 power shellの新しい相棒_visual_studio_App017 power shellの新しい相棒_visual_studio_
App017 power shellの新しい相棒_visual_studio_Tech Summit 2016
 
App017 power shellの新しい相棒_visual_studio
App017 power shellの新しい相棒_visual_studioApp017 power shellの新しい相棒_visual_studio
App017 power shellの新しい相棒_visual_studioTech Summit 2016
 
Toolkit for CreateJSで作るリッチコンテンツ
Toolkit for CreateJSで作るリッチコンテンツToolkit for CreateJSで作るリッチコンテンツ
Toolkit for CreateJSで作るリッチコンテンツYasunobu Ikeda
 
pi-1. プログラミング入門
pi-1. プログラミング入門pi-1. プログラミング入門
pi-1. プログラミング入門kunihikokaneko1
 
Visual Studio と Azure で Python を始めよう
Visual Studio と Azure で Python を始めようVisual Studio と Azure で Python を始めよう
Visual Studio と Azure で Python を始めようAkira Inoue
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSAmazon Web Services Japan
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011Hiroh Satoh
 
Visual Studio Code #phpcon2015
Visual Studio Code #phpcon2015Visual Studio Code #phpcon2015
Visual Studio Code #phpcon2015Aya Tokura
 
テスト駆動ゲーム開発をJava scriptで実践
テスト駆動ゲーム開発をJava scriptで実践テスト駆動ゲーム開発をJava scriptで実践
テスト駆動ゲーム開発をJava scriptで実践Yuusuke Takeuchi
 
Processingでインタラクティブアート作品を作る
Processingでインタラクティブアート作品を作るProcessingでインタラクティブアート作品を作る
Processingでインタラクティブアート作品を作るYohei Tanaka
 

Similar to わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門 (20)

Processing.jsでおうちハック shorter version
Processing.jsでおうちハック shorter versionProcessing.jsでおうちハック shorter version
Processing.jsでおうちハック shorter version
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
 
Visual studio de debug
Visual studio de debugVisual studio de debug
Visual studio de debug
 
デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化
 
20180119_AIを支えるクラウド技術
20180119_AIを支えるクラウド技術20180119_AIを支えるクラウド技術
20180119_AIを支えるクラウド技術
 
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPIWindows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
 
App017 power shellの新しい相棒_visual_studio_
App017 power shellの新しい相棒_visual_studio_App017 power shellの新しい相棒_visual_studio_
App017 power shellの新しい相棒_visual_studio_
 
App017 power shellの新しい相棒_visual_studio
App017 power shellの新しい相棒_visual_studioApp017 power shellの新しい相棒_visual_studio
App017 power shellの新しい相棒_visual_studio
 
Toolkit for CreateJSで作るリッチコンテンツ
Toolkit for CreateJSで作るリッチコンテンツToolkit for CreateJSで作るリッチコンテンツ
Toolkit for CreateJSで作るリッチコンテンツ
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
pi-1. プログラミング入門
pi-1. プログラミング入門pi-1. プログラミング入門
pi-1. プログラミング入門
 
C#
C#C#
C#
 
Visual Studio と Azure で Python を始めよう
Visual Studio と Azure で Python を始めようVisual Studio と Azure で Python を始めよう
Visual Studio と Azure で Python を始めよう
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
 
Clrh 110827 wfho
Clrh 110827 wfhoClrh 110827 wfho
Clrh 110827 wfho
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
Visual Studio Code #phpcon2015
Visual Studio Code #phpcon2015Visual Studio Code #phpcon2015
Visual Studio Code #phpcon2015
 
テスト駆動ゲーム開発をJava scriptで実践
テスト駆動ゲーム開発をJava scriptで実践テスト駆動ゲーム開発をJava scriptで実践
テスト駆動ゲーム開発をJava scriptで実践
 
Processingでインタラクティブアート作品を作る
Processingでインタラクティブアート作品を作るProcessingでインタラクティブアート作品を作る
Processingでインタラクティブアート作品を作る
 
ZendStudioのご紹介
ZendStudioのご紹介ZendStudioのご紹介
ZendStudioのご紹介
 

More from TATSUYA HAYAMIZU

コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能TATSUYA HAYAMIZU
 
わんくま同盟大阪勉強会 Vol.65 electron入門
わんくま同盟大阪勉強会 Vol.65 electron入門わんくま同盟大阪勉強会 Vol.65 electron入門
わんくま同盟大阪勉強会 Vol.65 electron入門TATSUYA HAYAMIZU
 
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話TATSUYA HAYAMIZU
 
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献TATSUYA HAYAMIZU
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61TATSUYA HAYAMIZU
 
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!TATSUYA HAYAMIZU
 
20131123 playgroundハッカソン
20131123 playgroundハッカソン20131123 playgroundハッカソン
20131123 playgroundハッカソンTATSUYA HAYAMIZU
 
Visual studioによるビルドプロセスの自動化
Visual studioによるビルドプロセスの自動化Visual studioによるビルドプロセスの自動化
Visual studioによるビルドプロセスの自動化TATSUYA HAYAMIZU
 
Metro style ハッカソンに参加してきた
Metro style ハッカソンに参加してきたMetro style ハッカソンに参加してきた
Metro style ハッカソンに参加してきたTATSUYA HAYAMIZU
 
より良いコードを書くための
より良いコードを書くためのより良いコードを書くための
より良いコードを書くためのTATSUYA HAYAMIZU
 

More from TATSUYA HAYAMIZU (11)

コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
 
わんくま同盟大阪勉強会 Vol.65 electron入門
わんくま同盟大阪勉強会 Vol.65 electron入門わんくま同盟大阪勉強会 Vol.65 electron入門
わんくま同盟大阪勉強会 Vol.65 electron入門
 
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
 
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
 
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
 
20131123 playgroundハッカソン
20131123 playgroundハッカソン20131123 playgroundハッカソン
20131123 playgroundハッカソン
 
Visual studioによるビルドプロセスの自動化
Visual studioによるビルドプロセスの自動化Visual studioによるビルドプロセスの自動化
Visual studioによるビルドプロセスの自動化
 
Metro style ハッカソンに参加してきた
Metro style ハッカソンに参加してきたMetro style ハッカソンに参加してきた
Metro style ハッカソンに参加してきた
 
より良いコードを書くための
より良いコードを書くためのより良いコードを書くための
より良いコードを書くための
 
ゲームノシクミ
ゲームノシクミゲームノシクミ
ゲームノシクミ
 

Recently uploaded

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 

Recently uploaded (7)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 

わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門