epublibで電子書籍を作成する

イントロダクション

電子書籍を書こうと思います。色々な方法があるようです。

  • MarkDownからEPUBを生成する
  • GoogleDocからEPUBを生成する
  • JavaでEPUBを生成する

そして、EPUBファイルの中身は下のように、ファイルがあるようです。

  • mimetype
  • META-INF
  • ドキュメントを格納したフォルダ

mimetypeは固定で、ZIPコマンドで下のように実行します。

zip -0 作成するEPUB.epub mimetype
zip -9r 作成するEPUB.epub * -x mimetype

他にも下のような形での実行もできるようです。これはMac、リナックス版かな?オプションの9はつけた方が良い推奨的なものらしい。

zip -0 -X ../ebook.epub mimetype
zip -r ../ebook.epub * -x mimetype

JavaでEPUBを出力する方法

電子書籍をJavaで作れないか調べたところ、ありました。
このサイトにepublibの使い方などが書いてあった。

引用すると下のようなものです。

Epublib は、epub ファイルを管理するための Java ライブラリです。プログラムおよびコマンドライン ツールから epub ファイルの読み取りと書き込みが可能です。

Epublib は、コマンドライン ツールも付属するライブラリです。これは、より大きな Java アプリケーションの一部として、またコマンドライン ツールとして使用することを目的としています。

epublibを使う

下のようにMavenを使ってやりました。
POMファイルに下のように記述して、再ビルドすれば準備オッケーでした。
そして、JavaDocはここにありました。

リポジトリの追加

  <repositories>
    <repository>
      <id>psiegman-repo</id>
      <url>https://github.com/psiegman/mvn-repo/raw/master/releases</url>
    </repository>
  </repositories>

ライブラリの追加

  <dependencies>
    <dependency>
      <groupId>nl.siegmann.epublib</groupId>
      <artifactId>epublib-core</artifactId>
      <version>3.1</version>
    </dependency>
  </dependencies>

リソースの準備

そして、プログラムともとになるHTMLファイルを用意

プログラムの作成と実行

出力したものはこちらのYOUTUBEで見れます。

Githubにソースがあったのでそれを参考にしました。

