Shingo Omura

Software Developer, Techincal Writer / Translator.

San Mateo, California, US
Japanese, English



Being involved in emergent software technology research especially in distributed/concurrent systems. Previous work has involved architecture design or development for large enterprise softwares by object-oriented design/programming, aspect-oriented programming, software patterns and enterprise integration patterns. In private software engineer life, being involved in enjoying technical knowlege acquision and contribution in Open Source Software community, especially in functional programming, actor-oriented programming and reactive programming in Scala(Akka) and Go. My rigid foundation of programming comes from my study experience in Theoretical Computer Sience, especially in Graph Theory and Distributed Algorithm (Self Stabilization).

Work Experience

  • Researcher/Architect, OGIS International, Inc. 2012-05-28 - Present

    cutting-edge emergent software technology research

    • Emergent virtualization technology research project. (Docker)
    • Cluster scheduler research project. (Mesos, Yarn, Omega)
    • In-memory computing technology research project. (Spark)
    • Fault-tolerant service oriented architecture research project. (Netflix OSSs)
    • Web API related technology research project. (RAML, Swagger)
  • Software Architect, OGIS-RI, Co., Ltd. 2007-04-01 - Present

    Software Architect, Object Oriented Modeling Consultant

    • Developing lightweight workflow engine for some Japanese Mega Bank.
    • Architecting/Developing large enterprise core applications with Spring Framework.
    • Building web service integration infrastructure with Mule ESB.
    • Developed Amazon S3 transport for Mule ESB.
    • UML modeling consulting for production planning system in manufacturing system for next-generation semiconductor.
  • Technical Writer/Translator, Self-employed 2007-04-01 - Present

    Give an overview of your responsibilities at the company

    • Programming Scala, O'Reilly Japan, 2011. (co-translation)
    • ThoughtWorks Anthology: Essays on Software Technology and Innovation, O'Reilly Japan, 2008. (co-translation)


  • Programming Languages
    Java Scala Ruby
  • Practical Software Design
    Object Oriented Design/Programming Aspect Oriented Programming Software Design Pattern Enterprise Integration Pattern Domain Driven Design
  • Frameworks/Tools (Java)
    Spring, JPA/Hibernate J2EE, JAX-*(RS, WS, ..) JUnit, some Mocking tools(EasyMock, jMockit) Guice ant, maven
  • Frameworks/Tools (Scala)
    Scalaz Akka ScalaCheck SBT


  • Information Engineering, Completed Ph.D. program without a Ph.D. degree,  Nagoya Institute of Technology 2004-04-01 - 2010-03-31

  • Information Engineering, Master of Engineering,  Nagoya Institute of Technology 2002-04-01 - 2004-03-31

  • Computer Science and Electrical Engineering, Bachelor of Engineering,  Nagoya Institute of Technology 1998-04-01 - 2002-03-31


  • Best Speaker Award of Developers Summit 2009,  Shoeisha 2009-02-13

    awarded to my talk "Encouragement for Object Calisthenics"(as a co-speaker).

