Evolution of genetic codes is studied as change in the choice of enzymes that are used to synthesize amino acids from the genetic information of nucleic acids. We propose the following theory: the differentiation of physiological states of a cell allows for a choice of enzymes, and this choice is later fixed genetically through evolution. To demonstrate this theory, a dynamical systems model consisting of the concentrations of metabolites, enzymes, amino acyl tRNA synthetase, and tRNA–amino acid complexes in a cell is introduced and studied numerically. It is shown that the biochemical states of cells are differentiated by cell-cell interactions, and each differentiated type starts to use a different synthetase. Through the mutation of genes, this difference in the genetic code is amplified and stabilized. The relevance of this theory to the evolution of non-universal genetic code in mitochondria is suggested. The present theory is based on our recent theory of isologous symbiotic speciation, which is briefly reviewed. According to the theory, phenotypes of organisms are first differentiated into distinct types through the interaction and developmental dynamics, even though they have identical genotypes; later, with mutation in the genotype, the genotype also differentiates into discrete types, while maintaining the “symbiotic” relationship between the types. Relevance of the theory to natural as well as artificial evolution is discussed.