【作成したコード】
元々あったコード(サンプルコード)を改造しています。改造した部分はリソースの取得部分「getResource(引数は一つ)」です。
ここでgetResourceAsStream()を使うとパスの指定が違ってしまったので、Pathsで取得してInputStreamを生成、返却するように修正しました。

    private static InputStream getResource(String path ) throws IOException{
        Path p = Paths.get(path);
        InputStream im = Files.newInputStream(p);
//        InputStream im = Main.class.getResourceAsStream( path );
        if (im == null) {
            throw new IOException("ファイルが取得できませんでした。" + path);
        }
        return im;
    }

    private static Resource getResource(String path, String href ) throws IOException {
        Resource res = new Resource( getResource( path ), href );
        return res;
    }
    public static void main(String[] args) {
        try {
            // Create new Book
            Book book = new Book();
            Metadata metadata = book.getMetadata();

            // Set the title
            metadata.addTitle("EPUB4J test book 1");

            // Add an Author
            metadata.addAuthor(new Author("Joe", "Tester"));

            final String ROOT = "src/main/resources";
            // Set cover image
            book.setCoverImage(
                    getResource(ROOT + "/book1/test_cover.png", "cover.png"));

            // Add Chapter 1
            book.addSection("Introduction",
                    getResource(ROOT + "/book1/chapter1.html", "chapter1.html"));

            // Add css file
            book.getResources().add(
                    getResource(ROOT + "/book1/book1.css", "book1.css"));

            // Add Chapter 2
            TOCReference chapter2 = book.addSection( "Second Chapter",
                    getResource(ROOT + "/book1/chapter2.html", "chapter2.html"));

            // Add image used by Chapter 2
            book.getResources().add(
                    getResource(ROOT + "/book1/flowers_320x240.png", "img/gardening.png"));

            // Add Chapter2, Section 1
            book.addSection(chapter2, "Chapter 2, section 1",
                    getResource(ROOT + "/book1/chapter2_1.html", "chapter2_1.html"));

            // Add Chapter 3
            book.addSection("Conclusion",
                    getResource(ROOT + "/book1/chapter3.html", "chapter3.html"));

            // Create EpubWriter
            EpubWriter epubWriter = new EpubWriter();

            // Write the Book as Epub
            epubWriter.write(book, new FileOutputStream("test1_book1.epub"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

課題

ここまでなんとかできたけど、ページを適当なところで次ページに移動したい。ここら辺のコントロール方法が知りたい。

VSCodeでMarkDownを使用して電子書籍を作成する

イントロダクション

今まで作成してきたブログ(技術ブログ)をまとめようと思いました。しかし、自分はデザインなどの経験がなく、絵も描けない。。。

ならば、何かしら自分の畑にあるものを使いたいと考えたのが「VSCodeでMarkDownを使用して電子書籍を作成する」ということです。

ポイントとしては、VSCodeでMD(MarkDown)を書く事のメリットとしては、MDからHTMLやPDFなどの別フォーマットへ出力することができるというところです。

しかし、レイアウトを工夫したり、背景画像の設定が行いずらい部分もあるので、HTMLからEPUBやPDFに出力することを考えいます。

HTMLから返還するべきファイル形式を調べる

つまるところは、電子書籍販売時のファイル形式を調査するということです。
結論は以下の3種類が、主だったファイル形式でした。

  • HTML
  • PDF
  • EPUB

VzSCodeでは、「MarkDown PDF」というエクステンションがあります。

まずは、これを使って自分の作りたいものを作れるように頑張りたいと思う次第です。

MarkDown-PDF

Githubにて公開されているエクステンションです。これは以下の機能をサポートしているという記述がありました。

機能

  • 構文の強調表示
  • 絵文字
  • マークダウンイットチェックボックス
  • マークダウンイットコンテナ
  • マークダウンイットインクルード
  • プラントUML -> マークダウン・イット・プラントムル
  • マーメイド

単語だけ並べてもわからないので、それを調べます。。。

まずはセットアップ

VSCodeでエクステンションを追加します。がエクステンションのアイコンです。これをクリックすると下のように見えます。

筆者のVSCodeでは「HTML Preview」と「Markdown PDF」のエクステンションがインストールされています。

ワークスペースの設定をする

File -> Save Workspace As ... を選択します。

すると「XXX.code-workspace」のようなファイルが作成されます。

このファイルはJSONファイルで、単純に設定情報を定義するものになっています。

{
    "folders": [
        {
            "path": "."
        }
    ],
    "settings": {}
}

MarkDown PDFの設定を入れる

今回は、MarkDown PDFでCSSを適用したかったので下のように設定を書きました。「markdown-pdf.styles」というプロパティ(オプション)にCSSを指定しました。GithubのCSSです。ここからダウンロード(chekout)できます。そして、自分の作成する予定のCSS「test.css」も追加しています。

{
    "folders": [
        {
            "path": "."
        }
    ],
    "settings": {
        "markdown-pdf.styles": ["./github-markdown-light.css", "./test.css"]
    }
}

test.cssには下のようなCSSを書いています。

@charset "utf-8";

.sam { color:red}

MDファイルには下のように書いています。

## テスト
<p class="sam">サンプル文字</p>

この状態で、PDF出力してみます。

上のように出力されました。CSSはHTML作成するものと同じです。しかし、MDでクラスを指定する方法がわかりません。

わからないなら調べればよいので、調べます。

MDにクラス属性を指定する

こちらのサイトを参考にしました。
【Markdown】

IDの設定:# Header 1 {#header1}
CLASSの設定:## The Site {.main}

【HTML】

<h1 id="header1">Header 1</h1>
<h2 class="main" id="the-site">The Site</h2>

改ページを入れる

下のコードを追加するとそれ以下のコードは次のページに配置されます。

<div style="page-break-before:always"></div>

想定外なところ

見出しにはクラス属性を指定できたが、段落などの指定ができなかった。

なぜだろう?他のサイトを見ても同じようなやり方をしている。。。
ちょっと迷宮入りかもしれない。

複数カラムのレイアウト

  1. Ctrl + Shift + P を押下
  2. Markdown Preview Enhanced: Customize CSSをクリック
  3. CSS(style.less)でCSSを作成
  4. Ctrl + Shift + Vでプレビューを表示
  5. 右クリックしてPDFを出力する

作成したCSSは以下の通りです。

.column-left{
  float: left;
  width: 57.5%;
  text-align: left;
}

.column-right{
  float: right;
  width: 37.5%;
  text-align: left;
}

MarkDownには下のように記述

<section class="column-left">
 ....
</section>

<section class="column-right">
 ....
</section>

Emoji(絵文字)を使う

  1. VS Code 拡張機能セクションからMardown Emojiをインストールします。
  2. 次のように 2 つのコロンの間に必要な絵文字の名前を入力します。「:smile:」

絵文字のリストはこちらのページにあります。

E-Book出力

こちらのページに必要なアプリケーションが記載されていました。
筆者の場合はWindowsを使用しているので、MSI、インストーラーでインストールできました。「ebook-convert」というのは起動ファイルのことでMSIでインストールしたら、$PATHには追加されるので問題ありません。

MathMLの使い方

イントロダクション

LWJGLの学習をしています。ここで数式が出てくるのですが、これがMathMLで記述されています。これを日本語に訳して理解しようとしているのですが、うまく表示されないので、これを学習しちゃんと表示できるようにしようと考えています。

参照しているページはこちらです。

MathMLとは

MDNのページを参照します。

Mathematical Markup Language (MathML) は、数学的表記を記述し、その構造と内容を表現するための XML マークアップ言語です。

このページには、MathML のパワフルな技術を用いた仕事を助けるための文書、サンプル、ツールへのリンクがあります。簡単な概要は、Mozilla Summit 2013 で行われた innovation fair 向けのスライド をご覧ください。

MathML要素リファレンス

MathML の動作についての理解を深めるためのサンプルと例。

MathMLの書き方

MathML を書くための提案とヒント、おすすめの MathML エディター、その出力をウェブコンテンツへ統合する方法。
<サンプルコード1>

<p>
    One over square root of two (inline style):
    <math>
      <mfrac>
        <mn>1</mn>
        <msqrt>
          <mn>2</mn>
        </msqrt>
      </mfrac>
    </math>
</p>

<出力結果>

One over square root of two (inline style):
1 4

<サンプルコード2>

 <p>
    One over square root of two (display style):
    <math display="block">
      <mfrac>
        <mn>1</mn>
        <msqrt>
          <mn>2</mn>
        </msqrt>
      </mfrac>
    </math>
</p>

<出力結果2>

One over square root of two (inline style):
1 4

注意

MathMLは、MarkDonw内で使うと崩れることがある。その原因がイマイチわからない。改行で間をあけてやるとうまく表示できるときもあるが。。。

OpenShotの使い方~使い方のメモ~

OpenShotの使い方

OpenShotはオープンソースソフトウェア(OSS)です。無料で使い倒すことができます。
その代わり、料金を払っていないのでサポートなどがありません。しかし、使い方などドキュメントの類はあるので心配無用です。

学習方法について

今までに使用したことのないアプリ、ゲーム、仕事様々なシーンで「学習」という行為が必要になります。
やり方は、人それぞれでしょうが今回はクイックスタートに着目したいと思います。
詳細な部分は後々に掘り下げるような計画です。無論不要であれば学習しません。

  1. クイックスタート:使い方の概要、細かい部分は別途見る必要がある
  2. 画面の使い方

学習対象

以下のリンクが対象になります。ユーザーガイドから失敬しました。

  1. Quick Tutorial

クイックスタート

クイックスタートの部分を原文と翻訳の両方を記載します・

Step1: メディアファイルのインポート

ドラッグアンドドロップで行けるようです。
<原文>

Before we can begin making a video, we need to import media files into OpenShot. Most video, image and music file formats will work. Drag and drop a few videos or images and a music file from your Desktop to OpenShot. Be sure to drop the files where the arrow in the illustration is pointing to.
Alternative methods to add files to your projects are described in the section Import Files. The “Show All”, “Video”, “Audio”, “Image” filters above the added files allows you to only see the file types you are interested in.

<日本語(Google翻訳)>

ビデオの作成を開始する前に、メディア ファイルを OpenShot にインポートする必要があります。ほとんどのビデオ、画像、および音楽ファイル形式が機能します。いくつかの動画または画像と音楽ファイルをデスクトップから OpenShot にドラッグ アンド ドロップします。図の矢印が指している場所にファイルをドロップしてください。
プロジェクトにファイルを追加する別の方法は、「ファイルのインポート」セクションで説明されています。追加されたファイルの上にある「すべて表示」、「ビデオ」、「オーディオ」、「画像」フィルタを使用すると、関心のあるファイル タイプのみを表示できます。

Step2: タイムライン上でビデオや写真の編集

<原文>

Next, drag each video or photo onto a track in the timeline (as seen in the illustration). The timeline represents your final video, so arrange your photos in whatever sequence you want them to appear in your video. If you overlap two clips, OpenShot will automatically create a smooth fade between them, displayed by blue rounded rectangles between the clips. Remember, you can rearrange the clips as many times as needed by simply dragging and dropping them.

<日本語(Google翻訳)>

次に、各ビデオまたは写真をタイムラインのトラックにドラッグします (図を参照)。タイムラインは最終的なビデオを表すので、ビデオに表示したい順序で写真を配置します。 2 つのクリップをオーバーラップさせると、OpenShot はそれらの間に滑らかなフェードを自動的に作成し、クリップ間の青い角丸四角形で表示されます。クリップをドラッグ アンド ドロップするだけで、必要に応じて何度でもクリップを並べ替えることができます。

Step3: 音楽をタイムラインに追加

<原文>

To make our creation more interesting, we need to add some music. Click on the music file that you imported in step 1, and drag it onto the timeline. If the song is too long, grab the right edge of your music clip, and resize it smaller (that will make it end earlier). You could also insert the same file multiple times, if your music is too short.

<日本語(Google翻訳)>

私たちの作品をもっと面白くするには、音楽を追加する必要があります。手順 1 でインポートした音楽ファイルをクリックし、タイムラインにドラッグします。曲が長すぎる場合は、ミュージック クリップの右端をつかみ、サイズを小さくします (これにより、早く終了します)。音楽が短すぎる場合は、同じファイルを複数回挿入することもできます。

Step4: 動画を確認

<原文>

To preview what our video looks & sounds like, click the Play button under the preview window. You can also pause, rewind, and fast-forward your video project by clicking the corresponding buttons.

<日本語(Google翻訳)>

ビデオの外観とサウンドをプレビューするには、プレビュー ウィンドウの下にある [再生] ボタンをクリックします。対応するボタンをクリックして、ビデオ プロジェクトを一時停止、巻き戻し、早送りすることもできます。

Step5: 動画の出力

<原文>

Once you are happy with your project, the next step is to export your video. This will convert your OpenShot project into a single video file, which will work on most media players (such as VLC) or websites (such as YouTube, Vimeo, etc…).
Click on the Export Video icon at the top of the screen (or use the File > Export Video menu). Choose from one of the many preset export options, and click the Export Video button.
You should now have a basic understanding of how OpenShot works. Importing, Arranging, Previewing, and Exporting. Hopefully this tutorial took less than 5 minutes for you to complete. Please read the rest of this guide for a more detailed understanding of OpenShot, and it’s advanced features. Enjoy!

<日本語(Google翻訳)>

プロジェクトに満足したら、次のステップはビデオのエクスポートです。これにより、OpenShot プロジェクトが単一のビデオ ファイルに変換され、ほとんどのメディア プレーヤー (VLC など) または Web サイト (YouTube、Vimeo など) で動作します。
画面上部の [ビデオのエクスポート] アイコンをクリックします (または、[ファイル] > [ビデオのエクスポート] メニューを使用します)。多くのプリセット エクスポート オプションから 1 つを選択し、[ビデオのエクスポート] ボタンをクリックします。
これで、OpenShot がどのように機能するかについての基本的な理解が得られたはずです。インポート、アレンジ、プレビュー、およびエクスポート。このチュートリアルが完了するのに 5 分もかからなかったことを願っています。 OpenShot とその高度な機能についてさらに詳しく理解するには、このガイドの残りの部分をお読みください。楽しみ!

画面の使い方

画面の使い方を翻訳しながらなんとかまとめたいと思います。

メイン画面

# 名前 説明
1 メインツールバー ビデオ プロジェクトを開く、保存する、およびエクスポートするためのボタンが含まれています。
2 ファンクションタブ プロジェクト ファイル、トランジション、エフェクトを切り替えます。 
3 プロジェクトファイル プロジェクトにインポートされたすべてのオーディオ、ビデオ、および画像ファイル。
4 プレヴューウィンドウ これは、ビデオが画面上で再生される領域です。
5 エディットツールバー このツールバーには、スナップ、マーカーの挿入、およびマーカー間のジャンプに使用するボタンが含まれています。
6 ズームスライダー このスライダーは、タイムラインのタイム スケールを調整します。
7 プレイヘッド/ルーラー ルーラーはタイム スケールを示し、赤い線は再生ヘッドです。再生ヘッドは、現在の再生位置を表します。
8 タイムライン タイムラインは、ビデオ プロジェクト、およびプロジェクト内の各クリップとトランジションを視覚化します。
9 フィルター これらのボタンとフィルター テキストボックスを使用して、表示される項目 (プロジェクト ファイル、トランジション、エフェクト) のリストをフィルター処理します。探しているものの数文字を入力すると、結果が表示されます。
10 プレイバック 左から右へ: 最初にジャンプ、巻き戻し、再生/一時停止、早送り、最後にジャンプ

ポップアップのチュートリアル


OpenShot を初めて起動すると、わかりやすい組み込みのチュートリアルが表示されます。基本を指摘し、説明します。 [次へ] をクリックすると、次のトピックにジャンプします。このチュートリアルは、[ヘルプ] → [チュートリアル] メニューからいつでも見ることができます。

トラックとレイヤー

OpenShot は、トラックを使用してビデオと画像をレイヤー化します。一番上のトラックが一番上のレイヤーで、一番下のトラックが一番下のレイヤーです。写真編集アプリケーションのレイヤーに精通している場合は、この概念に精通しているはずです。 OpenShot は、写真編集アプリケーションと同じように、各レイヤーを混ぜ合わせます。無制限の数のトラックを持つことができますが、通常、ビデオ プロジェクトには 10 (またはそれ以上) 以上のトラックは必要ありません。

たとえば、3 トラックのビデオ プロジェクトを想像してみてください。

# 名前 説明
1 上のトラック このトラックのクリップは常に一番上に表示されます
2 真ん中のトラック 中央のクリップ (上にあるものによって、表示される場合と表示されない場合があります)
3 下のトラック Clips on this track will always be on the bottom

ショートカット一覧

ショートカット 動き
Ctrl+H オープンショットについて
Ctrl+M マーカー追加
Ctrl+Shift+T トラック追加
Ctrl+W タイムラインに追加
Ctrl+B タイトルのアニメーション
Ctrl+P プロファイルの選択
Ctrl+C Copy
Delete Delete Item
Backspace Delete Item
Ctrl+D 詳細ビュー
Ctrl+E 動画のエクスポート
L 初めに移動
F11 フルスクリーン
Ctrl+F ファイルインポート
Ctrl+End 最後にジャンプ
Ctrl+Home 初めにジャンプ
Ctrl+N 新規プロジェクト
Right 次のフレーム
Ctrl+Right 次のマーカー
Ctrl+O プロジェクトを開く
Ctrl+V ペースト
Space 再生/ポーズの切り替え
Up 再生/ポーズの切り替え
Down 再生/ポーズの切り替え
K 再生/ポーズの切り替え
Ctrl+Shift+P 環境設定
Left 前のフレーム
Ctrl+Left 前のマーカー
Ctrl+I プロパティ
Ctrl+Q 終了
Ctrl+Y 元に戻す
J 巻き戻し
Ctrl+S プロジェクトの保存
Ctrl+Shift+S 名前を付けてプロジェクトの保存
Ctrl+A 全選択
Ctrl+Shift+A 何も選択しない
Ctrl+K すべてスライス: 両端を保持
Ctrl+L すべてスライス: 左恥を保持
Ctrl+J すべてスライス: 右恥を保持
Ctrl+G スナップ乗り換え
R かみそりツールの切り替え
Ctrl+X クリップの切断
Ctrl+Shift+D サムネイル表示
Ctrl+T タイトルエディタ
Ctrl+Z 元に戻す
= Zoom In
Zoom Out
Ctrl+Scroll Zoom In/Out
Ctrl+Middle Button タイムラインのスクロール

ビデオクリップがならない

下のものを確認したら治った。参考サイト

編集→設定→「一般」タブの【ボリューム】のパラメータ、同じく「プレビュー」タブの【再生するオーディオデバイス】の設定は適切ですか?

作成してみました1

ウィンドウズ・ナレーターを使用して作成しました。動画の編集をするなどはおコアなっていません。

作成してみました2

同様にウィンドウズナレーターを使用しました。今回はテロップ的なものも追加しました。
そして、サウンドレコーダーも使用して音声を動画につけてみました。

Google Classroomの使い方

Google Classroomの使い方

Google Classroomの使い方(教師編)

参考サイト: GoogleClassroomヘルプ

  1. クラスの作成方法
  2. 資料を追加する
  3. フォームの作成方法

クラスの作成方法

  1. クラスを作成する

    <入力する内容>
    init1

    <表示する内容>
    init1

  2. 生徒を招待する

資料を追加する

  1. 授業 -> 作成をクリックする
    firstMaterial
  2. 作成するもの(タイプ)を選択する
    firstMaterial2
  3. 必要項目を入力、アップする資料の選択

  1. 作成後、下書き状態になっているので生徒からは見えないので投稿する

  1. 投稿後は以下のようになる

フォームの作成方法

課題の作成

  1. +作成 -> 課題をクリック


質問の追加

  1. 入力内容を書く

  2. Formを選択する

  3. Formの内容を記述する

  4. 問題と選択肢の作成

  5. 入力が終わったら、保存されているので元画面に戻る

  6. 課題の策区政をクリック
     

作成後