﻿{"id":1776,"date":"2014-12-11T01:23:10","date_gmt":"2014-12-10T16:23:10","guid":{"rendered":"http:\/\/yucchi.jp\/blog\/?p=1776"},"modified":"2014-12-11T01:26:32","modified_gmt":"2014-12-10T16:26:32","slug":"javafx-%e3%81%a7%e8%8b%b1%e8%aa%9e%e5%8a%9b%e3%82%92%e8%a3%9c%e3%81%86","status":"publish","type":"post","link":"http:\/\/yucchi.jp\/blog\/?p=1776","title":{"rendered":"JavaFX \u3067\u82f1\u8a9e\u529b\u3092\u88dc\u3046"},"content":{"rendered":"<p>\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u306f\u3001<a href=\"http:\/\/www.adventar.org\/calendars\/380\" target=\"_blank\">JavaFX Advent Calendar 2014<\/a>, 11\u65e5\u76ee\u306e\u304a\u307e\u3051\u3067\u3059\u3002<\/p>\n<p>\u6628\u65e5\u306f @toruwest \u3055\u3093\u306e\u300c<a href=\"http:\/\/toruwest.hatenablog.com\/entry\/2014\/12\/10\/110731\" target=\"_blank\">JavaFX\u306eTreeView\u3067\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3057\u3066\u307f\u308b<\/a>\u300d\u3067\u3057\u305f\u3002<\/p>\n<p>\u660e\u65e5\u306f @skrb \u3055\u3093\u306e\u300cJava Advent Calendar\u3068\u4e00\u7dd2\u306b\u306a\u306b\u304b\u66f8\u304d\u307e\u3059\u300d\u3067\u3059\u3002<\/p>\n<p>JavaFX Advent Calendar 2014\u30016\u65e5\u76ee\u306e Katsumi Kokuzawa \u3055\u3093\u306e\u300c<a href=\"http:\/\/kokuzawa.github.io\/blog\/2014\/12\/06\/javafxdemarkdownedeitawozuo-ru\/\" target=\"_blank\">JavaFX\u3067Markdown\u30a8\u30c7\u30a3\u30bf\u3092\u4f5c\u308b<\/a>\u300d\u3092\u8aad\u3093\u3067<\/p>\n<p>\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306b\u5165\u529b\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u304c\u5909\u63db\u3055\u308c\u8868\u793a\u3055\u308c\u308b\u306e\u3063\u3066\u683c\u597d\u3044\u3044\u306a\u3041\u3063\u3066\u601d\u3063\u305f\u306e\u3067\u81ea\u5206\u3082\u30c1\u30e3\u30ec\u30f3\u30b8\u3057\u3066\u307f\u305f\u3002<\/p>\n<p>\u79c1\u306f\u82f1\u8a9e\u304c\u99c4\u76ee\u306a\u6b8b\u5ff5\u306a\u4eba\u9593\u306a\u306e\u3067\u3000Google \u3055\u3093\u3068 JavaFX \u3055\u3093\u306b\u52a9\u3051\u3066\u3082\u3089\u3046\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n<p>\u7ffb\u8a33\u3068\u97f3\u58f0\u306f <a href=\"https:\/\/code.google.com\/p\/java-google-translate-text-to-speech\/\" target=\"_blank\">java-google-translate-text-to-speech<\/a> \u3092\u5229\u7528\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3057\u305f\u3002<\/p>\n<p>\u7ffb\u8a33\u306f\u4e0b\u8a18 FXMLDocumentController \u30af\u30e9\u30b9\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9 145 \u884c\u76ee\u304b\u3089 152 \u884c\u76ee\u307e\u3067\u306e\u3068\u3053\u308d\u3067\u51e6\u7406\u3092\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u6587\u5b57\u3092\u4e00\u90e8\u7f6e\u304d\u63db\u3048\u3066\u3044\u308b\u306e\u306f\u30a8\u30e9\u30fc\u304c\u51fa\u308b\u305f\u3081\u306e\u305d\u306e\u5834\u3057\u306e\u304e\u306e\u9069\u5f53\u306a\u5bfe\u5fdc\u3067\u3059\u3002<\/p>\n<p>\u305d\u308c\u3068\u9577\u6587\u306b\u306a\u308b\u3068\u30a8\u30e9\u30fc\u304c\u51fa\u307e\u3059\u3002<\/p>\n<p>\u305d\u3046\u3044\u3046\u4ed5\u69d8\u306a\u306e\u304b\u30d0\u30b0\u306a\u306e\u304b\u3001\u4f7f\u3044\u65b9\u304c\u60aa\u3044\u306e\u304b\u306f\u89e3\u308a\u307e\u305b\u3093\u3002(^_^;)<\/p>\n<p>\u3068\u308a\u3042\u3048\u305a\u7684\u306a\uff08\u4f7f\u3044\u7269\u306b\u306a\u3089\u306a\u3044\uff09\u7ffb\u8a33\u6a5f\u3092\u4f5c\u3063\u305f\u3088\u3068\u3044\u3046\u304a\u8a71\u3057\u3067\u3057\u305f\u3002<\/p>\n<p>\u52d5\u753b\u3068\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30b3\u30fc\u30c9\u3092\u8cbc\u3063\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<p><iframe loading=\"lazy\" height=\"360\" src=\"\/\/www.youtube.com\/embed\/ir02YKeGZ0k?rel=0\" frameborder=\"0\" width=\"640\" allowfullscreen><\/iframe> <\/p>\n<p>&nbsp;<\/p>\n<p><pre title=\"FXMLDocument.fxml\">\r\n\r\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n\r\n<?import javafx.scene.text.*?>\r\n<?import javafx.geometry.*?>\r\n<?import java.lang.*?>\r\n<?import java.util.*?>\r\n<?import javafx.scene.*?>\r\n<?import javafx.scene.control.*?>\r\n<?import javafx.scene.layout.*?>\r\n\r\n<AnchorPane id=\"AnchorPane\" prefHeight=\"300.0\" prefWidth=\"800.0\" xmlns=\"http:\/\/javafx.com\/javafx\/8\" xmlns:fx=\"http:\/\/javafx.com\/fxml\/1\" fx:controller=\"jp.yucchi.javafx.google.translater.FXMLDocumentController\">\r\n   <children>\r\n      <VBox layoutX=\"195.0\" layoutY=\"129.0\" prefHeight=\"300.0\" prefWidth=\"800.0\" AnchorPane.bottomAnchor=\"0.0\" AnchorPane.leftAnchor=\"0.0\" AnchorPane.rightAnchor=\"0.0\" AnchorPane.topAnchor=\"0.0\">\r\n         <children>\r\n            <HBox alignment=\"CENTER\" prefHeight=\"50.0\" prefWidth=\"200.0\">\r\n               <children>\r\n                  <Label fx:id=\"jp\" alignment=\"CENTER\" prefHeight=\"17.0\" prefWidth=\"400.0\" text=\"Japanese\">\r\n                     <HBox.margin>\r\n                        <Insets left=\"10.0\" right=\"5.0\" \/>\r\n                     <\/HBox.margin>\r\n                     <font>\r\n                        <Font size=\"14.0\" \/>\r\n                     <\/font>\r\n                  <\/Label>\r\n                  <Label fx:id=\"en\" alignment=\"CENTER\" prefHeight=\"17.0\" prefWidth=\"400.0\" text=\"English\">\r\n                     <HBox.margin>\r\n                        <Insets left=\"5.0\" right=\"10.0\" \/>\r\n                     <\/HBox.margin>\r\n                     <font>\r\n                        <Font size=\"14.0\" \/>\r\n                     <\/font>\r\n                  <\/Label>\r\n               <\/children>\r\n            <\/HBox>\r\n            <HBox prefHeight=\"250.0\" prefWidth=\"800.0\">\r\n               <children>\r\n                  <TextArea fx:id=\"jTextArea\" prefHeight=\"200.0\" prefWidth=\"400.0\" wrapText=\"true\">\r\n                     <padding>\r\n                        <Insets bottom=\"3.0\" left=\"3.0\" right=\"3.0\" top=\"3.0\" \/>\r\n                     <\/padding>\r\n                     <HBox.margin>\r\n                        <Insets left=\"10.0\" right=\"5.0\" top=\"5.0\" \/>\r\n                     <\/HBox.margin>\r\n                     <font>\r\n                        <Font size=\"18.0\" \/>\r\n                     <\/font>\r\n                  <\/TextArea>\r\n                  <TextArea fx:id=\"eTextArea\" prefHeight=\"200.0\" prefWidth=\"400.0\" wrapText=\"true\">\r\n                     <padding>\r\n                        <Insets bottom=\"3.0\" left=\"3.0\" right=\"3.0\" top=\"3.0\" \/>\r\n                     <\/padding>\r\n                     <HBox.margin>\r\n                        <Insets left=\"5.0\" right=\"10.0\" top=\"5.0\" \/>\r\n                     <\/HBox.margin>\r\n                     <font>\r\n                        <Font size=\"18.0\" \/>\r\n                     <\/font>\r\n                  <\/TextArea>\r\n               <\/children>\r\n            <\/HBox>\r\n            <HBox alignment=\"CENTER\" prefHeight=\"50.0\" prefWidth=\"800.0\">\r\n               <children>\r\n                  <Button fx:id=\"clearButton\" mnemonicParsing=\"false\" onAction=\"#clearButtonAction\" prefHeight=\"25.0\" prefWidth=\"400.0\" text=\"Clear\">\r\n                     <HBox.margin>\r\n                        <Insets left=\"10.0\" right=\"5.0\" \/>\r\n                     <\/HBox.margin>\r\n                     <font>\r\n                        <Font size=\"14.0\" \/>\r\n                     <\/font>\r\n                  <\/Button>\r\n                  <Button fx:id=\"eSpeakButton\" mnemonicParsing=\"false\" onAction=\"#eSpeakButtonAction\" prefHeight=\"25.0\" prefWidth=\"400.0\" text=\"Speak\">\r\n                     <HBox.margin>\r\n                        <Insets left=\"5.0\" right=\"10.0\" \/>\r\n                     <\/HBox.margin>\r\n                     <font>\r\n                        <Font size=\"14.0\" \/>\r\n                     <\/font>\r\n                  <\/Button>\r\n               <\/children>\r\n            <\/HBox>\r\n         <\/children>\r\n      <\/VBox>\r\n      <ProgressIndicator fx:id=\"progressIndicator\" layoutX=\"289.0\" layoutY=\"64.0\" opacity=\"0.8\" prefHeight=\"155.0\" prefWidth=\"224.0\" \/>\r\n   <\/children>\r\n<\/AnchorPane>\r\n\r\n<\/pre>\n<\/p>\n<p><pre title=\"JavaFXGoogleTranslater.java\">\r\n\r\npackage jp.yucchi.javafx.google.translater;\r\n\r\nimport javafx.application.Application;\r\nimport javafx.fxml.FXMLLoader;\r\nimport javafx.scene.Scene;\r\nimport javafx.scene.layout.AnchorPane;\r\nimport javafx.stage.Stage;\r\n\r\n\/**\r\n *\r\n * @author Yucchi\r\n *\/\r\npublic class JavaFXGoogleTranslater extends Application {\r\n    \r\n    @Override\r\n    public void start(Stage stage) throws Exception {\r\n        \r\n        FXMLLoader loader = new FXMLLoader(getClass().getResource(\"FXMLDocument.fxml\"));\r\n        loader.load();\r\n        AnchorPane root = loader.getRoot();\r\n        Scene scene = new Scene(root);\r\n        \r\n        FXMLDocumentController controller = loader.getController();\r\n        controller.setStage(stage);\r\n        \r\n        stage.setResizable(false);\r\n        stage.setTitle(\"JavaFX Google Translater\");\r\n        stage.setScene(scene);\r\n        stage.show();\r\n        \r\n    }\r\n\r\n    \/**\r\n     * @param args the command line arguments\r\n     *\/\r\n    public static void main(String[] args) {\r\n        launch(args);\r\n    }\r\n    \r\n}\r\n\r\n<\/pre>\n<\/p>\n<p><pre title=\"FXMLDocumentController.java\">\r\n\r\npackage jp.yucchi.javafx.google.translater;\r\n\r\nimport com.gtranslate.Audio;\r\nimport com.gtranslate.Language;\r\nimport com.gtranslate.Translator;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.net.URL;\r\nimport java.util.ResourceBundle;\r\nimport java.util.concurrent.ExecutorService;\r\nimport java.util.concurrent.Executors;\r\nimport java.util.logging.Level;\r\nimport java.util.logging.Logger;\r\nimport javafx.application.Platform;\r\nimport javafx.beans.binding.Bindings;\r\nimport javafx.beans.property.StringProperty;\r\nimport javafx.concurrent.Task;\r\nimport javafx.event.ActionEvent;\r\nimport javafx.fxml.FXML;\r\nimport javafx.fxml.Initializable;\r\nimport javafx.scene.control.Button;\r\nimport javafx.scene.control.Label;\r\nimport javafx.scene.control.ProgressIndicator;\r\nimport javafx.scene.control.TextArea;\r\nimport javafx.stage.Stage;\r\nimport javazoom.jl.decoder.JavaLayerException;\r\n\r\n\/**\r\n *\r\n * @author Yucchi\r\n *\/\r\npublic class FXMLDocumentController implements Initializable {\r\n\r\n    @FXML\r\n    private Label jp;\r\n\r\n    @FXML\r\n    private Label en;\r\n\r\n    @FXML\r\n    private TextArea jTextArea;\r\n\r\n    @FXML\r\n    private TextArea eTextArea;\r\n\r\n    @FXML\r\n    private Button clearButton;\r\n\r\n    @FXML\r\n    private Button eSpeakButton;\r\n\r\n    @FXML\r\n    private ProgressIndicator progressIndicator;\r\n\r\n    private ExecutorService service;\r\n\r\n    private Task<Void> task;\r\n\r\n    @FXML\r\n    private void clearButtonAction(ActionEvent event) {\r\n\r\n        jTextArea.setText(\"\");\r\n        eTextArea.setText(\"\");\r\n\r\n        if (!task.isCancelled()) {\r\n            task.cancel();\r\n        }\r\n\r\n    }\r\n\r\n    @FXML\r\n    private void eSpeakButtonAction(ActionEvent event) {\r\n\r\n        eSpeakButton.setVisible(false);\r\n        progressIndicator.setVisible(true);\r\n\r\n        task = new Task<Void>() {\r\n            @Override\r\n            protected Void call() throws Exception {\r\n\r\n                InputStream sound = null;\r\n                try {\r\n                    Audio audio = Audio.getInstance();\r\n                    sound = audio.getAudio(eTextArea.getText(), Language.ENGLISH);\r\n                    audio.play(sound);\r\n                } catch (IOException | JavaLayerException ex) {\r\n                    Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);\r\n                } finally {\r\n                    try {\r\n                        sound.close();\r\n                    } catch (IOException ex) {\r\n                        Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);\r\n                    }\r\n                }\r\n\r\n                return null;\r\n            }\r\n\r\n            @Override\r\n            protected void succeeded() {\r\n                eSpeakButton.setVisible(true);\r\n                progressIndicator.setVisible(false);\r\n\r\n            }\r\n\r\n            ;\r\n         \r\n          @Override\r\n            protected void cancelled() {\r\n                eSpeakButton.setVisible(true);\r\n                progressIndicator.setVisible(false);\r\n            }\r\n\r\n            @Override\r\n            protected void failed() {\r\n                eSpeakButton.setVisible(true);\r\n                progressIndicator.setVisible(false);\r\n            }\r\n\r\n        };\r\n\r\n        service.submit(task);\r\n\r\n    }\r\n\r\n    @Override\r\n    public void initialize(URL url, ResourceBundle rb) {\r\n\r\n        progressIndicator.setVisible(false);\r\n\r\n        service = Executors.newSingleThreadExecutor();\r\n\r\n        eSpeakButton.disableProperty()\r\n                .bind(\r\n                        Bindings.when(eTextArea.textProperty().isEmpty())\r\n                        .then(true)\r\n                        .otherwise(false));\r\n\r\n        clearButton.disableProperty()\r\n                .bind(\r\n                        Bindings.when(jTextArea.textProperty().isEmpty().and(eTextArea.textProperty().isEmpty()))\r\n                        .then(true)\r\n                        .otherwise(false));\r\n\r\n        jTextArea.textProperty().addListener(observable -> {\r\n            final String s = ((StringProperty) observable).get();\r\n            \/\/ \u30a8\u30e9\u30fc\u51fa\u308b\u305f\u3081\u9069\u5f53\u306b\u7f6e\u304d\u63db\u3048\r\n            final String _s = s.replaceAll(\"\\\\r\\\\n|\\\\r|\\\\n\", \"\").replaceAll(\"\u3002\", \".\").replaceAll(\"\u3001\", \"\").replaceAll(\"\uff1f\", \"?\").replaceAll(\"\uff01\", \"!\");\r\n            Translator translate = Translator.getInstance();\r\n            String englishText = translate.translate(_s, Language.JAPANESE, Language.ENGLISH);\r\n            eTextArea.setText(englishText);\r\n        });\r\n    }\r\n\r\n    void setStage(Stage stage) {\r\n\r\n        stage.setOnCloseRequest(we -> {\r\n\r\n            if (service != null && !service.isShutdown()) {\r\n                service.shutdownNow();\r\n            }\r\n\r\n            Platform.exit();\r\n            System.exit(0);\r\n\r\n        });\r\n\r\n    }\r\n\r\n}\r\n\r\n\r\n<\/pre>\n<\/p>\n<p>\u3053\u308c\u3067\u82f1\u8a9e\u529b\u304c\u4e0a\u304c\u308b\u3068\u3046\u308c\u3057\u3044\u3051\u3069\u52aa\u529b\u3057\u306a\u3044\u3067\u3063\u3066\u306e\u306f\u5b8c\u5168\u306b\u7121\u7406\u306a\u8a71\u3057\u3067\u3059\u306d\u3002<\/p>\n<p>JavaFX \u697d\u3057\u3044\uff01<\/p>\n<div id=\"scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1af33c69-94fc-40f3-a8fa-b59855d17bca\" class=\"wlWriterEditableSmartContent\" style=\"float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px\">Hatena \u30bf\u30b0: <a href=\"http:\/\/b.hatena.ne.jp\/t\/JavaFX\" rel=\"tag\">JavaFX<\/a><\/div>\n<div class='wp_social_bookmarking_light'>\n            <div class=\"wsbl_hatena\"><a href='\/\/b.hatena.ne.jp\/add?mode=confirm&url=http%3A%2F%2Fyucchi.jp%2Fblog%2F%3Fp%3D1776&title=JavaFX%20%E3%81%A7%E8%8B%B1%E8%AA%9E%E5%8A%9B%E3%82%92%E8%A3%9C%E3%81%86' title='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='http:\/\/yucchi.jp\/blog\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/hatena.gif' alt='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' title='\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0' width='16' height='12' class='wp_social_bookmarking_light_img' \/><\/a><\/div>\n            <div class=\"wsbl_facebook\"><a href='http:\/\/www.facebook.com\/share.php?u=http%3A%2F%2Fyucchi.jp%2Fblog%2F%3Fp%3D1776&t=JavaFX%20%E3%81%A7%E8%8B%B1%E8%AA%9E%E5%8A%9B%E3%82%92%E8%A3%9C%E3%81%86' title='Facebook \u306b\u30b7\u30a7\u30a2' rel=nofollow class='wp_social_bookmarking_light_a' target=_blank><img src='http:\/\/yucchi.jp\/blog\/wp-content\/plugins\/wp-social-bookmarking-light\/public\/images\/facebook.png' alt='Facebook \u306b\u30b7\u30a7\u30a2' title='Facebook \u306b\u30b7\u30a7\u30a2' width='16' height='16' class='wp_social_bookmarking_light_img' \/><\/a><\/div>\n            <div class=\"wsbl_google_plus_one\"><g:plusone size=\"medium\" annotation=\"none\" href=\"http:\/\/yucchi.jp\/blog\/?p=1776\" ><\/g:plusone><\/div>\n            <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"http:\/\/yucchi.jp\/blog\/?p=1776\" data-text=\"JavaFX \u3067\u82f1\u8a9e\u529b\u3092\u88dc\u3046\" data-lang=\"ja\">Tweet<\/a><\/div>\n    <\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u306f\u3001JavaFX Advent Calendar 2014, 11\u65e5\u76ee\u306e\u304a\u307e\u3051\u3067\u3059\u3002 \u6628\u65e5\u306f @toruwest \u3055\u3093\u306e\u300cJavaFX\u306eTreeView\u3067\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3057\u3066\u307f\u308b\u300d\u3067\u3057\u305f\u3002 \u660e\u65e5\u306f @skrb \u3055\u3093\u306e\u300cJava Advent Calendar\u3068\u4e00\u7dd2\u306b\u306a\u306b\u304b\u66f8\u304d\u307e\u3059\u300d\u3067\u3059\u3002 JavaFX Advent Calendar 2014\u30016\u65e5\u76ee\u306e Katsumi Kokuzawa \u3055\u3093\u306e\u300cJavaFX\u3067Markdown\u30a8\u30c7\u30a3\u30bf\u3092\u4f5c\u308b\u300d\u3092\u8aad\u3093\u3067 \u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306b\u5165\u529b\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u304c\u5909\u63db\u3055\u308c\u8868\u793a\u3055\u308c\u308b\u306e\u3063\u3066\u683c\u597d\u3044\u3044\u306a\u3041\u3063\u3066\u601d\u3063\u305f\u306e\u3067\u81ea\u5206\u3082\u30c1\u30e3\u30ec\u30f3\u30b8\u3057\u3066\u307f\u305f\u3002 \u79c1\u306f\u82f1\u8a9e\u304c\u99c4\u76ee\u306a\u6b8b\u5ff5\u306a\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[21],"class_list":["post-1776","post","type-post","status-publish","format-standard","hentry","category-javafx","tag-javafx"],"_links":{"self":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1776"}],"version-history":[{"count":3,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1776\/revisions"}],"predecessor-version":[{"id":1779,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1776\/revisions\/1779"}],"wp:attachment":[{"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1776"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/yucchi.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}