Google Docs API V1(Java)を使用して、
ドキュメントを作成・更新する方法
についてご紹介します。
1. ドキュメントを作成
空白のドキュメントを作成します。
APIからドキュメントを作成する場合、まず空白のドキュメントを作成した後に
内容を設定(更新)する必要があります。
空白のドキュメントの作成時、指定できるのはドキュメントのタイトルのみです。
すでにドキュメントがある場合は、ドキュメントを更新からご覧ください。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
DocsScopes.DOCUMENTS
DocsScopes.DRIVE
DocsScopes.DRIVE_FILE
⧉[Google Docs API(V1)] JavaでDocs APIを使う(2.2 Docsインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Docs docs = getDocs();
Docs.Documents documents = docs.documents();
Document content = new Document();
content.setTitle("ドキュメントのタイトル");
Docs.Documents.Create create = documents.create(content);
Document res = create.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST: https://docs.googleapis.com/v1/documents
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありません。
1.2.3. リクエストボディ
Documentのsetメソッドにより、リクエストボディを追加できます。
メソッド |
引数 |
説明 |
setTitle |
String |
ドキュメントのタイトル |
1.3. レスポンスの内容
Document
⧉[Google Docs API(V1)] Javaでドキュメントの情報を取得する(Document)と同じです。
2. ドキュメントを更新
指定のドキュメントを更新します。
2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
DocsScopes.DOCUMENTS
DocsScopes.DRIVE
DocsScopes.DRIVE_FILE
⧉[Google Docs API(V1)] JavaでDocs APIを使う(2.2 Docsインスタンスを取得)
でスコープを指定してください。
2.2. 実行
public static void main(String[] args) throws Exception{
Docs docs = getDocs();
Docs.Documents documents = docs.documents();
BatchUpdateDocumentRequest content = new BatchUpdateDocumentRequest();
Docs.Documents.BatchUpdate update = documents.batchUpdate("ドキュメントID",content);
BatchUpdateDocumentResponse res = update.execute();
System.out.println(res);
}
2.2.1. HTTPリクエスト
POST: https://docs.googleapis.com/v1/documents/{ドキュメントID}:batchUpdate
が実行されます。
2.2.2. クエリパラメータ
クエリパラメータはありません。
2.2.3. リクエストボディ
BatchUpdateDocumentRequestのsetメソッドにより、リクエストボディを追加できます。
メソッド |
引数 |
説明 |
setRequests |
List<Request> |
ドキュメントに適用する更新のリスト |
setWriteControl |
WriteControl |
書き込みリクエストの実行方法 |
Request
ReplaceAllTextRequest
メソッド |
引数 |
説明 |
setReplaceText |
String |
一致したテキストを置き換えるテキスト |
setContainsText |
SubstringMatchCriteria |
この部分文字列に一致するドキュメント内のテキストを検索 |
SubstringMatchCriteria
メソッド |
引数 |
説明 |
setText |
String |
ドキュメント内で検索するテキスト |
setMatchCase |
Boolean |
検索で大文字小文字を区別するか true(大文字と小文字を区別),false(区別しない) |
InsertTextRequest
メソッド |
引数 |
説明 |
setText |
String |
挿入されるテキスト |
setLocation |
Location |
ドキュメント内の特定のインデックスにテキストを挿入 |
setEndOfSegmentLocation |
EndOfSegmentLocation |
ヘッダー、フッター、脚注、ドキュメント本文の末尾にテキストを挿入 |
Location
メソッド |
引数 |
説明 |
setSegmentId |
String |
場所のヘッダー、フッター、または脚注ID。セグメントIDが空であれば、ドキュメントの本文 |
setIndex |
Integer |
インデックス(0開始) |
EndOfSegmentLocation
メソッド |
引数 |
説明 |
setSegmentId |
String |
場所のヘッダー、フッター、または脚注ID。セグメントIDが空であれば、ドキュメントの本文 |
UpdateTextStyleRequest
メソッド |
引数 |
説明 |
setTextStyle |
TextStyle |
テキストに設定するスタイル |
setFields |
String |
更新するフィールド |
setRange |
Range |
スタイルを設定するテキストの範囲 |
CreateParagraphBulletsRequest
BulletGlyphPreset
定義値 |
内容 |
BULLET_GLYPH_PRESET_UNSPECIFIED |
指定無し |
BULLET_DISC_CIRCLE_SQUARE |
最初の3つのリストのネストレベルを表す箇条書きリスト |
BULLET_DIAMONDX_ARROW3D_SQUARE |
最初の3つのリストのネストレベルを表す箇条書きリスト |
BULLET_CHECKBOX |
すべてのリストのネストレベルを表す箇条書きのグリフをCHECKBOX で指定する箇条書き |
BULLET_ARROW_DIAMOND_DISC |
最初の3つのリストのネストレベルを表す箇条書きリスト |
BULLET_STAR_CIRCLE_SQUARE |
最初の3つのリストのネストレベルを表す箇条書きリスト |
BULLET_ARROW3D_CIRCLE_SQUARE |
最初の3つのリストのネストレベルを表す箇条書きリスト |
BULLET_LEFTTRIANGLE_DIAMOND_DISC |
最初の3つのリストのネストレベルを表す箇条書きリスト |
BULLET_DIAMONDX_HOLLOWDIAMOND_SQUARE |
最初の3つのリストのネストレベルを表す箇条書きリスト |
BULLET_DIAMOND_CIRCLE_SQUARE |
最初の3つのリストのネストレベルを表す箇条書きリスト |
NUMBERED_DECIMAL_ALPHA_ROMAN |
最初の3つのリストのネストレベルにピリオド、その後にピリオドが付いた、DECIMAL、ALPHA、ROMAN の数値グリフを含む番号付きリスト |
NUMBERED_DECIMAL_ALPHA_ROMAN_PARENS |
最初の3つのリストのネストレベルを表す数字のグリフ、DECIMAL、ALPHA、ROMAN、その後に丸括弧を続ける番号付きのリスト |
NUMBERED_DECIMAL_NESTED DECIMAL |
数値のグリフをピリオドで区切った番号付きのリスト |
NUMBERED_UPPERALPHA_ALPHA_ROMAN |
最初の3つのリストのネストレベルにピリオド、その後にピリオドが付いた、UPPERALPHA、ALPHA、ROMAN の数値グリフを含む番号付きリスト |
NUMBERED_UPPERROMAN_UPPERALPHA_DECIMAL |
最初の3つのリストのネストレベルにピリオド、その後にピリオドが付いた、UPPERROMAN、UPPERALPHA、DECIMAL の数値グリフを含む番号付きリスト |
NUMBERED_ZERODECIMAL_ALPHA_ROMAN |
最初の3つのリストのネストレベルにピリオド、その後にピリオドが付いた、ZERODECIMAL、ALPHA、ROMAN の数値グリフを含む番号付きリスト |
DeleteParagraphBulletsRequest
メソッド |
引数 |
説明 |
setRange |
Range |
箇条書きを削除する範囲 |
CreateNamedRangeRequest
メソッド |
引数 |
説明 |
setName |
String |
名前 |
setRange |
Range |
名前を適用する範囲 |
DeleteNamedRangeRequest
メソッド |
引数 |
説明 |
setNamedRangeId |
String |
削除する名前付き範囲ID |
setName |
String |
削除する範囲の名前 |
UpdateParagraphStyleRequest
メソッド |
引数 |
説明 |
setParagraphStyle |
ParagraphStyle |
段落に設定するスタイル |
setFields |
String |
更新するフィールド |
setRange |
Range |
スタイルを設定する段落と重なり合う範囲 |
DeleteContentRangeRequest
メソッド |
引数 |
説明 |
setRange |
Range |
削除するコンテンツの範囲 |
InsertInlineImageRequest
メソッド |
引数 |
説明 |
setUri |
String |
画像URI |
setLocation |
Location |
ドキュメント内の特定のインデックスに画像を挿入 |
setEndOfSegmentLocation |
EndOfSegmentLocation |
ヘッダー、フッター、ドキュメント本文の末尾にテキストを挿入 |
InsertTableRequest
メソッド |
引数 |
説明 |
setRows |
Integer |
テーブル内の行数 |
setColumns |
Integer |
テーブル内の列数 |
setLocation |
Location |
特定のモデル インデックスにテーブルを挿入 |
setEndOfSegmentLocation |
EndOfSegmentLocation |
指定したヘッダー、フッター、ドキュメント本文の最後にテーブルを挿入 |
InsertTableRowRequest
メソッド |
引数 |
説明 |
setTableCellLocation |
TableCellLocation |
行の挿入元となる参照テーブルのセルの場所 |
setInsertBelow |
Boolean |
参照セルの場所の下に新しい行を挿入するかどうか true(セルの下に挿入)、false(セルの上に挿入) |
TableCellLocation
メソッド |
引数 |
説明 |
setTableStartLocation |
Location |
ドキュメント内のテーブル開始位置 |
setRowIndex |
Integer |
行インデックス(0開始) |
setColumnIndex |
Integer |
列インデックス(0開始) |
InsertTableColumnRequest
メソッド |
引数 |
説明 |
setTableCellLocation |
TableCellLocation |
列が挿入される参照テーブルのセルの場所 |
setInsertRight |
Boolean |
参照セルの場所の右側に新しい列を挿入するか true(右に挿入)、false(左に挿入 |
DeleteTableRowRequest
DeleteTableColumnRequest
InsertPageBreakRequest
DeletePositionedObjectRequest
メソッド |
引数 |
説明 |
setObjectId |
String |
削除する配置されたオブジェクトID |
UpdateTableColumnPropertiesRequest
メソッド |
引数 |
説明 |
setTableStartLocation |
Location |
ドキュメント内のテーブル開始位置 |
setColumnIndices |
List<Integer> |
列インデックス(0開始)のリスト |
setTableColumnProperties |
TableColumnProperties |
更新するテーブル列のプロパティ |
setFields |
String |
更新するフィールド |
UpdateTableCellStyleRequest
メソッド |
引数 |
説明 |
setTableCellStyle |
TableCellStyle |
表のセルに設定するスタイル |
setFields |
String |
更新するフィールド |
setTableRange |
TableRange |
更新が適用されるテーブルのサブセットを表すテーブル範囲 |
setTableStartLocation |
Location |
ドキュメント内のテーブル開始位置 |
TableRange
メソッド |
引数 |
説明 |
setTableCellLocation |
TableCellLocation |
表の範囲の先頭のセルの場所 |
setRowSpan |
Integer |
テーブル範囲の行スパン |
setColumnSpan |
Integer |
テーブル範囲の列スパン |
UpdateTableRowStyleRequest
メソッド |
引数 |
説明 |
setTableStartLocation |
Location |
ドキュメント内のテーブル開始位置 |
setRowIndices |
List<Integer> |
行インデックス(0開始)のリスト |
setTableRowStyle |
TableRowStyle |
行に設定するスタイル |
setFields |
String |
更新するフィールド |
ReplaceImageRequest
メソッド |
引数 |
説明 |
setImageObjectId |
String |
置き換えられる既存の画像ID |
setUri |
String |
新しい画像URI |
setImageReplaceMethod |
ImageReplaceMethod |
置換メソッド |
ImageReplaceMethod
メソッド |
引数 |
説明 |
setDocumentStyle |
DocumentStyle |
ドキュメントに設定するスタイル |
setFields |
String |
更新するフィールド |
UpdateDocumentStyleRequest
メソッド |
引数 |
説明 |
setDocumentStyle |
DocumentStyle |
ドキュメントに設定するスタイル |
setFields |
String |
更新するフィールド |
MergeTableCellsRequest
メソッド |
引数 |
説明 |
setTableRange |
TableRange |
結合するテーブルのセルを指定するテーブル範囲 |
UnmergeTableCellsRequest
メソッド |
引数 |
説明 |
setTableRange |
TableRange |
結合を解除するテーブルのセルを指定するテーブル範囲 |
CreateHeaderRequest
メソッド |
引数 |
説明 |
setType |
HeaderFooterType |
作成するヘッダーのタイプ |
setSectionBreakLocation |
Location |
このヘッダーが属するセクションの開始位置であるSectionBreak の場所 |
HeaderFooterType
CreateFooterRequest
CreateFootnoteRequest
メソッド |
引数 |
説明 |
setLocation |
Location |
ドキュメント内の特定のインデックスに脚注の参照を挿入 |
ReplaceNamedRangeContentRequest
メソッド |
引数 |
説明 |
setText |
String |
置き換えるテキスト |
setNamedRangeId |
String |
コンテンツが置き換えられる名前付き範囲ID |
setNamedRangeName |
String |
コンテンツを置き換える NamedRanges の名前 |
UpdateSectionStyleRequest
メソッド |
引数 |
説明 |
setRange |
Range |
スタイルを設定するセクションと重なる範囲 |
setSectionStyle |
SectionStyle |
セクションで設定するスタイル |
setFields |
String |
更新するフィールド |
InsertSectionBreakRequest
DeleteHeaderRequest
メソッド |
引数 |
説明 |
setHeaderId |
String |
削除するヘッダーID |
DeleteFooterRequest
メソッド |
引数 |
説明 |
setFooterId |
String |
削除するフッターID |
PinTableHeaderRowsRequest
メソッド |
引数 |
説明 |
setTableStartLocation |
Location |
ドキュメント内のテーブル開始位置 |
setPinnedHeaderRowsCount |
Integer |
固定するテーブル行の数 |
WriteControl(Set)
メソッド |
引数 |
説明 |
setRequiredRevisionId |
String |
書き込みリクエストが適用されるドキュメントのrevisionID |
setTargetRevisionId |
String |
書き込みリクエストが適用されるドキュメントのオプションターゲット revisionID |
TextStyle
メソッド |
引数 |
説明 |
setBold |
Boolean |
テキストを太字でレンダリングするか |
setItalic |
Boolean |
テキストを斜体にするか |
setUnderline |
Boolean |
テキストに下線を引くか |
setStrikethrough |
Boolean |
テキストに取り消し線が引かれるか |
setSmallCaps |
Boolean |
テキストが小文字の大文字表記か |
setBackgroundColor |
OptionalColor |
テキストの背景色 |
setForegroundColor |
OptionalColor |
テキストの前景色 |
setFontSize |
Dimension |
テキストのフォントのサイズ |
setWeightedFontFamily |
WeightedFontFamily |
フォント ファミリーと、テキストのレンダリングの太さ |
setBaselineOffset |
BaselineOffset(enum) |
通常の位置からのテキストの垂直オフセット |
setLink |
Link |
テキストのハイパーリンクのリンク先 |
OptionalColor
メソッド |
引数 |
説明 |
setColor |
Color |
透明な色 |
Color
メソッド |
引数 |
説明 |
setRgbColor |
RgbColor |
RGB カラー値 |
Dimension
メソッド |
引数 |
説明 |
setMagnitude |
Double |
強度 |
setUnit |
Unit(enum) |
大きさの単位 |
WeightedFontFamily
メソッド |
引数 |
説明 |
setFontFamily |
String |
テキストのフォントファミリー |
setWeight |
Integer |
フォントの太さ |
Link
メソッド |
引数 |
説明 |
url |
String |
外部 URL |
setBookmarkId |
String |
このドキュメント内のブックマークID |
setHeadingId |
String |
このドキュメントの見出しID |
RgbColor
メソッド |
引数 |
説明 |
setRed |
Float |
赤色(0.0 ~ 1.0) |
setGreen |
Float |
緑色(0.0 ~ 1.0) |
setBlue |
Float |
青色(0.0 ~ 1.0) |
Range
メソッド |
引数 |
説明 |
setSegmentId |
String |
この範囲が含まれているヘッダー、フッター、または脚注ID |
setStartIndex |
Integer |
範囲の開始インデックス(0開始) |
setEndIndex |
Integer |
範囲の終了インデックス(0開始) |
ParagraphStyle
ParagraphBorder
TabStop
Shading
TableColumnProperties
TableCellStyle
TableCellBorder
TableRowStyle
メソッド |
引数 |
説明 |
setMinRowHeight |
Dimension |
行の最小の高さ |
setTableHeader |
Boolean |
行が表の見出しか |
setPreventOverflow |
Boolean |
行がページまたは列の境界を越えてはみ出さないかどうか |
DocumentStyle
メソッド |
引数 |
説明 |
setBackground |
Background |
ドキュメントの背景 |
setDefaultHeaderId |
String |
デフォルト ヘッダーID |
setDefaultFooterId |
String |
デフォルトのフッターID |
setEvenPageHeaderId |
String |
偶数ページでのみ使用されるヘッダーID |
setEvenPageFooterId |
String |
偶数ページでのみ使用されるフッターID |
setFirstPageHeaderId |
String |
最初のページでのみ使用されるヘッダーID |
setFirstPageFooterId |
String |
最初のページでのみ使用されるフッターID |
setUseFirstPageHeaderFooter |
Boolean |
最初のページで最初のページのヘッダーまたはフッターのIDを使用するか |
setUseEvenPageHeaderFooter |
Boolean |
偶数ページで偶数ページのヘッダー/フッターIDを使用するか |
setPageNumberStart |
Integer |
ページ数のカウントを開始するページ番号 |
setMarginTop |
Dimension |
トップページのマージン |
setMarginBottom |
Dimension |
ページの下部余白 |
setMarginRight |
Dimension |
ページの右余白 |
setMarginLeft |
Dimension |
左のページ余白 |
setPageSize |
Size |
ドキュメント内のページのサイズ |
setMarginHeader |
Dimension |
ページの上部とヘッダー コンテンツの間のスペースの大きさ |
setMarginFooter |
Dimension |
ページの下部とフッターのコンテンツの間のスペースの量 |
setUseCustomHeaderFooterMargins |
Boolean |
ヘッダーまたはフッダーを遵守されるか |
setFlipPageOrientation |
Boolean |
サイズを反転して、ページの向き(縦向きと横向き)を変更できるか |
Size
Background
SectionStyle
メソッド |
引数 |
説明 |
setColumnProperties |
List<SectionColumnProperties> |
セクションの列のプロパティ |
setColumnSeparatorStyle |
ColumnSeparatorStyle(enum) |
列区切りのスタイル |
setContentDirection |
ContentDirection(enum) |
このセクションのコンテンツの方向 |
setMarginTop |
Dimension |
セクションのトップページの余白 |
setMarginBottom |
Dimension |
セクションの下部ページの余白 |
setMarginRight |
Dimension |
セクションの右側のページ余白 |
setMarginLeft |
Dimension |
セクションの左のページ余白 |
setMarginHeader |
Dimension |
セクションのヘッダーマージン |
setMarginFooter |
Dimension |
セクションのフッターマージン |
setSectionType |
SectionType(enum) |
出力のみ。セクションのタイプ |
setDefaultHeaderId |
String |
デフォルトヘッダーID |
setDefaultFooterId |
String |
デフォルトのフッターID |
setFirstPageHeaderId |
String |
セクションの1ページ目でのみ使用されるヘッダーID |
setFirstPageFooterId |
String |
セクションの最初のページでのみ使用されるフッターID |
setEvenPageHeaderId |
String |
偶数ページでのみ使用されるヘッダーID |
setEvenPageFooterId |
String |
偶数ページでのみ使用されるフッターID |
setUseFirstPageHeaderFooter |
Boolean |
セクションの最初のページに最初のページのヘッダーまたはフッターのIDを使用するか |
setPageNumberStart |
Integer |
このセクションのページ数のカウントを開始するページ番号 |
setFlipPageOrientation |
Boolean |
このセクションの DocumentStyleのpageSize のサイズを反転するか |
SectionColumnProperties
Unit
定義値 |
内容 |
UNIT_UNSPECIFIED |
単位が不明 |
PT |
ポイント |
BaselineOffset
定義値 |
内容 |
BASELINE_OFFSET_UNSPECIFIED |
テキストのベースライン |
NONE |
テキストが垂直方向にオフセットされていない |
SUPERSCRIPT |
テキストは垂直方向に上向き(上付き文字) |
SUBSCRIPT |
テキストは垂直方向に下方向(下付き文字) |
NamedStyleType
定義値 |
内容 |
NAMED_STYLE_TYPE_UNSPECIFIED |
指定無し |
NORMAL_TEXT |
標準テキスト |
TITLE |
タイトル |
SUBTITLE |
サブタイトル |
HEADING_1 |
見出し1 |
HEADING_2 |
見出し2 |
HEADING_3 |
見出し3 |
HEADING_4 |
見出し4 |
HEADING_5 |
見出し5 |
HEADING_6 |
見出し6 |
Alignment
定義値 |
内容 |
ALIGNMENT_UNSPECIFIED |
段落の配置は親から継承 |
START |
段落は行頭に揃えられる |
CENTER |
段落が中央に配置 |
END |
段落は行末に揃えられる |
JUSTIFIED |
段落が両端揃え |
ContentDirection
定義値 |
内容 |
CONTENT_DIRECTION_UNSPECIFIED |
指定無し |
LEFT_TO_RIGHT |
コンテンツは左から右 |
RIGHT_TO_LEFT |
コンテンツは右から左 |
SpacingMode
定義値 |
内容 |
SPACING_MODE_UNSPECIFIED |
間隔モードは親から継承 |
NEVER_COLLAPSE |
段落の間隔は常にレンダリング |
COLLAPSE_LISTS |
リスト要素間の段落間隔はスキップ |
DashStyle
定義値 |
内容 |
DASH_STYLE_UNSPECIFIED |
指定無し |
SOLID |
実線 |
DOT |
点線 |
DASH |
破線 |
TabStopAlignment
定義値 |
内容 |
TAB_STOP_ALIGNMENT_UNSPECIFIED |
指定無し |
START |
タブ位置は行頭に揃えられる |
CENTER |
タブ位置は行の中央に揃えられる |
END |
タブ位置は行末に揃えられる |
WidthType
定義値 |
内容 |
WIDTH_TYPE_UNSPECIFIED |
指定無し |
EVENLY_DISTRIBUTED |
列幅は均等に分散した他の列間で均等に分配 |
FIXED_WIDTH |
固定の列幅 |
ContentAlignment
定義値 |
内容 |
CONTENT_ALIGNMENT_UNSPECIFIED |
未指定のコンテンツの配置 |
CONTENT_ALIGNMENT_UNSUPPORTED |
サポートされていないコンテンツの配置 |
TOP |
コンテンツをコンテンツ ホルダーの上端に揃える配置 |
MIDDLE |
コンテンツをコンテンツ ホルダーの中央に揃える配置 |
BOTTOM |
コンテンツをコンテンツ ホルダーの下部に揃える配置 |
ColumnSeparatorStyle
定義値 |
内容 |
COLUMN_SEPARATOR_STYLE_UNSPECIFIED |
指定無し |
NONE |
列間に列区切り線を入れない |
BETWEEN_EACH_COLUMN |
各列の間に列区切り線をレンダリング |
SectionType
定義値 |
内容 |
SECTION_TYPE_UNSPECIFIED |
指定無し |
CONTINUOUS |
前のセクションの最後の段落の直後に開始 |
NEXT_PAGE |
次のページから開始 |
2.3. レスポンスの内容
BatchUpdateDocumentResponse
メソッド |
戻り値 |
説明 |
getDocumentId |
String |
ドキュメントID |
getReplies |
List<Response
|
更新情報の返信 |
getWriteControl |
WriteControl |
リクエストの適用後に更新された書き込みコントロール |
Response
ReplaceAllTextResponse
メソッド |
戻り値 |
説明 |
getOccurrencesChanged |
Integer |
置換の出現回数 |
CreateNamedRangeResponse
メソッド |
戻り値 |
説明 |
getNamedRangeId |
String |
作成された名前付き範囲ID |
InsertInlineImageResponse
メソッド |
戻り値 |
説明 |
getObjectId |
String |
作成されたInlineObjectID |
InsertInlineSheetsChartResponse
メソッド |
戻り値 |
説明 |
getObjectId |
String |
挿入されたグラフのオブジェクトID |
CreateHeaderResponse
メソッド |
戻り値 |
説明 |
getHeaderId |
String |
作成されたヘッダーID |
CreateFooterResponse
メソッド |
戻り値 |
説明 |
getFooterId |
String |
作成されたフッターID |
CreateFootnoteResponse
メソッド |
戻り値 |
説明 |
getFootnoteId |
String |
作成された脚注ID |
WriteControl
メソッド |
戻り値 |
説明 |
getRequiredRevisionId |
String |
書き込みリクエストが適用されるドキュメントのrevisionID |
getTargetRevisionId |
String |
書き込みリクエストが適用されるドキュメントのオプションターゲット revisionID |
おしまい。。