Volunteer Work

  • OSS Software Developer 2012-05-28 -

    • Apache Mesos: Chef Cookboos for Mesos, Vagrant tool for spinning up mesos cluster
    • Marathon: Event Subscription API.
    • RxJava: Monad related integrations with Scalaz.
  • Translator 2008-04-01 -

    • Typeclassopedia (http://typeclassopedia.bitbucket.org/), 2012
    • The Core Protocol V3, 2008


  • Neighborhood Broadcasting in undirected de Bruijn and Kautz Networks,  Institute of Electronics, Information and Communication Engineers 2005-01-01

    This paper considers a neighborhood broadcasting protocol in undirected de Bruijn and Kautz networks. The neighborhood broadcasting problem(NBP) is the problem of disseminating a message from an originator vertex to only its neighbors. Our protocol works under the single-port and half-duplex model and solves NBP in 5log_2(n+1) + O(1) time units on the undirected de Bruijn graph UB(n,d) with n^d vertices and the undirected Kautz graph UK(n,d) with n^d + n^(d-1) vertices, where 2n is the maximum degree of these graphs. This completion time is asymptotically optimal in this model.

  • An Optimal Certificate Dispersal Algorithm for Mobile Ad Hoc Networks,  Institute of Electronics, Information and Communication Engineers 2005-05-01

    In this paper, we focus on the problem that in an ad hoc network, how to send a message securely between two users using the certificate dispersal system. In this system, special data called certificate is issued between two users and these issued certificates are stored among the network. Our final purpose on this certificate dispersal problem is to construct certificate graphs with lower dispersability cost which indicates the average number of certificates stored in each node in an ad hoc network. As our first step, when a certificate graph is given, we construct two efficient certificate dispersal algorithms for strongly connected graphs and directed graphs in this paper. We can show that for a strongly connected graph G=(V, E) and a directed graph H=(V′, E′), new upper bounds on dispersability cost on the average number of certificates stored in one node are O(D_G+|E|/|V|) and O(p_G^d_<max>+|E′|/|V′|) respectively, where D_G is the diameter of G, d_<max> is the maximum diameter of strongly connected components of H and p_G is the number of strongly connected components of H. Furthermore, we give some new lower bounds for the problem and we also show that our algorithms are optimal for several graph classes.

  • An Approximation Algorithm for Minimum Certificate Dispersal Problems,  Institute of Electronics, Information and Communication Engineers 2006-02-01

    We consider a network, where a special data called certificate is issued between two users, and all certificates issued by the users in the network can be represented by a directed graph. For any two users u and v, when u needs to send a message to v securely, v's public-key is needed. The user u can obtain v's public-key using the certificates stored in u and v. We need to disperse the certificates to the users such that when a user wants to send a message to the other user securely, there are enough certificates in them to get the reliable public-key. In this paper, when a certificate graph and a set of communication requests are given, we consider the problem to disperse the certificates among the nodes in the network, such that the communication requests are satisfied and the total number of certificates stored in the nodes is minimized. We formulate this problem as MINIMUM CERTIFICATE DISPERSAL (MCD for short). We show that MCD is NP-Complete, even if its input graph is restricted to a strongly connected graph. We also present a polynomial-time 2-approximation algorithm MinPivot for strongly connected graphs, when the communication requests satisfy some restrictions. We introduce some graph classes for which MinPivot can compute optimal dispersals, such as trees, rings, and some Cartesian products of graphs.

  • A Self-stabilizing Protocol for k-hop Clustering with Solid-discs on Sensor Networks(Technical Report),  Institute of Electronics, Information and Communication Engineers 2006-11-27

    In this paper, we study a clustering that partitions a multi hop wireless sensor network into non-overlapping and approximately equal-sized clusters, called a k-hop cluster with [k/2]-hop solid-disc (Definition is described in Section 2.2). This clustering makes it possible to provide efficient communication control, and construction of robust and reliable sensor networks. When a cluster is viewed as a virtual sensor, the [k/2]-hop solid-disc requirement guarantees robustness and reliability of the virtual sensor. This property also realizes for cluster-head to aggregate sensor data from all directions and collect geometrically meaningful data. We propose a memory-effcient self-stabilizing protocol for the fc-hop clustering with [k/2]-hop solid-disc property. Self-stabilizing systems can automatically recover from arbitrary transient failures in finite time. Compared with former literature [5], [19] which solved the same problem, our protocol achieves the clustering by using a smaller amount of information which is maintained in each local sensor. Our protocol works under no assumptions about special ability of nodes such as getting coordination of sensors and measuring distances between neighboring sensors. Note that the same algorithm with the paper was reported independently in [12].


  • Highly Concurrent Systems

    Actor Programming Distributed Algorithms Self stabilization algorithms
  • Abstract Math and its applications

    Category Theory (Co)Monadic programmig in functional programming languages Coherent Specification Design using lightweight formal methods and model verifications.