Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
kaizen-from-javadoc
Search
ryoskyz
May 31, 2018
Business
0
760
kaizen-from-javadoc
Javadocから考える・はじめる業務改善
JJUG CCC 2018 Spring #ccc_m2
ryoskyz
May 31, 2018
Tweet
Share
Other Decks in Business
See All in Business
Local SEO for real people: 20 hard-hitting (and hilarious) audit lessons
ehababoud
0
240
あなたの「仮説検証」、ゆがんでいませんか? / Isn't Your "Hypothesis Verification" Distorted? #emoasis
expajp
1
260
CompanyDeck 2025
immedio
0
2.1k
インキュデータ会社紹介資料
okitsu
3
38k
株式会社スカイロジック 会社説明資料
support01
0
220
(7枚)自信家の鼻をへし折る「ダニング・クルーガー効果曲線」とは?
nyattx
PRO
0
210
MOTA Recruitment Deck
mota_inc
0
1.7k
タケウチグループRecruit
takeuchigroup
0
5.6k
【エンジニア採用】BuySell Technologies会社説明資料
buyselltechnologies
3
61k
株式会社ジグザグ_For our future members/未来の仲間へ
zig_zag
4
28k
【新卒採用】BuySell Technologies会社紹介資料
buyselltechnologies
0
210k
会社紹介資料【ギバーテイクオール株式会社】
givertakeall
0
2k
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
9
740
We Have a Design System, Now What?
morganepeng
52
7.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.6k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
13
1.4k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Documentation Writing (for coders)
carmenintech
69
4.7k
How GitHub (no longer) Works
holman
314
140k
How STYLIGHT went responsive
nonsquared
99
5.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Faster Mobile Websites
deanohume
306
31k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
30k
The Invisible Side of Design
smashingmag
299
50k
Transcript
Javadocから考える・はじめる 業務改善 JJUG CCC 2018 Spring #ccc_m2
自己紹介 1 名前:柚木良介 所属:SOMPOシステムイノベーションズ株式会社 (損保ジャパン日本興亜のシステム会社) 既存システムを刷新する大規模Java開発案件に従事
はじめに 2 近ごろ「働き方改革」をよく耳にし、定時退社(ノー残業)の推奨 等、各種施策を実施/推進していると思いますが、労働時間を 削減するだけでは、 そんな声にJavadocの観点から考えてみます。 「やらなければいけない作業は変わらないのに」 「早く退社したって期限に間に合わない」
Javadocについて(1/2) 3 (説明不要と思うが) Javaソースから生成し、以下のような画面で閲覧可能なAPIリファ レンス。使用する(作成した)クラスやメソッド仕様について確認できる。 なお今回/** Javadocコメント */は対象外。 ・パッケージ一覧 ・クラス一覧
・索引 から各クラス/メソッドの説 明にたどることが可能。
Javadocについて(2/2) 4 Eclipse等のIDE(統合開発環境)においてJavadocのフォルダやアーカイブを指定するこ とでマウスカーソル上のクラス/メソッド説明を表示する便利な機能あり。
Javadoc Search(JEP225/Java9~) JEP: JDK Enhancement Proposal(JDK拡張提案) JSR: Java Specification Request(Java仕様要求)
5 検索欄が追加されインクリメンタルサーチ(文字入力のたびに候補を絞込)可能。 JSR 376: Java Platform Module System (「Project Jigsaw」 とも呼ばれ、Java9で追加された主 要機能。モジュール化により必要な部分のみを利用す ることで軽量化を実現。) 以下の検索(部分一致)が可能。 ・モジュール(※JSR376参照) ・パッケージ ・クラス ・メソッド ・定数 ・@indexで指定した語句
Javadoc/Javadoc Searchの課題(1/2) 6 調べたい(ソース上の)クラス、メソッド(API)が どういう機能であるかは調査可能。 しかし、ある機能を実現したい場合どのクラスを使 えばいいかは(知っていないと)分からない。 正規表現 和暦 …
java.util.regex.Pattern java.time.chrono.JapaneseDate … (例) クラス名 機能 (英訳や関連しそうなパッケージ/クラス名から推測することは可能だが、非効率)
Javadoc/Javadoc Searchの課題(2/2) 7 Javadocに対する全文検索機能が不足 原因 またソースからJavadocを生成してもコーディングの成果物として出力するのみで 活用されることが低いことも。(ソースをGrep検索して見たほうが分かりやすいから?) その結果、(Javadocがあっても)ネット検索 →全文検索を導入しよう!
主な(オープンソース)全文検索エンジン 8 # 製品名 ライセ ンス 言語 URL 1 Namazu
GPL C http://www.namazu.org/ 2 Hyper Estraier LGPL C http://fallabs.com/hyperestraier/ 3 Groonga LGPL C http://groonga.org/ja/ 4 Apache Solr Apache Java http://lucene.apache.org/solr/ 5 FESS Apache Java https://fess.codelibs.org/ja/ 6 Elasticsearch Apache Java https://www.elastic.co/jp/produc ts/elasticsearch
身近なもので全文検索できないか? 9 (オープンソース/商用含め)新規ソフトウェアは ダウンロードやインストールの申請が必要であり、導入 効果の評価等含め時間がかかることが多い。
Eclipse Help(Information Center) 10 目次 索引 全文検索 Javaの統合開発環境(IDE)としてよく使用されるEclipseのヘルプ機能に着目。
Eclipse Helpの特徴・利点(1/2) 11 1. 「Apache Lucene」を利用した全文検索 →各種オープンソースもLuceneをベースとしており、遜色なし。 2. 検索結果(サマリ)ページではなく本文のキーワードに対して ハイライト(強調)表示
3. 全文検索以外にCHM(Compiled HTML Help)ファイルや Java Helpといったヘルプ同様に以下の機能あり。 ・目次(見出しのツリー構造) ・索引(キーワード・タグ) - インクリメンタルサーチ ・ブックマーク(※) ※ブラウザからアクセスする場合はブラウザのブックマークで代用。 https://lucene.apache.org/
Eclipse Helpの特徴・利点(2/2) 12 4.スコープ(検索範囲)や条件指定による絞り込みが可能。 →検索結果が多すぎて目的の資料が埋もれる問題も解消。 (検索範囲/条件は任意の名称で 保存→再利用可能) 5. ファイル配布によるローカル端末利用とともにヘルプサーバとして別端 末からブラウザによるアクセスが可能。
6. Eclipseプラグイン機構によりヘルプの追加・更新が容易。
Eclipse Helpの実現方法(サンプル) 13 「ファイル」メニュー→「新規」→「その他」 ウィザードの「プラグイン開発」→「プラグイン・プロジェクト」を選択 数回「次へ」を押下すると「サンプルのヘルプ目次付きプラグイン」あり
Eclipse Helpの実現方法 14 <toc label="タイトル"> <topic label="見出し1" href="URL1"> <topic label="見出し1.1"
href="URL2" /> </topic> <topic label="見出し2" href="URL3" /> </toc> ◆目次用XML(toc.xml) ※階層構造によってはtocではなくtopicにタイトル記載。 基本的に以下の2ファイルを作成することで実現。 <index> <entry keyword="見出し1"> <topic href="URL1" title="キーワードが同じ場合の別名(任意)" /> </entry> ...(略)... </index> ◆索引用XML(index.xml)
Eclipse HelpによるJavadoc検索 15 HTML HTML (Javadoc) Eclipseヘルプ化(目次/索引生成) ということで作ってみました。 JavadocのHTMLファイルから ・パッケージ
・クラス/インタフェース ・メソッド ・定数 のリンク先を抽出 XML XML (目次/索引)
Eclipse HelpによるJavadoc検索(目次) 16 ツリー構造にて パッケージ、クラス を指定。
Eclipse HelpによるJavadoc検索(索引) 17 (Java8以前においても) Javadoc Searchと同様に ・パッケージ ・クラス ・メソッド ・定数
のインクリメンタルサーチ(前方一致)可能。
Eclipse HelpによるJavadoc検索(全文検索) 18 ファイル内のキーワードをハイ ライト(強調)表示。 検索結果一覧 (概要表示も上部のアイコンでON/OFF可)
(参考)Doxygen 19 http://www.stack.nl/~dimitri/doxygen/manual/output.html Doxygenを使用することでソースから直接Eclipse Helpを出力可能。(未検証)
Eclipse HelpでJavadocが便利に検索できる のは分かったけど、それが業務改善? 20
情報検索に年間どれくらいの時間を 費やしていると思いますか? 21 ① ~50時間 ② 50~100時間 ③ 100~200時間 ④
200~300時間 ⑤ 300時間~ <1年間の作業時間> 約1,920時間 (8時間/日 * 20日/月 * 12月)
一般的には約150時間と言われています。 22 ① ~50時間 ② 50~100時間 ③ 100~200時間 ④ 200~300時間
⑤ 300時間~ 情報検索 年間 150時間 約7.8%であり、1日あたり約40分、 1ヵ月あたり約1.6日に相当。
社内における情報検索の課題 23 全文検索 Officeファイルオープン ファイル内検索 クローズ(次の検索結果へ) 情報検索に年間150時間費やす要因として、Officeファイルの検索が 多数の時間を占めている印象。 繰り返し ファイル内検索
ファイル内検索 ファイル内検索 ・検索機能不足。 ・ファイルオープン・表示が遅い。 ・ドキュメントが散在し、在り処が不明。 逐次(Grep)検索の場合には、さらに遅くなる。
OfficeファイルのEclipseヘルプ化 24 HTML HTML HTML HTML HTML HTML XML XML
(目次/索引) OfficeファイルをEclipseヘルプ化しました。 Officeファイル→HTML変換 PDF PDF MS Office + WSH/JScript (Javaだと以下で変換) OpenOffice or LibreOffice + JODConverter HTML HTML (Javadoc) Eclipseヘルプ化 (目次/索引生成) https://github.com/sbraconnier/jodconverter
Eclipse HelpによるOffice検索(例) 25 (目次) (索引) (全文検索) 【目次/索引】 ファイル名(全ファイル共通) ・見出し(章題) -
Word ・シート名 - Excel ・スライド・タイトル - PowerPoint HTML HTML HTML
ヘルプ化で苦労した点と解決策(1/2) 26 <Officeファイル→HTML変換による図ズレ問題> 画面/印刷 HTML化の際、枠線などが本来 (画面や印刷)の位置からズレて出力。 HTML
ヘルプ化で苦労した点と解決策(2/2) 27 Officeファイル→PDF出力 PDF PDF PDF→HTMLにより図ズレを解消。副次的にOffice以外でもPDFから変換可。 PDFファイル→HTML変換 pdf2htmlEX PDF HTML
HTML HTML (Javadoc) XML XML (目次/索引) Eclipseヘルプ化(目次/索引生成) http://coolwanglu.github.io/pdf2htmlEX/
Eclipse HelpによるOffice検索の効果 28 「年間150時間」の工数削減(創出) ・知りたい情報に素早くアクセスすることで理解度向上。 ・見つからない悩み時間や問合せ等非生産的な時間の短縮。 ・やるべき作業に注力でき、生産性向上。 ・既存ドキュメントを有効活用。新規資料も使い慣れたソフトで可能。 ・検索機能不足。 →Eclipse
Help機能による充実した検索手段を提供。 ・ファイルオープン・表示が遅い。 →HTML化によりOffice/PDFのアプリケーション起動やJavaScriptによる変換処理なく、 シームレスに高速表示。 ・ドキュメントが散在し、在り処が不明。 →HTML変換のためにファイルを一か所に集める必要があり、ドキュメント散在が解消。 (GitやSubversion等のバージョン管理による一元管理も可能になる。) 結果 (※未検証だが、以下が期待できる。)
おわりに(ご提案事項) 29 業務改善の一施策としてEclipse HelpをJavadocおよび Office文書の検索に利用してみてはどうでしょうか。 身近なところで試行し、(よければ)適用範囲を拡大。 チーム・プロジェクト フロア・部署(拠点) 全体
業務改善の参考になれば幸いです! 30
31 Javadocから考える・始める業務改善 JJUG CCC 2018 Spring #ccc_m2
(補足事項) 32
参考情報/URL 33 【Eclipseのヘルプ・システムを使ってプロジェクトを文書化する】 https://www.ibm.com/developerworks/jp/opensource/library/os-echelp/index.html 【Eclpseでヘルプを集中化する】 https://www.ibm.com/developerworks/jp/opensource/library/os-eclipsehelp/index.html 【Platform Plug-in Developer Guide】(※Eclipse
Help内) > Programmer's Guide > User assistance support > Help > Reference > Extension Points Reference ・org.eclipse.help.toc ・org.eclipse.help.index ・org.eclipse.help.criteriaDefinition ・org.eclipse.help.base.searchParticipant 【第1回 Eclipse ヘルプにJava APIリファレンス・マニュアルを編成する方法】 https://www.ibm.com/developerworks/jp/rational/library/07/0320_alupului/ 【第2回 JavaTOCドックレットを使って生成するEclipse Javadoc APIリファレンス構造】 https://www.ibm.com/developerworks/jp/rational/library/07/1225_alupului/ 【第3回 JavaTOCドックレットとANT を実行して生成するEclipse Javadoc APIリファレンス構造】 https://www.ibm.com/developerworks/jp/rational/library/08/0115_alupului/
(参考)Helpサーバ起動/終了、アクセスURL 34 > java -classpath <Eclipse>/plugins/org.eclipse.help.base_<バージョン>.jar org.eclipse.help.standalone.Infocenter -eclipsehome <Eclipse> -command
start -port <ポート番号> > java -classpath <Eclipse>/plugins/org.eclipse.help.base_<バージョン>.jar org.eclipse.help.standalone.Infocenter -eclipsehome <Eclipse> -command shutdown http://<Helpサーバのホスト名やIPアドレス>:<ポート番号>/help/index.jsp 【Eclipse Helpサーバの起動方法】 【Eclipse Helpサーバの終了方法】 【ブラウザからのアクセスURL】 (※実際は1行で入力) (※実際は1行で入力)