SlideShare uma empresa Scribd logo
1 de 80
Baixar para ler offline
Xtend
30 分   クッキング
Xtend
30 分   クッキング
IT'S JUST Java
Xtend Extends Java
愛   は   焼   肉   にある。
Xtend
30 分   クッキング
Java ソースへ変換
拡張メソッド
ローカル型推論
ステートメントレス(全てが式)
強力な Switch 式
ラムダ
演算子上書き
テンプレート式
プロパティ
Xtend news!
                JavaOne 2012

   Xtend at JavaOne
             10/2 10:00
Sebastian's プレゼンテーション on Xtend
                           Video is online
https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=6630
Xtend
    30 分     クッキング




愛    は   X     tend にある。
           やきに駆動の提供でお送りします。
先生のレシピ
                                                        先生のレシピ

                      @s_kozake 先生                s_kozake せんせい

                       Xtend 研究家・トラブル火消士。
                       某大学卒業後、某大手 SIer 企業での下積み ( 常駐 ) を経て
                       自社のビックプロジェクトに従事するに至る。
                       2 人の娘さんの父親でもあり、過酷な育児の日々の中、
                       「 No ドラクエ No ライフ」で廃人まっしぐら中。

著プレゼン / LT (http://www.slideshare.net/s_kozake)

「 Play! Together 」( Play Framework 勉強会 in 関西)
「 About Jobs 」(やきに駆動 秋の Java 祭典スペシャル in 大阪~こりん星)
「 MyBatis で流れるようなメソッドチェーン」(やきに駆動 秋の Java 祭典スペシャル in 大阪~こりん星)
「システムアーキテクトになる前に覚えておきたい技術とか色々」(鹿駆動勉強会)
「たのしい関数型」(第 1 回 関数型言語勉強会 大阪)
「 Xtend30 分クッキング」(関 Java '12 8 月度)

著ブログ (http://ameblo.jp/kozake)

「はじめての変態」(変態アドベントカレンダー 2011 )
「変態アドベントカレンダー 2011 の QR コード作りました」(変態アドベントカレンダー 2011 )
「 cron4j のご紹介」( Java Advent Calendar 2011 )
「 Play Excel !」( Play! framework Advent Calendar 2011 )
「おめでたい話と悩みごと」(変態アドベントカレンダー 2011 )
本日のレシピ『 Xtend 』
What's Xtend?

Java ランタイムに完全な互換性をもつ、
ラムダを備えた Java 互換言語

Xtext という DSL ライブラリおよびエディタ
生成のためのプラグインスイートをベース
Xtend のコンセプト

  Python や Ruby と同等の表現力
  互換性問題のない Java

  Java の構文とコンセプトをできるだけ再利用

 Java アプリケーションを読みやすく表現力高く
Xtend は Java のソースファイルを生成する
              Java バイトコード
              0:   aload_0
              1:   invokespecial
              4:   return
              0:   getstatic
              3:   ldc #3;
              5:   invokevirtual
              8:   return




              Java ソースコード                                        Java バイトコード
              import org.eclipse.xtext.xbase.lib.InputOutput;    0:   aload_0
                                                                 1:   invokespecial
              public class HelloWorld {                          4:   return
                public static void main(final String[] args) {   0:   getstatic
                  InputOutput.<String>println("Hello World");    3:   ldc #3;
                }                                                5:   invokevirtual
              }
                                                                 8:   return




要するに、 Java にとっての「 CoffeeScript 」
Xtend のコンパイル方法
・ Eclipse ビルダ経由
・ Maven プラグイン

コンパイラは Eclipse とは完全に独立
Xtend の機能
拡張メソッド
ローカル型推論
ステートメントレス(全てが式)
強力な Switch 式
ラムダ
演算子上書き
テンプレート式
プロパティ
Why Xtend?
IT'S JUST Java
   Java 技術者の習得コストが少ない
   =技術者確保が容易
   Java の既存資産が活用できる

   静的型付けであり、 Java と同等の性能
Why Xtend?
DSL
  拡張メソッド、演算子上書き、
  テンプレート式など、内部 DSL を作成する
  便利機能がそろっている
下ごしらえ( Installation )
Xtend
                     <1 人分 >
Eclipse Juno ---------------------------1 Download
Xtend-2.3.1 ----------------------------1 Download
Windows7 -----------------------------1 ライセンス
コーヒー ------------------------------5 ~ 10 本

嫁の理解 ------------------------------2 人日
やる気 --------------------------------- 少々
Help → Install New Software
下の URL を入力し、 Xtend-2.3.1 を選択。
http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/
Next
Check 「 I accept.. 」 → Finish
Download.... → restart
New → Java Project
Input Project name → Next
Add Library
Select 「 Xtend Library 」→ Next
Finish
試食( Demo )
Demo ソース「 Hello World 」
HelloWorld.xtend
package demo

class HelloWorld {
  def static void main(String... args) {
    println('Hello World!')
  }
}



                                  HelloWorld.java
                                  package demo;

                                  import org.eclipse.xtext.xbase.lib.InputOutput;

                                  @SuppressWarnings("all")
                                  public class HelloWorld {
                                    public static void main(final String... args) {
                                      InputOutput.<String>println("Hello World!");
                                    }
                                  }
Demo ソース「 FizzBuzz 」
FizzBuzz.xtend                                        FizzBuzz2.xtend
package demo                                          package demo

class FizzBuzz {                                      class FizzBuzz2 {

    def static void main(String... args) {                def static void main(String... args) {

    }
      new FizzBuzz().run
                                             More         }
                                                            new FizzBuzz2().run;

                                             Simple
    def void run() {                                      def void run() {
      var i = 1                                             (1..100).forEach [ println(it.fizzbuzz) ]
      while (i <= 100) {                                  }
        println(fizzbuzz(i))
        i = i + 1                                         def fizzbuzz(int i) {
      }                                                     switch i {
    }                                                         case (i % 15 == 0) : 'fizzbuzz'
                                                              case (i % 3 == 0) : 'fizz'
    def String fizzbuzz(int i) {                              case (i % 5 == 0) : 'buzz'
      if (i % 15 == 0) {                                      default : i.toString
        return 'fizzbuzz'                                   }
      } else if (i % 3 == 0) {                            }
        return 'fizz'                                 }
      } else if (i % 5 == 0) {
        return 'buzz'
      } else {
        return String::valueOf(i)
      }
    }
}
Demo テストソース「 FizzBuzz2Test 」
FizzBuzz2Test.xtend
package demo

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

import org.junit.Test

class FizzBuzz2Test {

    extension FizzBuzz2 test = new FizzBuzz2()

    @Test
    def testFizzBuzz() {

        assertThat   (1.fizzbuzz, is('1'))
        assertThat   (3.fizzbuzz, is('fizz'))
        assertThat   (5.fizzbuzz, is('buzz'))
        assertThat   (15.fizzbuzz, is('fizzbuzz'))
    }
}
調理(機能紹介)
Xtend の機能
拡張メソッド
ローカル型推論
ステートメントレス(全てが式)
強力な Switch 式
ラムダ
演算子上書き
テンプレート式
プロパティ
拡張メソッド
既存の型に変更なしに新しいメソッドを追加できます。

Xtend の名前はこの機能からきています。

機能自体は単純な仕組み
拡張メソッドの最初のパラメータを渡す代わりに
そのメンバの 1 つであるかのようにメソッドが呼ばれます。

 15.fizzbuzz // call fizzbuzz(15)
拡張メソッド(利点)
ネストされたメソッド呼び出し(コマンドクエリー IF )でなく
チェインされたメソッド呼び出し(流れるような IF )が可能
可読性が増します。
JsonUtil::writeJson(obj)
                でなく

obj.writeJson

特定のコンテキストやアプリケーション層に固有メソッド
を追加できます。
拡張メソッド(組み込みライブラリ)
デフォルトで既存クラスの拡張メソッドが用意されています。
・   ObjectExtensions
・   IterableExtensions
・   MapExtensions
・   ListExtensions
・   CollectionExtensions
・   BooleanExtensions
・   IntegerExtensions
・   FunctionExtensions


    val obj = newArrayList(1,2,3)
    println(obj.map[it * 2])     // [2, 4, 6]
    println(obj.getClass.getName)   // java.util.ArrayList
拡張メソッド(ローカル Extension インポート)
クラス内または親クラスの可視性のある非 static メソッドは
自動的に拡張メソッドとして使えます。

   def void run() {
     println(15.fizzbuzz)
   }

   def fizzbuzz(int i) {
     switch i {
       case (i % 15 == 0) : 'fizzbuzz'
       case (i % 3 == 0) : 'fizz'
       case (i % 5 == 0) : 'buzz'
       default : i.toString
     }
   }
拡張メソッド( Extension インポート)
ヘルパークラスなどが用意する static メソッドは、
import static の後ろに extension キーワードを配置
することで、全ての static メソッドを拡張メソッドとして
import できます。
                                                   package demo

                                                   import static org.junit.Assert.*;
                                       static      import static org.hamcrest.CoreMatchers.*;
package demo                           Import      import static extension demo.JsonUtil.*;
                                       extension
class JsonUtil {                                   import org.junit.Test
  def static writeJson(Object obj) {
    println(obj.toString)                          class TestJsonUtil {
  }
}                                                      @Test
                                                       def void testWriteJson() {

                                                           val obj = 'test'
                                                           obj.writeJson
                                                       }
                                                   }
拡張メソッド( Extension フィールド)
フィールド定義に extension キーワードを追加すると、
そのインスタンスのメソッドは拡張メソッドとなります。
class FizzBuzz2Test {

  extension FizzBuzz2 test = new FizzBuzz2()

  @Test
  def testFizzBuzz() {

    assertThat (1.fizzbuzz, is('1'))
       :
  }
}


static な extension import と比べて、フィールド定義による
extension の利点は、実装にバインドされないことです。
factory や依存性注入、 setter メソッドにより外部から
実装を簡単に交換できます。
Xtend の機能
拡張メソッド
ローカル型推論
ステートメントレス(全てが式)
強力な Switch 式
ラムダ
演算子上書き
テンプレート式
プロパティ
ローカル型推論
変数の型は右の式から推論されます。
また、メソッドの戻り値もメソッド本体から推測されます。
                          package demo;

                          import java.util.Date;
 package demo
                          @SuppressWarnings("all")
 import java.util.Date
                          public class DemoClass {
                            private final int a = 1;
 class DemoClass {
   val a = 1
                              private String b = "test";
   var b = 'test'
   public var c = 2
                              public int c = 2;
     def hoge() {
                              public String hoge() {
       val d = new Date
                                String _xblockexpression = null;
       'hoge'
                                {
     }
                                  Date _date = new Date();
 }
                                  final Date d = _date;
                                  _xblockexpression = ("hoge");
                                }
                                return _xblockexpression;
                              }
                          }
Xtend の機能
拡張メソッド
ローカル型推論
ステートメントレス(全てが式)
強力な Switch 式
ラムダ
演算子上書き
テンプレート式
プロパティ
ステートメントレス(全てが式)
Xtend はステートメントを持っていません。
全てが式で戻り値を持っています。
全ての式を紹介する時間がないので、いくつかの式を
紹介します。
ステートメントレス( if 式)
if (p) e1 else e2

if は p の結果により e1 か e2 を返す式です。

val a = if (true) 1 else 2
println(a) // 1


else をオプションで省略可能です。

val a = if   (false) 1
val b = if   (false) 'a'
println(a)   // 0
println(b)   // null
ステートメントレス( for 式)
for (T1 variable : arrayOrIterable) expression

for は void を返す式です。
variable の型は arrayOrIterable の型から型推論される
ので省略可能です。

val arr = newArrayList(1,2,3,4,5)
for (i : arr) {
  println(i)
}
ステートメントレス( try-catch 式)
 try-catch も式です。以下のようなコードを書くことで
 今まで必要だったローカル変数を省略できます。

 val s = 'a'
 val n = try {
   Integer::parseInt(s)
 } catch (NumberFormatException ex) {
   -1
 }
 println(n) // -1
ステートメントレス(その他)
ローカル変数 it を使用すると、 it に代入された
インスタンスのフィールドやメソッドがローカルのように
扱えます。

 package demo

 class Hoge {
   @Property
   String fuga
 }

 class DemoClass {

     def static void main(String... args) {
       val it = new Hoge
       fuga = 'test'
       println(fuga) // test
     }
 }
ステートメントレス(その他)
?. によるメソッド呼び出しで、 null 安全な呼び出し
が可能です。

 var hoge = new Hoge   Hoge _hoge = new Hoge();
 hoge?.hello           Hoge hoge = _hoge;
                       if (hoge!=null) hoge.hello();
 hoge = null           hoge = null;
 hoge?.hello           if (hoge!=null) hoge.hello();
ステートメントレス(その他)
Static アクセスは . でなく :: でアクセスします。

 val n = Integer::parseInt('1')
 println(n)
Xtend の機能
拡張メソッド
ローカル型推論
ステートメントレス(全てが式)
強力な Switch 式
ラムダ
演算子上書き
テンプレート式
プロパティ
強力な Switch 式
 Switch 式は Java の switch 文とはかなり異なっています。
  ・下への落下がない
  ・特定の値に限定されず、任意のオブジェクトが使用可能

 val s = 'ho'
 val ret = switch s + 'ge' {
   case s.length > 5 : 'so long'
   case 'hoge' : 'equal hoge'
   default : 'not'
 }
 println(ret) // equal hoge


 まず、 switch の式が評価されます。
 式の型が boolean 型なら、 true で case にマッチします。
 boolean 型以外なら、 Object.equals(Object) が比較に使用されます。
 case にマッチしたら、コロンの後の式が評価され、式全体の結果となります。
強力な Switch 式
 ケースガードに加え、型ガードもサポートしています。

 def length(Object x) {
   switch x {
     String case x.length > 0 : x.length // length is define String
     List<?> : x.size // size is define for List
     default : -1
   }
 }


 switch の値が型と一致しているのみ、ケースと比較します。
 型と一致しない場合、 case の式は評価されません。
 両方が一致した場合、コロンの後の式が評価されます。
 switch の値が変数の場合、自動的にその型にキャストされます。

 Java の instance of やキャストに比べて読みやすく型安全です。
Xtend の機能
拡張メソッド
ローカル型推論
ステートメントレス(全てが式)
強力な Switch 式
ラムダ
演算子上書き
テンプレート式
プロパティ
ラムダ
Xtend は SAM(Single Abstract Method) Type の
インタフェースをラムダ式として表せます。
 public interface Hello {    class DemoClass {
     void hello(String s);
 }                               def static void main(String... args) {
                                   helloWorld([String s | println(s)])
                                 }

                                 def static void helloWorld(Hello o) {
                                   o.hello('hello world!')
                                 }
                             }




上記のように角括弧で囲んだ部分がラムダ式です。
この構文は、 Smalltalk に影響を受けたらしいです。
| の区切りでパラメータ宣言と式が書かれています。
ラムダ


 public interface Hello {    class DemoClass {
     void hello(String s);
 }                               def static void main(String... args) {
                                   helloWorld([String s | println(s)])
                                 }

                                 def static void helloWorld(Hello o) {
                                   o.hello('hello world!')
                                 }
                             }




パラメータの型はインタフェースの型から推測できるので、省略可能です。
ラムダ


 public interface Hello {    class DemoClass {
     void hello(String s);
 }                               def static void main(String... args) {
                                   helloWorld([println(it)])
                                 }

                                 def static void helloWorld(Hello o) {
                                   o.hello('hello world!')
                                 }
                             }




パラメータが 1 つの場合、パラメータ宣言が省略可能です。
省略した場合、パラメータは it という名前の変数にバインドされます。
ラムダ


 public interface Hello {   class DemoClass {
     void hello();
 }                              def static void main(String... args) {
                                  helloWorld([| println('hello world!')])
                                }

                                def static void helloWorld(Hello o) {
                                  o.hello()
                                }
                            }




パラメータないメソッドは上記のように書けます。
| の記述がいることに注意してください。
ラムダ


 public interface Hello {    class DemoClass {
     void hello(String s);
 }                               def static void main(String... args) {
                                   helloWorld(3) [
                                     println(it)
                                   ]
                                 }

                                 def static void helloWorld(int n, Hello o) {
                                   (1..n).forEach [ o.hello('hello world!') ]
                                 }
                             }


メソッド一番右側のパラメータがラムダ式の場合、パラメータリストの後に
渡すことができます。
ラムダ


 public interface Hello {    class DemoClass {
     void hello(String s);
 }                               def static void main(String... args) {
                                   val name = 'duke'
                                   helloWorld [ println(it + ' ' + name) ]
                                 }

                                 def static void helloWorld(Hello o) {
                                   o.hello('hello world!')
                                 }
                             }




Java 同様、ラムダ式の外部の final 変数参照することが可能です。
ラムダ
SAM Type がなくても、下記のように書けます。

 val f = [int n | n**3 ]
 println(f.apply(2)) // 8.0




 final Function1<Integer,Double> _function = new Function1<Integer,Double>() {
   public Double apply(final Integer n) {
     double _power = Math.pow(n, 3);
     return _power;
   }
 };
 final Function1<Integer,Double> f = _function;
 Double _apply = f.apply(Integer.valueOf(2));
 InputOutput.<Double>println(_apply);



戻り値が void の場合、 Procedures 、それ以外は Functions となります。
ラムダ
Xtend は関数型の簡略構文もサポートしています。

 val (int) => double f = [int n | n**3 ]
 println(f.apply(2)) // 8.0




                                  =
 val Function1<Integer,Double> f = [int n | n**3 ]
 println(f.apply(2)) // 8.0
Xtend の機能
拡張メソッド
ローカル型推論
ステートメントレス(全てが式)
強力な Switch 式
ラムダ
演算子上書き
テンプレート式
プロパティ
中置演算子と演算子のオーバーロード
Java とは対照的に、演算子は特定の型の操作に
限定されません。
任意の型の演算子を再定義し、対応するメソッドシグネチャ
を実装することで、
演算子からメソッドへのマッピングが可能です。
例えば、ランタイムライブラリには、 BigDecimal の演算子
を定義するクラス BIgDecimalExtensions が含まれています。

val a = 1BD
val b = 2BD

println(a.getClass.getName) // java.math.BigDecimal
println(b.getClass.getName) // java.math.BigDecimal

println (a + b) // 3
中置演算子と演算子のオーバーロード
演算子のオーバーロードが可能です。
package demo

@Data
class DemoClass {

    String hoge

    def DemoClass operator_add(DemoClass obj) {
      new DemoClass(this.hoge + obj.hoge)
    }

    override toString() {
      hoge
    }

    def static void main(String... args) {
      val a = new DemoClass('hoge')
      val b = new DemoClass('fuga')

        println(a += b) // hogefuga
    }
}
中置演算子と演算子のオーバーロード
使用可能な演算子とそれに対応するメソッドシグネチャの
完全なリストです。
また、下の表は昇順で演算子の優先順位を定義しています。
e1 += e2 e1.operator_add(e2)
e1 || e2 e1.operator_or(e2)
e1 && e2 e1.operator_and(e2)
e1 == e2 e1.operator_equals(e2)               e1 <> e2 e1.operator_diamond(e2)
e1 != e2 e1.operator_notEquals(e2)            e1 ?: e2 e1.operator_elvis(e2)
e1 < e2 e1.operator_lessThan(e2)              e1 <=> e2 e1.operator_spaceship(e2)
e1 > e2 e1.operator_greaterThan(e2)           e1 + e2 e1.operator_plus(e2)
e1 <= e2 e1.operator_lessEqualsThan(e2)       e1 – e2 e1.operator_minus(e2)
e1 >= e2 e1.operator_greaterEqualsThan(e2)    e1 * e2 e1.operator_multiply(e2)
e1 -> e2 e1.operator_mappedTo(e2)             e1 / e2 e1.operator_divide(e2)
e1 .. e2 e1.operator_upTo(e2)                 e1 % e2 e1.operator_modulo(e2)
e1 => e2 e1.operator_doubleArrow(e2)          e1 ** e2 e1.operator_power(e2)
e1 << e2 e1.operator_doubleLessThan(e2)       ! e1 e1.operator_not()
e1 >> e2 e1.operator_doubleGreaterThan(e2)    - e1 e1.operator_minus()
e1 <<< e2 e1.operator_tripleLessThan(e2)
e1 >>> e2 e1.operator_tripleGreaterThan(e2)
Xtend の機能
拡張メソッド
ローカル型推論
ステートメントレス(全てが式)
強力な Switch 式
ラムダ
演算子上書き
テンプレート式
プロパティ
テンプレート式
テンプレート式は読みやすい文字連結を提供します。

・ 3 つのシングルクォートで囲まれています。
・複数行にまたがることができます。
・評価される式をネストできます。

 class TemplateSample {
      def static void main(String... args) {
           println(hello("world"))
      }

     def static hello(String s) '''
          hello «s»
     '''
 }
テンプレート式
いろんなところで使うことができます。
 import static extension demo.TemplateSample.*

 class TemplateSample {
      def static void main(String... args) {
           (1..100).forEach [ println(it.fizzbuzz) ]
      }

     def static fizzbuzz(int i) {
          switch i {
               case (i % 15 == 0) : '''fizzbuzz(«i»)'''
               case (i % 3 == 0) : '''fizz(«i»)'''
               case (i % 5 == 0) : '''buzz(«i»)'''
               default : '''«i»'''
          }
     }
 }
テンプレート式
テンプレート式で使用できる特別な IF 文があります。

 import static extension demo.TemplateSample.*

 class TemplateSample {
      def static void main(String... args) {
            (1..100).forEach [ println(it.fizzbuzz) ]
      }

      def static fizzbuzz(int i)'''
           «IF i % 15 == 0»fizzbuzz«ELSEIF i % 3 == 0»fizz«ELSEIF i % 5 == 0»buzz«ELSE»«i»«ENDIF»'''
 }
テンプレート式
FOR 文もありますよ。

 import static extension demo.TemplateSample.*

 class TemplateSample {
      def static void main(String... args) {
            println(100.fizzbuzz)
      }

      def static fizzbuzz(int n)'''
           «FOR i : (1..n)»
           «IF i % 15 == 0»fizzbuzz«ELSEIF i % 3 == 0»fizz«ELSEIF i % 5 == 0»buzz«ELSE»«i»«ENDIF»
           «ENDFOR»
      '''
 }
Xtend の機能
拡張メソッド
ローカル型推論
ステートメントレス(全てが式)
強力な Switch 式
ラムダ
演算子上書き
テンプレート式
プロパティ
プロパティ
フィールド変数を @Property アノーテーション定義することで
setter / getter を自動生成してくれます。
                    @SuppressWarnings("all")
                    public class DemoClass {
                      private String _hoge;
class DemoClass {
                        public String getHoge() {
    @Property             return this._hoge;
    String hoge         }
}
                        public void setHoge(final String hoge) {
                          this._hoge = hoge;
                        }
                    }


フィールドが指定されたコンテキストから
アクセスできない場合、 setter が使用されます。
これが @Property アノーテーションがローカルフィールドを
_myProperty にリネームする理由です。
プロパティ
また、クラス定義に @Data アノーテーション定義することで
値オブジェクトとしてクラスを定義できます。
                     import org.eclipse.xtend.lib.Data;
                     import org.eclipse.xtext.xbase.lib.util.ToStringHelper;

                     @Data
                     @SuppressWarnings("all")
                     public class DemoClass {
                       private final String _hoge;
 @Data
                         public String getHoge() {
 class DemoClass {         return this._hoge;
                         }
     String hoge         public DemoClass(final String hoge) {
 }                         super();
                           this._hoge = hoge;
                         }

                         @Override
                         public int hashCode() {
                             :
                         @Override
                         public boolean equals(final Object obj) {
                             :
                         @Override
                         public String toString() {
                             :
                     }
まとめ
Xtend Extends Java
モダンな言語機能を備えている。
  ・ラムダ
  ・型推論
  ・強力な Switch 式
  ・ etc..
既存機能を拡張できる

  ・拡張メソッド
IT'S JUST Java
既存のリソースを活用できる
 ・豊富な OSS
 ・ IDE サポート
 ・様々な経験知
 ・ etc..

なによりも・・・


     Java である
30 分 Xtend クッキング




     Thank you a lot

     愛     は       Hoge   駆動   にある。
                   やきに駆動の提供でお送りしました。

Mais conteúdo relacionado

Mais procurados

Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016Yoshio Terada
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッドKohsuke Yuasa
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512Takefumi MIYOSHI
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術Kohsuke Yuasa
 
Java puzzlers 2013 at JavaFesta Japan
Java puzzlers 2013 at JavaFesta JapanJava puzzlers 2013 at JavaFesta Japan
Java puzzlers 2013 at JavaFesta JapanYoshio Terada
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11nekko1119
 
今日からはじめるGPars
今日からはじめるGPars今日からはじめるGPars
今日からはじめるGParsfumokmm
 
G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)Nobuhiro Sue
 
UnityでC#を勉強しはじめた私の主張
UnityでC#を勉強しはじめた私の主張UnityでC#を勉強しはじめた私の主張
UnityでC#を勉強しはじめた私の主張Ryota Murohoshi
 
xUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency InjectionxUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency InjectionTakuto Wada
 
Erlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみたErlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみたYoichi Toyota
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java心 谷本
 
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansaiジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansaiTomohiro Kumagai
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半Tetsuya Morimoto
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」Mr. Vengineer
 

Mais procurados (20)

講座Java入門
講座Java入門講座Java入門
講座Java入門
 
Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
 
Boost Fusion Library
Boost Fusion LibraryBoost Fusion Library
Boost Fusion Library
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
 
Java puzzlers 2013 at JavaFesta Japan
Java puzzlers 2013 at JavaFesta JapanJava puzzlers 2013 at JavaFesta Japan
Java puzzlers 2013 at JavaFesta Japan
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
 
今日からはじめるGPars
今日からはじめるGPars今日からはじめるGPars
今日からはじめるGPars
 
G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)G*workshop sendai 20100424(v2)
G*workshop sendai 20100424(v2)
 
UnityでC#を勉強しはじめた私の主張
UnityでC#を勉強しはじめた私の主張UnityでC#を勉強しはじめた私の主張
UnityでC#を勉強しはじめた私の主張
 
xUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency InjectionxUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency Injection
 
Erlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみたErlangのマルチプロセスを触ってみた
Erlangのマルチプロセスを触ってみた
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java
 
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansaiジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansai
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
 

Semelhante a Xtend30分クッキング やきに駆動

Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うTatsumi Naganuma
 
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackGroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackTakahiro Yoshimura
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」yoshiaki iwanaga
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswiftSwift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswiftTomohiro Kumagai
 
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFメディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFAtsushi Tadokoro
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPAkira Takahashi
 
JavaのGenericsとは?
JavaのGenericsとは?JavaのGenericsとは?
JavaのGenericsとは?Kenji Nakamura
 
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーNode.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーmganeko
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~Fujio Kojima
 
Away3D 4.1 パーティクル入門
Away3D 4.1 パーティクル入門Away3D 4.1 パーティクル入門
Away3D 4.1 パーティクル入門Yasunobu Ikeda
 
Java x Groovy: improve your java development life
Java x Groovy: improve your java development lifeJava x Groovy: improve your java development life
Java x Groovy: improve your java development lifeUehara Junji
 

Semelhante a Xtend30分クッキング やきに駆動 (20)

Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
 
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackGroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hack
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
 
FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswiftSwift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFメディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
 
Junit4
Junit4Junit4
Junit4
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
 
JavaのGenericsとは?
JavaのGenericsとは?JavaのGenericsとは?
JavaのGenericsとは?
 
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーNode.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
Testman
TestmanTestman
Testman
 
大人のお型付け
大人のお型付け大人のお型付け
大人のお型付け
 
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
 
Away3D 4.1 パーティクル入門
Away3D 4.1 パーティクル入門Away3D 4.1 パーティクル入門
Away3D 4.1 パーティクル入門
 
Java x Groovy: improve your java development life
Java x Groovy: improve your java development lifeJava x Groovy: improve your java development life
Java x Groovy: improve your java development life
 
About Jobs
About JobsAbout Jobs
About Jobs
 

Mais de Shinichi Kozake

SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介Shinichi Kozake
 
あなたとAndroid!?今すぐダウンロード
あなたとAndroid!?今すぐダウンロードあなたとAndroid!?今すぐダウンロード
あなたとAndroid!?今すぐダウンロードShinichi Kozake
 
Kotlinで関数拡張しちゃうぞ![修正版]
Kotlinで関数拡張しちゃうぞ![修正版]Kotlinで関数拡張しちゃうぞ![修正版]
Kotlinで関数拡張しちゃうぞ![修正版]Shinichi Kozake
 
とある現場のシステムアーキテクチャ
とある現場のシステムアーキテクチャとある現場のシステムアーキテクチャ
とある現場のシステムアーキテクチャShinichi Kozake
 
関ジャバの間においでよ!
関ジャバの間においでよ!関ジャバの間においでよ!
関ジャバの間においでよ!Shinichi Kozake
 
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情についてあなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情についてShinichi Kozake
 
Web API Design for JAX-RS
Web API Design for JAX-RSWeb API Design for JAX-RS
Web API Design for JAX-RSShinichi Kozake
 
ゆるふわアーキを支える技術
ゆるふわアーキを支える技術ゆるふわアーキを支える技術
ゆるふわアーキを支える技術Shinichi Kozake
 
Nullなのはいけないと思います!
Nullなのはいけないと思います!Nullなのはいけないと思います!
Nullなのはいけないと思います!Shinichi Kozake
 
生きろ!チーム開発! 300人月の仲間はみな死んだ
生きろ!チーム開発! 300人月の仲間はみな死んだ生きろ!チーム開発! 300人月の仲間はみな死んだ
生きろ!チーム開発! 300人月の仲間はみな死んだShinichi Kozake
 
システムアーキテクト~My batis編~
システムアーキテクト~My batis編~システムアーキテクト~My batis編~
システムアーキテクト~My batis編~Shinichi Kozake
 
Play!30分クッキング
Play!30分クッキングPlay!30分クッキング
Play!30分クッキングShinichi Kozake
 
システムアーキテクト
システムアーキテクトシステムアーキテクト
システムアーキテクトShinichi Kozake
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数Shinichi Kozake
 
MyBatisで流れるようなメソッドチェーン
MyBatisで流れるようなメソッドチェーンMyBatisで流れるようなメソッドチェーン
MyBatisで流れるようなメソッドチェーンShinichi Kozake
 
play framework 勉強会 in 関西
play framework 勉強会 in 関西play framework 勉強会 in 関西
play framework 勉強会 in 関西Shinichi Kozake
 

Mais de Shinichi Kozake (17)

SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介
 
あなたとAndroid!?今すぐダウンロード
あなたとAndroid!?今すぐダウンロードあなたとAndroid!?今すぐダウンロード
あなたとAndroid!?今すぐダウンロード
 
Kotlinで関数拡張しちゃうぞ![修正版]
Kotlinで関数拡張しちゃうぞ![修正版]Kotlinで関数拡張しちゃうぞ![修正版]
Kotlinで関数拡張しちゃうぞ![修正版]
 
とある現場のシステムアーキテクチャ
とある現場のシステムアーキテクチャとある現場のシステムアーキテクチャ
とある現場のシステムアーキテクチャ
 
関ジャバの間においでよ!
関ジャバの間においでよ!関ジャバの間においでよ!
関ジャバの間においでよ!
 
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情についてあなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
 
Web API Design for JAX-RS
Web API Design for JAX-RSWeb API Design for JAX-RS
Web API Design for JAX-RS
 
ゆるふわアーキを支える技術
ゆるふわアーキを支える技術ゆるふわアーキを支える技術
ゆるふわアーキを支える技術
 
Nullなのはいけないと思います!
Nullなのはいけないと思います!Nullなのはいけないと思います!
Nullなのはいけないと思います!
 
生きろ!チーム開発! 300人月の仲間はみな死んだ
生きろ!チーム開発! 300人月の仲間はみな死んだ生きろ!チーム開発! 300人月の仲間はみな死んだ
生きろ!チーム開発! 300人月の仲間はみな死んだ
 
システムアーキテクト~My batis編~
システムアーキテクト~My batis編~システムアーキテクト~My batis編~
システムアーキテクト~My batis編~
 
Play!30分クッキング
Play!30分クッキングPlay!30分クッキング
Play!30分クッキング
 
システムアーキテクト
システムアーキテクトシステムアーキテクト
システムアーキテクト
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数
 
鹿駆動
鹿駆動鹿駆動
鹿駆動
 
MyBatisで流れるようなメソッドチェーン
MyBatisで流れるようなメソッドチェーンMyBatisで流れるようなメソッドチェーン
MyBatisで流れるようなメソッドチェーン
 
play framework 勉強会 in 関西
play framework 勉強会 in 関西play framework 勉強会 in 関西
play framework 勉強会 in 関西
 

Último

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Último (9)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

Xtend30分クッキング やきに駆動