Java女子部勉強会に行ってきました。

1/24(土) 関西Java女子部 部活 - connpassに参加してきました。
同じ週の水曜にははじめて女子応援企画!クラウド勉強会【女子限定】 - JAWS-UG KANSAI | Doorkeeperにも参加。
関西で女子会に2回も参加できてすごく楽しかったです。

最初に自己紹介と今日の課題を各自発表、その後自習、3時にスイーツタイム、最後に各自が課題を発表と、あっというまに時間が経過しました!私は最近いろいろはまっているgoogle maps APIなどいろいろ教えていただいてすごく勉強なりました。
(本を読んで静かに勉強していたほかの参加者さん、うるさくしてごめんなさい、^^;)

私の課題は、AWSのS3にJavaを使ってアクセスしてその内容(Bucket)をJavaFXを使って画面に表示することに挑戦してみました。
AWSの勉強会でS3を触ってみた20150121 JAWS-UG関西女子会 第一回勉強会資料 // Speaker Deckを発表されていた(すごく楽しい発表でした)のですが、以前Javaからs3にアクセスするサンプルを実装(コピペ)してみたことを思い出したので、とりあえず勉強会では、bucketを検索して、bucketごとにJavaFXのTabを作成、各bucketのOwnerと作成日を表示するところまでで終わりました。
翌日にファイルをListViewを使って表示する機能を追加しました。
もっといろいろ(例えばファイルのアップロードとか)挑戦していきたいです!

  • AWSコンソールでのbucketを表示


上のAWSコンソールと同じbucketとファイルが表示されました。

  • FXMLDocumentController.java

AWSのS3に接続

        AmazonS3 s3 = new AmazonS3Client();
        Region usWest2 = Region.getRegion(Regions.US_WEST_2);
        s3.setRegion(usWest2);

S3でのbucketを取得して、bucuket毎にタブを作成
作成したタブに「Owner」「作成日」とファイル一覧を表示

        s3.listBuckets().forEach(bucket -> {
            // creating tab for each bucket
            Tab tab = new Tab();
            String bucketNm = bucket.getName();
            tab.setText(bucketNm);
            tabPane.getTabs().add(tab);
            VBox vbox = new VBox(10);
            vbox.setPadding(new Insets(10));
            vbox.setStyle("-fx-background-color: #ffc9ae");
            // Owner
            HBox hbox1 = new HBox(10);
            Label ownerLabel = new Label("Owner:");
            String owner = bucket.getOwner().getDisplayName();
            Text ownerText = new Text(owner);
            hbox1.getChildren().addAll(ownerLabel, ownerText);
            // Create Date
            HBox hbox2 = new HBox(10);
            Label dateLabel = new Label("Create Date:");
            String createDate = bucket.getCreationDate().toString();
            Text dateText = new Text(createDate);
            hbox2.getChildren().addAll(dateLabel, dateText);
            tab.setContent(vbox);
            tab.setStyle("-fx-background-color: #ffc9ae;");
            // ListView for file path
            ObservableList<String> items = FXCollections.observableArrayList("file path");
            ListView view = new ListView(items);
            ObjectListing objList = s3.listObjects(new ListObjectsRequest()
                    .withBucketName(bucketNm)
                    .withPrefix(""))
                    ;
            objList.getObjectSummaries().forEach(obj -> {
                String filePath = obj.getKey();
                items.add(filePath);
            });
            vbox.getChildren().addAll(hbox1, hbox2, view);
        });

とりあえずコードはGitHub - tomoTaka01/JavaFXAWSS3Sample: AWS S3 simple sample by JavaFXにアップしました。

  • 最後に

Java女子会、AWS女子会のスタッフの方々には、お世話になりありがとうございました!
Java女子会ではいつも会場を提供していただいている、Osakan space大阪のコワーキングスペース : Osakan Space (オオサカンスペース) : 本町駅すぐ御堂筋沿い | 御堂筋線本町駅番出口から30秒のCoworking space(コワーキングスペース)です。さんにも感謝です!